近年、Retrieval-Augmented Generation(RAG) は、LLM(大規模言語モデル)やテキスト生成 AI の拡張機能として広く活用されています。RAG は、LLM 単体では保持できない知識を外部の検索システムと組み合わせて提供する仕組み であり、より正確で情報量の多い応答を可能にします。
RAG システムの全体構成は、その名称の由来となっている 「検索(Retrieval)」と「生成(Generation)」の 2 つのモジュール から成り立ちます。しかし、RAG の性能を向上させることは簡単ではなく、検索の精度や情報の活用度、生成の忠実性など、多くの要素が絡み合います。そのため、システムの改善には 明確なベンチマークや評価指標の設定が不可欠 です。
ここでは、Amazon の 「RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation」 を参考にしながら、RAG の性能を向上させるためのベンチマークについて考察してみたいと思います。
RAGCHECKER: RAG システムの評価フレームワーク
Amazonの論文RAGCheckerを見てみたいと思います。
Retrieval-Augmented Generation(RAG)システムは、大規模言語モデル(LLM)に外部の知識を取り入れ、より正確な応答を生成する技術です。しかし、RAG の性能を適切に評価するのは簡単ではありません。検索(Retrieval)と生成(Generation)の両モジュールが関係しているため、どの部分に問題があるのかを特定するのが難しいからです。
RAGCHECKER は、RAG システムの検索と生成を詳細に評価するためのフレームワークです。応答全体ではなく、クレーム(主張)ごとに評価する「クレームレベルの含意チェック」を採用しており、より細かい単位での分析が可能になります。具体的には、以下の 4 つの要素を処理します。
- ユーザーのクエリ
ユーザーが入力する質問やリクエスト - 検索されたコンテキスト
検索モジュールが取得した情報 - 生成された応答
検索結果をもとに LLM が作成した回答 - 正解となる回答
期待される正確な答え
このフレームワークでは、3 種類の評価指標を提供します。
- 全体評価指標
システム全体の性能を測定し、生成された応答の品質を評価します。 - 検索モジュールの診断指標
検索された情報の正確さやカバー率を測定し、適切な情報を取得できているかを確認します。 - 生成モジュールの診断指標
取得した情報をどのように活用しているか、誤った情報をどれくらい含んでいるかを評価します。
RAGCHECKER を使うことで、検索と生成のそれぞれに問題があるのかを明確にし、より適切な改善が可能になります。従来の評価手法では、BLEU や ROUGE などの指標が使われていましたが、RAGCHECKER はより細かい分析ができるため、検索や生成のどこを調整すればよいかが分かりやすくなります。RAG の性能を向上させるために、こうした詳細な評価フレームワークの活用が重要になってきています。
RAGCHECKER フレームワーク
RAG システムの定義
RAG システムは、検索(Retriever: R) と 生成(Generator: G) の 2 つのモジュールで構成されます。
クエリ ( q ) に対し、検索モジュールが関連情報を取得し、生成モジュールが応答を生成します。
[
m = RAG(q, D) = G(R(q, D, k), q)
]
設計原則
RAG の評価には 2 種類の利用者 を想定します。
- ユーザー: システム全体の性能を比較したい(F1 スコアなど)
- 開発者: エラーの原因を特定し改善したい(検索・生成の個別評価)
RAGCHECKER は、この 2 つの目的に対応する 細粒度の評価指標 を提供します。
RAGCHECKER の評価手法
- クレームレベル評価: 応答を 正しい主張(✔)、誤った主張(✖)、欠落した主張(⨉) に分解
- クレーム含意チェッカー: 各主張が参照テキストに含意されるかを判定
評価指標
- 全体評価(Overall Metrics): システム全体の品質を測る(F1 スコア)
- 検索評価(Retriever Metrics): 検索の正確性(クレームリコール、コンテキスト精度)
- 生成評価(Generator Metrics): 忠実性、ノイズ感受性、幻覚の発生率など
RAGCHECKER により、検索と生成の問題を詳細に分析し、RAG システムの最適化が可能になります。
RAGCHECKER の評価指標
全体評価指標(Overall Metrics)
RAG システムの応答品質を評価するため、適合率(Precision) と 再現率(Recall) を算出します。
- 適合率(Precision): モデルの応答内で、正解に含まれるクレームの割合
- 再現率(Recall): 正解の回答内で、モデルの応答にも含まれるクレームの割合
- F1 スコア: 適合率と再現率のバランスを取る指標で、システム全体の性能を示す
検索モジュールの評価指標(Retriever Metrics)
理想的な検索モジュールは、正解の回答に必要な情報を適切に取得する必要があります。検索の 完全性 と 精度 を測るため、以下の指標を用います。
- クレームリコール(Claim Recall): 正解の回答に含まれるクレームが、検索結果にどれだけ含まれているか
- コンテキスト精度(Context Precision): 検索結果のうち、少なくとも 1 つの正解クレームを含む「関連チャンク」の割合
検索結果には正しい情報と誤情報が混在する可能性があるため、クレーム単位ではなく チャンク単位の精度 を測ることで、より実用的な評価ができます。
生成モジュールの評価指標(Generator Metrics)
生成モジュールは、検索結果を適切に活用し、正しい情報のみを含む応答を生成する必要があります。そのため、以下の 6 つの指標で評価します。
- 忠実性(Faithfulness): 生成された応答が、検索結果に基づいている割合
- ノイズ感受性(Noise Sensitivity): 関連情報に含まれる誤情報や、無関係な情報を取り込んでしまう割合
- 幻覚(Hallucination): 検索結果にない情報を生成してしまう割合
- 自己知識依存(Self-Knowledge Dependency): 検索結果を無視し、モデルが独自の知識で応答している割合
- コンテキスト利用率(Context Utilization): 検索結果のうち、どれだけの情報を実際に応答に反映できているか
忠実性やコンテキスト利用率が高いほど、検索結果を正しく活用していることを示します。ただし、ノイズ感受性が高すぎると、誤情報を取り込んでしまうリスクがあるため、バランスの取れた評価が重要です。
以下結果や考察に関しては面白い内容が含まれているので詳しく紹介したいと思います。
主な結果
-
検索モジュールの重要性
検索の質がシステム全体の性能を左右。E5-Mistral は BM25 よりも一貫して高性能を発揮し、生成モデルに関係なく効果的。 -
生成モデルのサイズと性能向上
Llama3-70B は Llama3-8B よりも コンテキスト活用・ノイズ耐性・幻覚抑制 の面で優れた結果を示した。 -
コンテキスト活用が鍵
F1 スコアと強い相関があり、検索の影響も小さいため、取得した情報を適切に活用する能力が重要。 -
情報量の多い検索結果は忠実性を向上し、幻覚を抑制
E5-Mistral はより正確な情報を取得できるため、生成モデルの忠実性向上と幻覚削減に寄与。 -
検索リコールとノイズ感受性のトレードオフ
検索リコールを上げると、生成モデルがノイズを拾いやすくなるため、取得情報の選別能力が課題。 -
関連ノイズの影響は大きく、非関連ノイズの影響は小さい
生成モデルは関連するチャンクを盲信しやすく、ノイズの識別が求められる。 -
オープンソースモデルのノイズ識別力の不足
GPT-4 は高いコンテキスト活用率と低いノイズ感受性を示したが、オープンソースモデルは検索精度が向上するとノイズを信頼しやすい傾向がある。
RAG の設定調整による改善
-
コンテキストを増やすと忠実性が向上
検索チャンクの数・サイズを増やすことで忠実性と F1 スコアが向上。ただし、ノイズ感受性も増加。 -
明確なプロンプトが生成挙動に影響
忠実性向上には効果的だが、コンテキスト活用率とノイズ感受性のバランスが必要。 -
チャンクのオーバーラップの影響は小さい
オーバーラップを増やしても、有用情報量には大きな変化なし。
RAG システムの改善策
-
検索モジュールの最適化が最も効果的
- 高性能な埋め込みモデルを活用し、精度と再現率を向上
- チャンクサイズと数の調整で F1 スコアを改善(ただしノイズ増加に注意)
-
生成モデルのチューニングはバランスを考慮
- コンテキスト活用・ノイズ感受性・忠実性のトレードオフを最適化
- プロンプト設計で、目的に応じた指標を優先することが重要。
この論文の評価方法は結構シンプルだけど、有用な情報も結構含まれているため、自分でRAGの評価システムを構築する際には結構役に立つことがわかりました。小学生並みの感想となりました。