こんにちは、Oです。
最近、当社では生成AIが浸透し、特に開発者の間では当たり前の存在となってきました。今回は、そんなAIに関する取り組みの中でも、会社の質問チャンネルにAIが回答する仕組みを導入した際の成功例についてお話しします。
はじめに
ECサイト構築を手がける当社では、全社員が参加するTeamsに「質問チャンネル」を設け、業務に関する質問や情報共有を活発に行っています。
部門や担当業務が異なるメンバー同士でも、過去の類似事例を参考にしたり、知見を共有したりすることで、業務効率と品質の向上を目指しています。
しかし、長年の運用により蓄積された質問データは約6,000件に達し、過去の質問を検索して活用することが困難になっていました。
具体的には、新しく参画したメンバーにとっては、過去の情報へのアクセスが容易ではなく、過去の質問が忘れ去られることもありました。
また、表記ゆれがあると検索に引っかからないなど、必要な情報になかなか辿り着けないという課題もありました。
そこで、AIを活用し、過去の質問と回答を効率的に活用できる仕組み を構築することにしました。
AIによる質問応答システムの仕組み
データ準備
1. Teamsデータの取得と前処理
ここでは技術詳細は割愛します。
まず、Teamsの「質問チャンネル」から過去の投稿データをAPI経由で取得し、各質問に対する返信も含めて1セットのデータとして整備しました。このデータ取得・前処理は一度きりではなく、定期的に最新の投稿を取得し続ける仕組みを構築しました。
2. AIによる要約・ステータスの判断
ここが最大の工夫点です!
取得した質問と返信のセットに対して、AIを用いて要約・ステータスの判断を行いました。この際、不要な情報を排除し、質問の趣旨を明確に抽出することが非常に重要です。これにより、意味的に類似したデータを検索できるベクトル検索の精度を高めることができます。
従来の検索ではフレーズの完全一致・部分一致で検索をしていましたが、ベクトル検索では意味的に類似したデータを検索することができます。ここでは詳細な説明は割愛します。
質問の趣旨とは関係のない情報が含まれていると、ベクトル検索の精度が低下するため、質問の趣旨のみを抽出する処理が重要になります。
ちなみに、質問の趣旨と関係ない情報が含まれているとどうなるかですが…
ベクトル検索では、「意味合い」が近いことを判断します。しかし、意味が近いの判断基準は”質問の趣旨”に限りません。AIはそんなこと知りません。
例えば、冒頭の「お疲れ様です」「いつもお世話になっております」のような挨拶。似たような挨拶が入っている文章は”意味が似ている”と判断してしまうのです。たとえ中の質問が全然違っていたとしても。
3. ベクトル化とインデックス化
要約した質問データをAzure AI Searchの機能を用いてベクトル化し、インデックスを作成します。技術的な説明はここでは割愛しますが、要はAIが読める形にデータを変換します。
回答生成
1. ベクトル検索
事前に作成したインデックスに対して、ベクトル検索を実行します。
※要約を分かりやすくするために、あえて冗長な質問サンプルとしています。実際の社内の会話は、もっとちゃんとした文章です・・・。
2. AIによる回答生成
検索結果の上位数件を、AIが回答の参考にする情報(コンテキスト情報)として生成AIに与え、質問に対する回答を生成します。
ちなみに、ここでは生成AIサービスのAzure OpenAI Serviceを利用しています。過去に投稿したこちらの記事も参照ください。
blog.ecbeing.tech
3. 回答と参考情報の表示
生成された回答とともに、参考になる可能性のある過去の質問へのリンクを表示します。回答内のリンクは、参考情報のリンクとなっています。
AIがドンピシャで回答することもあれば、当然AIが回答できないときもあります。
※画像はイメージです。実データを載せると隠す部分が多すぎるので架空の質問と回答です・・・。
また最近では、「AIの回答にありました」「AIの回答にある通り◯◯ですが~」という人間の回答も増えてきました。我ながら嬉しいです。
↑これは実際にあったTeams上でのコメントです。こういうフィードバックがもらえると嬉しいですね。
工夫点
正直な回答
AIが質問内容を理解できない場合、無理に回答を生成するのではなく、「分かりません」と正直に言わせるようにしました(ここは、プロンプトの腕の見せどころ)。また、質問内容によっては、一般的な情報で回答するように設定しました。参考情報の充実
AIによる回答に加えて、参考になる可能性のある過去の質問へのリンク一覧を表示しました。たとえ回答が的外れでも、参考になるかもしれない情報の場所が出てくるだけでも助かりますよね。
これからの展望
半年ほど運用して、多くのフィードバックをいただきました。
- 「忘れていた過去事例が素早く出てきて助かる」
- 「人力で探す手間が省けている」
- 「回答だけじゃなくて、参考情報が意外と役に立っている」
- 「AIの回答が幅を取ってしまい、人間の回答が少し見づらくなる」
- 「AIの回答がつくので、人間の回答が減ってしまうかも?」
特に最後の「AIの回答がつくから、人間の回答が減ってしまうかも」は、確かに運用を始めてから人間の回答数は減りました。一方で、AIの回答で解決できているケースもあることから、決してネガティブなことではありませんでした。定量的に測れていないので、AIが実際にどれくらい問題を解決できているのかも数値化したいです。そのためには人間のフィードバックも必要なので、質問をした人がワンクリックで回答を評価できる仕組みも構想しています。
また、生成AIはあくまで「これまでの傾向とデータから回答している」に過ぎないため、人間のインプットが無くなると進化できません。そこで過去の質問チャンネルのデータはもちろん、その他の社内に散らばっているナレッジも集約し、進化し続ける仕組みにしたいなと考えています。
お知らせ
ecbeingでは最新の生成AIを使ってガンガン開発したいエンジニアを募集しております!
careers.ecbeing.tech