はじめに
趣味でプログラミングを勉強しながらアプリ開発にも挑戦しているので、私が開発したアプリや今挑戦しようとしていることを文章で残していけたらと思いQiitaを登録しました。私の開発ログとして情報発信していきますので、少しでも皆様の役に立つ情報になれば嬉しいです。(プログラムスキルはまだまだ低いので、アプリ開発を通して勉強している状況です)
今回は、製造業の工場現場で生み出されるノウハウを蓄積するアプリを開発したので、紹介します。
今回のアプリを作成するきっかけ
私は製造業の生産技術者として長年仕事をしています。そこで、「製造業って全然DX化が進んでないじゃん」って毎回感じます。製造現場では、日々のトラブル対応などが保全記録として残されていきますが、その多くが活用されないまま埋もれてしまっています。また、何もログが残っていない場合もあります。
何かトラブルが発生すると、
「あの時、似たような問題があった気がするけど、どこに書いてあったかな……」
「この問題、あの人に聞かないと分からないな」
とかなり属人化してたり、情報の検索性が悪かったりと、製造業はデジタル化が全くされていないです。
誰が情報をもっているか探し回ったり、保存されている情報を探し回ったりと無駄な事に時間を費やしてしまっているのです。
現場のPDCAを高速で回すには「情報の検索性」を上げる必要があるなと思いました。
そこで、自然言語で保存したトラブル対応内容をAIを活用して自然言語で検索・再活用できるアプリをPythonで開発したのでご紹介します。まだ開発初期段階のため機能としては少ないですが、皆様の発想のヒントになれば幸いです。
構成と使用技術
構成は以下になります。
今回は、自然言語で登録した保全記録をSentenceTransformerのAIモデルを利用し、文章をベクトル化しました。
また、FAISSを利用し、類似文章のベクトル検索を行うことで、自然言語による保全記録検索を可能にしました。
機能 | 使用技術 | 用途 |
---|---|---|
ベクトル検索 | FAISS | 類似文章を検索 |
テキストベクトル化 | SentenceTransformer | 自然言語をベクトルに変換 |
GUI | PyQt6 | UI作成用 |
データベース | SQLite3 | ノウハウを保存 |
実現したいこと
- トラブル対応内容を自然言語で検索できる
- 過去の類似事例をベースに、問題の再発防止や処置方針のヒントを得られる
- オフラインで完結できるシンプルな仕組み
画面構成
1.検索画面
設備を選択し、「問題」を自然言語で入力することで、「問題」に類似した保全記録が表示されるようにしています。
2.保全記録追加画面
設備を選択し、「問題」「原因」「対策」「担当者」を入力できるようにしています。必要に応じて、ファイルも添付できます。
3.保全記録一覧表示画面
登録した保全記録を一覧で表示します。
4.設備マスタ管理画面
「設備」はドロップダウンリストで選べるようにしているため、選択できる設備名を登録する画面です。
工夫した点
ベクトル検索の工夫
自然言語でのデータベースからの検索性を向上させるために、「設備」「問題」の形式に明示的に分け、2段階でデータベース検索を行いました。
- ステップ1:「設備」でデータベースから検索
→設備名は登録しているリストから選ぶ形式にすることで、表記ゆれをなくした - ステップ2:設備名で絞ったデータから「問題」で類似項目を検索
AIモデルをconfig.jsonとして外出し
このアプリでは、類似検索にSentenceTransformerのAIモデルを利用しています。AIモデルを柔軟に切り替えられるようにconfig.jsonとして外部化し、プログラム側ではこれを読むようにしました。
{
"search_model": "multi-qa-mpnet-base-dot-v1",
"cluster_model": "all-mpnet-base-v2"
}
今後やりたいこと
- 問題内容のクラスタリングによりカテゴリごとでの問題解析を可能にする
- PowerBIなどBIツールなどの連携をしやすくする
- Web化によりどこからでもアクセス可能にする
最後に
最後まで読んで頂きありがとうございます。
今後も「こういうアプリあったらいいな」と思うものを開発しながら情報発信できたらと思います。
皆様の反応が、継続していこうというモチベーションに繋がりますので、コメントなどいただけたら嬉しいです。