従来のRAGが直面する2大ボトルネック
従来のRAG(Retrieval-Augmented Generation)は、LLMの知識を補完する強力なアプローチとして広く普及しました。しかし、実務での適用が進むにつれて、以下の「2大制約」という深刻な課題が浮き彫りになっています。
- 「単一ソースに限定」:複数の異なる外部ソースを横断して情報を探索し、統合した回答を生成することが困難です。
- 「検証なしのワンショット検索」:1回の検索で取得したデータをもとに回答を生成するため、取得データが本当に質問に関連しているかどうかが評価・検証されません。
このような「1回検索して終わり」の固定的なパイプラインでは、複雑な業務シナリオに対応できません。
解決策としての「Agentic RAG」
これらの限界を克服するアプローチが「Agentic RAG」です。Agentic RAGは、AIが自律的に「意思決定・評価・計画・修正」を行います。具体的には、AIエージェントが「計画(Plan) ➔ 行動(Act) ➔ 評価(Evaluate) ➔ 修正(Refine)」というサイクル(ReAct)を自律的に繰り返すことで、納得のいく答えに達するまで自己修正しながら探索を続けます。
これにより、検索回数は「必要に応じて複数回」になり、ツール活用もベクトルデータベース検索だけでなく、Web検索や各種API、計算ツールなど多岐にわたる手段を動的に選択可能になります。
Agentic RAG導入のための5ステップ
Step 1: データの品質向上とメタデータ設計
Agentic RAGの自律性がどれほど優れていても、参照元データの品質が低ければ適切な回答は得られません。まずは情報の「チャンク化・エンベディング」だけでなく、以下の準備を行います。
- メタデータの付与:ドキュメントに作成日、カテゴリ、対象部署などのメタデータを付与し、エージェントがフィルタリングしやすくします。
- インデックス整備:目次構造を整理し、エージェントが情報の位置を特定しやすくします。
- 要約版の用意:長文ドキュメントにはあらかじめ要約版を用意しておくことで、エージェントが迅速に概要を把握できるようにします。
Step 2: 外部知識を「ツール」として実装する
エージェントに外部知識を取り込ませるために、各種データソースを「ツール」として定義します。ここでは、LlamaIndexやMCP(Model Context Protocol)を活用します。
1. LlamaIndexによる「Router Query Engine」の構築
LlamaIndexを活用し、ドキュメントから「要約用」と「通常検索用」の複数のクエリエンジン(ツール)を作成し、LLMに渡します。これらを自律的に使い分ける際、ツールの役割を定義する description(説明文) を詳細に記述することが、エージェントの判断精度を分ける極めて重要な要素となります。詳細な役割定義により、LLMはプロンプトの意図に応じて最適なツールを選択できるようになります。
2. MCP(Model Context Protocol)の活用
Anthropicが提唱する「MCP」を活用することで、Tavily(Web検索)やNotionなどの外部ツールを簡単に統合できます。従来「AIクライアント数×連携ツール数(N×M)」必要だった実装を「N+M」に削減でき、外部知識の取り込みが大幅に効率化されます。
Step 3: グラフ構造フロー(LangGraph)の定義
エージェントの処理は、LangGraphを用いた「グラフ構造アプローチ」で設計します。処理を「ノード」、関係を「エッジ(条件付き分岐)」として接続します。
以下のようなフローを構築します。
- 検索ノード:PineconeなどのベクトルDBを検索する。
- 評価ノード(エッジ):文書の関連性を評価する。関連度が低ければ「クエリ最適化リライト」ノードへ遷移する。
- リライトノード:クエリを再構成し、Tavily API等を用いたWeb検索(外部知識)を実行する。
- 生成ノード:取得した情報を統合し、不適切なドキュメントを自動除外して回答を生成する。
Step 4: 自律的な意思決定を支える「AgentWorkerとAgentRunner」
LlamaIndexの「AgentWorker」と「AgentRunner」を活用し、実行フローを細分化します。
- AgentWorker:具体的なタスク(検索、評価など)を実行します。
- AgentRunner:全体の履歴を管理し、タスクを1ステップずつ動かします。
これにより、処理が途中で失敗した場合のデバッグや、ユーザーからの「これも追加で教えて」といった動的な追加質問への対応が可能になります。
Step 5: コスト・レイテンシーの最適化とテスト自動化
実運用における最大のボトルネックは「レイテンシーの増加」と「コストの増加」です。これを抑えるための最適化を行います。
- ObjectIndexの導入:ツール(ドキュメント)の数が膨大になった場合、ツール自体をインデックス化し、リトリーバー経由で「最も関連性の高い上位数件のツール」だけを動的に呼び出します。これによりLLMのトークン(コスト)を削減し、判断ミスを防ぎます。
- AIエージェントによるテスト生成:VS Code上で動く「Cline」などのAIエージェントを活用することで、仕様書を渡すだけで「pytest」による単体テスト(正常系、異常系、境界値など)を自律生成・テスト実行させることが可能です。これにより、開発者はほとんどコードを書かずに、動作するAgentic RAGシステムを構築・修正できます。
導入時の注意点
Agentic RAGを導入する際は、以下の点に留意する必要があります。
- レイテンシー対策:複数回の推論と検索を繰り返すため、応答が遅くなります。タイムアウト設定や、段階的な応答表示などのUX上の工夫が必要です。
- コスト設計:APIコール数が跳ね上がるため、高性能モデルを多用する場合は事前のシミュレーションが不可欠です。
- セキュリティとアクセス制御:多様な社内データやMCP経由のツールにアクセスするため、厳格な権限管理(アクセス制御)を設定してください。