「3 ヶ月前の議事録と直近の決算資料を比較して、どう変わったか教えて」のような複雑な質問は、1 回の検索では答えが出ません。 が自分で検索を繰り返す Agentic が必要です。本記事では、ふくふくが受託案件で実装してきた Agentic RAG の構成パターンを共有します。
Agentic RAG が必要なケース
- 比較質問:「A と B の違い」「3 ヶ月前と現在の比較」── 2 つ以上の検索が必要
- 多段階質問:「○○ を作った人が他に何を作ったか」── 答えが次の検索のキーになる
- 集計質問:「過去 1 年の売上推移」── 複数文書から数値を抽出して集計
- 条件付き質問:「もし A なら B、A でなければ C」── 動的な分岐が必要
通常 RAG は 質問 → 検索 → 回答 の単発フロー。Agentic RAG は 質問 → 計画 → 検索ループ → 統合 → 回答 の多段フロー。計画フェーズで「どう答えるか」を AI が考えるのが本質。
Agentic RAG の動作(5 ステップ)
- 11. 計画:質問を分解し、必要なサブクエリ(複数)を生成
- 22. 検索ループ:各サブクエリを順次 or 並列で検索、結果を中間メモに
- 33. 評価:取得した文書が質問に十分か 自身が判定。不足なら追加検索
- 44. 統合:複数の文書から論点を抽出、矛盾や追加情報を整理
- 55. 回答:統合結果を根拠付きで生成、引用元を明記
実装パターン:LangChain の + Tool
from langchain.agents import initialize_agent, Toolfrom langchain.tools.retriever import create_retriever_tool
# 検索ツールを Agent に渡すsearch_tool = create_retriever_tool( retriever=vectorstore.as_retriever(search_kwargs={"k": 5}), name="search_documents", description="社内文書を検索する。質問に必要な情報を取得するときに使う。")
# Agent 初期化(ReAct パターン)agent = initialize_agent( tools=[search_tool], llm=llm, agent="chat-zero-shot-react-description", verbose=True, max_iterations=5, # 検索ループの上限(暴走防止))
# 実行result = agent.invoke({"input": "3ヶ月前の議事録と直近の決算資料を比較して差分を出して"})print(result["output"])実用上の落とし穴
- ループ暴走:max_iterations を入れないと「検索 → 不足 → 再検索」が無限ループ。3〜5 回が上限の目安
- コスト爆発:1 質問で 5〜10 倍のトークンを消費する。通常 RAG より 3〜5 倍コスト
- 応答時間:検索ループ分の遅延、5〜30 秒は普通。ストリーミングで進捗を見せる UI 設計が要
- 選定ミス:Agent が間違った Tool を選ぶ → 関係ない文書を取得。Tool の description が肝
通常 RAG vs Agentic RAG の使い分け
| 観点 | 通常 RAG | Agentic RAG |
|---|---|---|
| 質問の複雑さ | 単純(1 トピック) | 複雑(比較・多段階) |
| 応答時間 | 1〜3 秒 | 5〜30 秒 |
| コスト/質問 | $0.01〜0.05 | $0.05〜0.30 |
| 精度 | 高(単純質問) | 高(複雑質問) |
| UI | シンプル | 進捗表示が必要 |
質問の複雑さで分岐:単純なら通常 RAG、複雑なら Agentic に切り替え。質問入力時に分類器で判定するか、ユーザーが手動で「深く調べる」モードを選ぶ。全質問を Agentic にすると 5 倍コストになるので注意。
ふくふくの進め方
「社内ナレッジ RAG が複雑な質問に答えられない」というご相談には、質問の分類設計 → 単純/複雑のルーティング → Agentic 部分の実装を 1〜2 ヶ月で。ループ上限・タイムアウト・進捗 UIまで含めた本番品質の Agentic RAG を構築します。
次回予告
EP.08 はコスト最適化。トークン数を半分にしながら精度を落とさない手法 5 つを、計算式付きで共有します。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。