失敗事例から学ぶ!生成AI 実践の成功への道筋──回答精度を90%向上したRAG構築のポイント

 企業での生成AIの実用化には、システム開発チームとユーザーチームの協働と継続的な改善が不可欠だ。マクニカの山本聡氏は講演で、同社の失敗事例を基に、RAG(Retrieval Augmented Generation)の理解とチーム連携の重要性を説いた。検索と生成を分けて精度を高め、AIモデルのフレームワークによるシステム構築と運用の可視化により回答精度は約90%まで向上。山本氏は、ユーザー協働と効果測定の継続が、生成AIシステム開発の勘所だと強調した。

株式会社マクニカ ネットワークス カンパニー データ&アプリケーション事業部 主席 山本聡氏

2002年に株式会社マクニカ入社。以来、サーバーソフトウェア、 仮想化含むネットワークセキュリティ、エンドポイントセキュリティ、テレコムセキュリティのエンジニアとして従事する。また、SOC チームの立ち上げにも従事し、その業務の中でAI を使ったデータ分析に出会い、データ &AIエンジニアとなる。現在は、Databricks Champion としてデータ基盤商材のDatabricks を担当しながら、生成 AI を使ったシステムの構築、改善方法を試行錯誤している。

生成AIシステム開発の失敗事例から見えてきた課題

一昨年のChatGPT登場を受け、マクニカ ネットワークス カンパニーのシステムチームも、生成AIを使ったチャットボットの開発に着手した。社内の製品情報やナレッジ、対応履歴を学習させ、製品仕様や独自のトラブルシューティング手法を活用できるボットの実現を目指したという。

しかし、いざユーザーに使ってもらうと、期待したような精度の高い回答は得られなかった。「例えば、日本語で質問しているのに英語で回答されるなどの問題が発生しました」と山本氏は振り返る。

この時点では、システムチームは精度改善の糸口もつかめずにいた。「どこに問題があるのかもわからない状態でした」と山本氏。そこでチャットボットの構成を分析したところ、いくつかの課題が浮かび上がった。

RAGの理解とチーム連携の重要性

精度向上への第一歩は、チャットボットの構成を理解することだった。同社のチャットボットは「RAG(Retrieval Augmented Generation)」による一般的な構成を採用していた。

資料提供:マクニカ [画像クリックで拡大]

RAGは大きく分けて3つの処理から成る。まず「Retrieval」では、ユーザーの入力に関連するデータを検索して取得する。次に「Augmented」で、プロンプトを基にユーザーの入力した文章と検索結果によりプロンプトを拡張。最後に「Generation」で、拡張されたプロンプトから文章を生成する。

山本氏が相談を受けたチャットボットは、RAG構成を実装するためにLlamaIndexというライブラリを使用していた。データベース部には、製品のマニュアルや仕様書などの英語PDFと自社の日本語データが格納されており、これらを検索対象としていた。

プロンプト部分は日本語で回答するように作成され、LLMにはAzure OpenAI ChatGPT3.5 Turboが使用されていた。山本氏はこれらのシステム状況を確認した上で、ヒアリングから見えてきた課題を整理した。

  1. 各コンポーネントの処理がどうなっているのか理解されておらず、各コンポーネントの精度や動作を確認する仕組みが無い
  2. チャットボットの対象となるユーザー業務の詳細が定義されていない
  3. システムチームはユーザー業務の詳細を理解していない

課題の1つ目は、ライブラリの中身を理解せずにそのまま検索から生成までを実装していたため、各処理の詳細が理解されていなかったことだ。山本氏は「ライブラリの各処理を理解した上で、必要な部分は分解し、処理ごとの精度や動作を確認する仕組みを作ることが重要」と指摘する。

課題の2つ目と3つ目については、「ユーザーチームとシステムのチーム分かれた状態で実施をしていたため、ユーザーチームの業務の調整が実施されなかったことと、それによりシステムチームがユーザーチームの詳細を理解できていなかったことが問題でした」と山本氏。

検索と生成を分けて考える

対策としてまず取り組んだのが、RAGの「検索(Retrieval)」と「生成(Augmented Generation)」を切り分けて捉え直すことだった。精度低下の主因は、検索部分で適切な結果が得られていないことにあると山本氏は指摘する。

「まずは検索精度の向上に注力し、それから文書生成の精度を高めるアプローチを取りました」。質問と回答の距離を計算し、一定以上離れた回答は採用しないようにするなどの工夫を施したという。

文書生成については、検索で得られた結果を基に期待する文書が生成できているかを確認。複数の情報ソースを活用することで、さらなる精度向上を目指した。

言語の壁を乗り越える

英語と日本語が混在することによる弊害も、看過できない問題だった。「言語ごとにデータベースを分けて構築し、それぞれの言語のデータを格納するようにしました」と山本氏。

加えて、日本語の質問を英語に、英語の質問を日本語に自動翻訳し、適切なデータベースに問い合わせる仕組みも用意した。さらに、生成された回答を質問と同じ言語に翻訳して出力する機能も実装。これにより、言語の壁を乗り越えることに成功したのである。

RAG構成の実行環境

改善を重ねた結果、RAG構成は次のようになった。まず、各言語ごとにデータベースとプロンプトを用意。そこから得られた情報を統合し、共通のLLMで回答を生成する。質問文の翻訳と回答の翻訳も、同じLLMを活用している。

資料提供:マクニカ [画像クリックで拡大]

回答精度の検証

RAG構成の実行環境としては「Databricks」を採用した。検索結果やログデータはDatabricks内のデータカタログに格納。さらに、AIモデル開発のフレームワーク MLflowを用いてモデルの精度検証や、回答品質の可視化も行えるようにした。

回答精度についてユーザーからフィードバックを得る仕組みをStreamlitで実装した。利用者からのフィードバックをシンプルな3段階で収集し、Databricksで一元管理する仕組みも整えた。

 資料提供:マクニカ [画像クリックで拡大]

こうした地道な改善の結果、回答精度は当初の約31%から約90%まで向上した。ただし山本氏は「データベースに回答が存在する質問のみを対象としているため、注意が必要です」と釘を刺す。

また精度の検証は、ユーザーチームに質問と模範解答を作成してもらい近い回答が得られるかどうかで判断した。「この模範回答とその回答を得るためのリソースがどこにあるのかを作成するのは大変で、ユーザーチームの協力がなくてはとてもできないことでした」と付け加える。

山本氏は見えてきた課題を対策を以下のように整理して示した。

 資料提供:マクニカ [画像クリックで拡大]

思考発話法」で適用業務の理解を深める

山本氏は、今回のプロジェクトでは生成AIに対する業務の定義ができていなかったと振り返る。生成AIといえども、対象となる業務の理解と定義が不可欠であることは、一般のシステム開発と同じだ。

そこでチームでは「思考発話法」を用いて、業務内容の理解を深めた。思考発話法とは、業務担当者に実際の作業状況や考えを話してもらいながら、業務の内容を理解していく手法だ。

ただし、思考発話法を実施する際には、いくつか注意点がある。まず、担当者にヒントを与えるなどして進め方を誘導しないこと。また、聞き手に対する忖度発言もありうるため、すべてを鵜呑みにせず、普通に確認することが大切だ。

思考発話法を通じて、若手とベテランの間で検索方法に違いがあることを発見した。若手は最初にWebサイトを検索する傾向があり、検索キーワードも絞り込めていなかった。また、検索結果の使い方も違っていた。若手は検証を減らすために、なるべく最適な回答を検索しようとしていたのだ。

さらに、チャットボットに期待されるアウトプットのイメージについても差があった。ベテランは参照ファイルや参照ページがわかれば十分だと考えていたが、若手はファイルにたどり着けないことが多く、ファイルへの直接リンクが必要だと感じていた。

 資料提供:マクニカ [画像クリックで拡大]

効果測定の結果と課題

思考発話法で得られた知見をもとに、効果測定を実施した。対象は業務経験の浅い若手技術者で、過去の問い合わせ内容の調査時間を測定した。その結果、チャットボットを使うことで検索による調査時間を50%削減できたという。

ただし、効果測定にはまだ課題が残っている。効果測定を実施したチームが通常のメンバーより優秀だった可能性があるほか、測定対象の問い合わせにも偏りがあった可能性がある。また、効果測定だからと言って、実施者が早くやろうとするバイアスも入りがちだ。

そのため、山本氏は運用の中で継続的に効果測定できる仕組みが必要だと考えている。効果測定は一時的なものではなく、継続的な取り組みとして位置づける必要があるのだ。

生成AIシステム開発の勘所

最後に山本氏は、生成AIシステム開発の勘所を次のようにまとめた。

  • システムチームとユーザーチームが一体となり、業務の詳細を定義すること
  • 検索(Retrieval)と生成(Augmented Generation)を分けて捉え、それぞれの精度を高めること
  • 処理結果を可視化し、状況に応じた対策を打つこと
  • 運用の中で効果測定を継続し、PDCAサイクルを回すこと

 「生成AIだからといって近道はありません。地道な業務分析と課題設定が何より大切です」。山本氏の言葉は、生成AIシステム開発の本質を突いていた。

急速に発展する生成AI技術。しかしその実用化には、地に足のついた地道な取り組みが欠かせない。失敗を恐れずにチャレンジを続ける山本氏とマクニカのチームの姿勢は、生成AIシステム開発に携わる人々に、示唆に富む指針を提示していた。

Original Post>

Leave a Reply