AI・機械学習
上級

Agentic RAG自己修正(エージェンティックラグジコシュウセイ)

Agentic RAGにおいてエージェントが生成した回答の品質を自己評価し、不足・誤り・矛盾を検出して自律的に修正する機能。CRAG・Self-RAG等の手法が代表的。

0 回閲覧
0 いいね

Agentic RAG自己修正とは

Agentic RAGの自己修正(Self-Correction)は、エージェントが生成した中間結果や最終回答を自ら評価し、品質が基準に満たない場合に自律的に修正プロセスを起動する機能である。従来のRAGでは検索結果をそのまま信頼して回答を生成していたが、Agentic RAGでは「検索結果は本当に正確か」「回答に矛盾はないか」「情報は十分か」といった自己検証を組み込む。

自己修正の主要手法

Self-RAG(Self-Reflective RAG)

2023年にAkari Asaiらが提案した手法。LLMが特殊なリフレクショントークンを生成し、検索の必要性判断・検索結果の関連性評価・回答の裏付け検証を行う。

リフレクショントークン役割判定値
Retrieve検索が必要か判断yes / no / continue
ISREL検索結果がクエリに関連するかrelevant / irrelevant
ISSUP回答が検索結果に裏付けられるかfully supported / partially / no support
ISUSE回答がユーザーに有用か1-5のスケール

CRAG(Corrective RAG)

検索結果の品質を評価し、不十分な場合に修正アクションを実行する手法。

  • Correct: 検索結果が高品質 → そのまま使用
  • Incorrect: 検索結果が低品質 → Web検索にフォールバック
  • Ambiguous: 判断困難 → 両方の結果を統合

CRAGの特徴は、検索結果の品質に応じてアクションを切り替えるスイッチメカニズムにある。これにより、ベクトルDBの検索結果が不十分な場合でも、Web検索という代替手段で情報を補完できる。

Adaptive RAG

クエリの複雑度に応じて処理戦略を適応的に切り替える手法。単純なクエリには軽量な処理を、複雑なクエリには完全な自己修正ループを適用する。

自己修正ループの設計

自己修正プロセスは以下のループ構造で実装される。

検証ステップ

  1. 関連性チェック: 取得したドキュメントがクエリに関連するか評価
  2. 網羅性チェック: 回答に必要な情報がすべて揃っているか評価
  3. 矛盾チェック: 複数の情報源間で矛盾がないか検証
  4. 事実性チェック: 生成された主張が検索結果に裏付けられるか確認
  5. 完全性チェック: ユーザーの質問に完全に答えているか評価

修正アクション

検出された問題修正アクション
関連性不足クエリを再構成して再検索
情報不足追加の検索クエリを生成
矛盾検出矛盾する情報源の信頼性を比較検証
事実性不足主張を弱める or 追加の裏付けを検索
回答不完全未回答の部分に対する追加検索

停止条件

無限ループを防ぐために以下の停止条件を設定する。

  • 最大修正回数(通常3〜5回)に到達
  • すべての検証チェックがパス
  • 前回からの改善が閾値以下(収束判定)
  • 累積コストが上限に到達

品質スコアリングの実装

自己修正の判断にはスコアリング関数が必要である。以下の多次元スコアリングが一般的である。

関連性スコア(Relevance Score)

検索結果とクエリの意味的類似度。Cross-EncoderやLLM-as-Judgeで算出。

忠実性スコア(Faithfulness Score)

生成された回答が検索結果に基づいているかの度合い。NLIモデルやentailmentスコアで算出。

有用性スコア(Usefulness Score)

回答がユーザーの質問に対して実用的かの度合い。LLM-as-Judgeで1-5スケール評価。

総合スコアの算出

各次元のスコアを重み付け平均して総合品質スコアを算出する。閾値以下の場合に修正ループが起動する。

ガードレールとフェイルセーフ

ハルシネーション検出

生成された文中の固有名詞・数値・日付を抽出し、検索結果と照合する。不一致があれば「この情報は検証できませんでした」と明示する。

信頼度の明示

回答に対する確信度を3段階(高・中・低)で表示し、ユーザーが情報の信頼性を判断できるようにする。

フォールバック戦略

自己修正を繰り返しても品質基準に達しない場合のフォールバックを定義する。「この質問には確信を持って回答できません。以下は参考情報です」といった誠実な回答が推奨される。

よくある質問(FAQ)

Q1: Self-RAGとCRAGはどう使い分けますか?

A1: Self-RAGは検索の必要性判断から回答の品質評価まで一貫したリフレクション機能を提供するため、ファインチューニングが可能な環境に適しています。CRAGは検索結果の品質に応じた修正アクションに特化しており、既存のLLMをそのまま使える利点があります。実運用では両者の概念を組み合わせることが多いです。

Q2: 自己修正によるレイテンシ増加をどう抑えますか?

A2: 修正が必要なケースのみループを実行する「怠惰な修正(Lazy Correction)」パターンが有効です。初回の回答生成時に信頼度スコアを算出し、閾値以上であれば修正ループをスキップします。これにより70-80%のクエリでは追加レイテンシが発生しません。

Q3: 自己修正で逆に品質が下がることはありますか?

A3: はい、過修正(Over-correction)のリスクがあります。修正を重ねるうちに本来正しかった情報を上書きしてしまうケースです。対策として、修正前後のスコアを比較し、スコアが下がった場合は修正を棄却する「ロールバック機構」を実装することが推奨されます。