はじめに
こんにちは。アマゾン ウェブ サービス(AWS)関連の技術支援を担当している蒲です。
生成AIの発展に伴い、Retrieval-Augmented Generation (RAG) は企業独自のノウハウを活用したチャットボットやQ&Aシステムの構築に欠かせない技術となっています。しかし、手持ちのドキュメントを単純に投入するだけでは、ビジネスに活用できるレベルの回答精度を得ることは難しいのが現状です。
筆者は、自社サービスのヘルプデスク業務を効率化するためにRAGを活用した生成AIチャットボットをAWS上で開発し、RAGの回答精度向上に取り組んできました。
本記事では、筆者の経験に基づいた知見を交えながら、RAGの回答精度向上に関する効果的なアプローチと、精度向上しやすいシステムを作るための設計ポイントについて解説します。RAGを活用したシステムの構築と改善に取り組む開発者やPMの方々に向けて、具体的な指針を提供します。
紹介するシステムについて:
- 本ブログでは、AWSのサービスを例に具体的な実装方法を紹介しますが、ここで説明する考え方やアプローチは、他のクラウドプラットフォームを使用する場合でも応用可能な、RAGシステム全般に適用できる内容となっています。
RAGの基本概念と技術課題
RAGとは、LLMの回答能力を外部知識で強化する技術です。ユーザからの質問に対して、まず関連する情報を知識ベースから検索し、その情報をLLMに与えることで、より正確で文脈に沿った回答を生成します。これにより、通常のLLMでは答えられない企業内の社内規定や独自のノウハウに従った回答をさせることができます。
RAGの代表的な具体的なユースケースとしては、業務マニュアルや各種規定集を読み込ませたカスタマーサポート向けのQAチャットボットや最新の市場データや企業情報を考慮した金融アドバイスなど、ビジネス上非常に多岐に亘って活用が進んでいます。
RAGの回答精度向上における課題
しかし、単純にドキュメントをインデックス化してLLMに与えるだけでは、ビジネスに活用できるレベルの回答精度を得ることは難しいのが現状です。主な課題として以下が挙げられます:
-
- ドキュメントの多様性:企業内のドキュメントには、テキストだけでなく図表や表形式のデータなど、LLMが直接解釈しにくい情報が含まれることが多い
- 文脈の理解:単純な検索では、質問の意図や文脈を十分に捉えられないことがある
- 情報の統合:複数のソースから得た情報を適切に統合し、一貫性のある回答を生成することが難しい
これらの課題に対応するため、「Advanced RAG」と呼ばれる発展的な手法が登場しています。Advanced RAGの手法の例:
-
- 多段階のLLM処理:質問の分析、情報の検索、回答の生成など、複数のステップでLLMを活用
- ドキュメントの前処理:図や表をLLMが解釈しやすい形式のテキストを変換
- セマンティック検索:意味ベースの検索技術を活用し、より関連性の高い情報を抽出
「Advanced RAG」はRAGの回答精度を向上させる手法の総称であり、どんな場合でも使える万能なひとつの手法は存在しません。与えるドキュメントの特性やユースケースに応じた手法の選定が不可欠です。ただし、効果的なアプローチと実践的な方法論は確立されています。
以降のセクションでは、様々な状況に適用可能な具体的なアプローチと、AWSサービスを活用した対応方法を解説していきます。
RAGの回答精度向上のアプローチ
評価用のデータセットを作ることから始める(トップダウン型のアプローチ)
RAGシステムの開発において、初期段階から想定質問と模範回答を作成しておくことが重要です。どのような質問とその答えを想定するかがアプリケーションの方向性を決定します。何を重視するのかを明確化しておかないとアプリケーションの評価が定まらず、改善が行えないためです。
想定質問と模範回答のペア(評価用データセット)は、RAGの回答精度の定量的な評価基準になります。これにより開発の初期段階から一貫した評価が可能になり、最初に測定した回答精度のスコアをベースラインに置き、この値を向上させるように開発を進めていくと効率的です。
このアプローチはトップダウン型のアプローチと呼ばれ、これにはRAGの適用対象の現行業務に精通した社員(ドメインエキスパート)の知見が必要不可欠です。想定質問と模範回答は多ければ多いほど信頼性が向上します。筆者の経験では、30個以上の質問と回答のペアを用意すると、システムの評価に十分活用できる場合が多かったです。
良質な質問と模範回答を多数作成する作業は案外時間がかかることもあり、ドメインエキスパートをプロジェクトの早期から巻き込むことが非常に重要になります。
リリース後はエンドユーザからのフィードバックを収集する(ボトムアップ型のアプローチ)
初期のプロトタイプをリリースした後は、実際のユーザの声を収集することが重要です。これにより開発の想定だけでは気づかなかった課題や改善点を発見できます。また、チャットボットのユーザ会話履歴や利用ログからユーザの利用動向を把握し、実際のユーザの質問を使って想定回答と模範回答の評価用データセットをブラッシュアップしていきます。
ユーザからのフィードバックに基づいて機能改修を繰り返し、想定質問に対する回答精度を継続的に改善し続けることがビジネス活用できるレベルのRAGシステムを実現する上で肝になります。
このようにリリース後の改修フェーズでは、上記図1のようにトップダウン型のアプローチからボトムアップ型のアプローチに移行していくことが必要になります。
具体的な回答精度の測定方法とユーザフィードバックの収集方法
上記のアプローチを実現するための具体的な方法を記載します。
RAGの評価指標の選定と測定
RAGの精度評価では、最終的なAIの回答に対する品質の他に、検索の品質も含めて評価が必要になるのが特徴です。RAGの精度評価ツールとして、RAGAS*1などのOSSのフレームワークが有名です。想定質問と模範回答のデータセットをインプットとして、以下のような指標を組み合わせてRAGシステム全体の精度を評価します:
-
- 回答の正確性:模範回答との一致度
- 関連性:質問に対する回答の適切性
- 情報源の信頼性:参照されたドキュメントの妥当性
AWSにおいてRAGの回答精度を手軽に測定するには、Amazon SageMakerのノートブックインスタンスからJupyter Notebookを使う方法が便利です。
Notebookで回答生成を担うバックエンドに対して想定質問を送信することでRAGの回答を収集し、その回答と模範回答をNotebook上でRAGASを使って比較・スコアリングします。AWS上で複数のユーザでNotebookを共有できるため、SageMaker ノートブックインスタンスを使うことで、実行したいときにいつでも回答精度を測定できます。
このとき測定が終わったら、ノートブックインスタンスを停止することを忘れないようにしましょう。起動時間に対する従量課金のため、停止を忘れるとAWS利用料が増加します。
ユーザからフィードバックを収集する方法
エンドユーザからアプリケーションに対するフィードバックを効率的に収集する方法は以下のとおりです。
まずはユーザにとって手軽にフィードバックを送信できるようにするところから始めると良いでしょう。システムに対するアプローチだけではなく、実際に利用してくれたユーザに直接ヒアリングを実施する方法も有用です。
-
- 簡易評価機能:各回答に対して「Good」「Bad」などの評価ボタンをWEB画面に設置
- 詳細フィードバックフォーム:より具体的な改善点を収集するためのフォームを用意
実際の利用データからボトルネックを特定する方法
ユーザからの生の要望ではありませんが、ユーザとAIの実際の会話履歴データを分析することも回答精度悪化のボトルネックを特定する上で非常に有用です。
会話履歴管理用のデータベースを用意し、ユーザがAIに問い合わせた質問と最終的な回答、またRAGのドキュメント検索結果に関してもデータベースに保存しておきます。これらのデータから、ユーザの質問パターンやRAGの検索結果の精度を定性的に分析できます。この分析を通じて、RAGの全体的な処理の内、どのステップで精度が悪化しているのか把握することができます。
もし、ユーザの質問文が悪い場合、つまりドキュメントから情報を検索するための情報がユーザの質問文に足りてない場合には、ユーザに対してプロンプトテンプレート(質問文のサンプル集)を公開したり、利用ガイドラインを整備するなどの対策が有効です。
RAGの検索結果の精度が悪い場合、検索手法の見直し(ハイブリッド検索やリランクなど)が有効な対策になります。
また、検索結果の精度は良いが、最終的な回答が不適切な場合、検索結果をLLMが正しく解釈できないことやLLMに渡す固定文言(システムプロンプト)の質が悪い場合があるため、LLMのモデル変更やシステムプロンプトの変更などが対策になります。
重要なポイントは、初期段階から会話履歴管理用のデータベースを設計・構築し、アプリケーションに組み込むことです。誰がいつどんな質問をして、どんな検索結果と回答結果が得られたのかをデータベース上にすべて集約することで、それらのデータから精度悪化のボトルネックを特定できます。
AWS上でサーバレスアプリケーションを開発する場合、DynamoDBを使って会話履歴管理用のテーブルを作成することが一般的です。また、会話履歴を保持することで、過去の会話内容をLLMに渡すことができ、会話の文脈に沿った内容を回答させることができます。
まとめ
RAGの回答精度向上は、一朝一夕には達成できません。しかし、本記事で紹介したアプローチを着実に実践し、継続的な改善を行うことで、ビジネスに本格活用できるRAGシステムの構築が可能になります。
重要なポイントを改めて整理すると:
-
- 評価基準の確立:客観的な評価指標と評価用データセットの整備
- ユーザフィードバックの活用:ユーザの生の声と実際の利用状況に基づく改善
これらのアプローチを組み合わせ、インプットとするドキュメントやシステムの特性に合わせてチューニングすることで、効果的なRAGシステムの構築と改善が可能になります。
NRIは最先端のAI技術と豊富な業務知識を融合させ、お客様のニーズに最適化されたRAGソリューションを提供しています。本記事で紹介したアプローチを基に、お客様の業務効率化と価値創造を支援いたします。お困りのことなどありましたらお気軽にご相談ください。
お問い合わせ
atlax では、ソリューション・サービス全般に関するご相談やお問い合わせを承っております。
関連リンク・トピックス
・atlax / クラウドの取り組み / AWS(Amazon Web Services)
・2023/12/26 テクノロジーによるビジネス革新!ラスベガスで体験した AWS re:Invent 2023 のハイライトを解説
-
採用情報
NRIの IT基盤サービスでは、キャリア採用を実施しています。様々な職種で募集しておりますので、ご興味を持たれた方は キャリア採用ページも ぜひご覧ください。
※ 記載された会社名 および ロゴ、製品名などは、該当する各社の登録商標または商標です。
※ アマゾン ウェブ サービス、Amazon Web Services、AWS および ロゴは、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ Microsoft、Azure は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
※ Google Cloud、Looker、BigQuery および Chromebook は、Google LLC の商標です。
※ Oracle、Java、MySQL および NetSuite は、Oracle Corporation、その子会社および関連会社の米国およびその他の国における登録商標です。NetSuite は、クラウド・コンピューティングの新時代を切り開いたクラウド・カンパニーです。