【AI幻覚を撲滅】9つのエージェントが協力して正確な情報を提供!Agentic RAGシステムの全貌

【AI幻覚を撲滅】9つのエージェントが協力して正確な情報を提供!Agentic RAGシステムの全貌

みなさん、こんにちは!ChatGPTなどの大規模言語モデル(LLM)を使っていて、「あれ?この情報、なんか変じゃない?」と思ったことはありませんか?これが、AI業界で問題視されている「ハルシネーション(幻覚)」という現象です。AIが自信満々に間違った情報を生成してしまうんですね。

しかし、この問題を劇的に改善する技術があります。それが「Agentic RAG(エージェント型検索拡張生成)」システムです。今回は、9つの専門AIエージェントが協力して、正確で信頼できる情報を提供するこの革新的なシステムをご紹介します。

  1. AIの「幻覚」問題とは?
    1. ハルシネーションの実例
    2. なぜハルシネーションが起きるのか?
  2. RAGとは?従来の解決策
    1. 従来のRAGの仕組み
  3. Agentic RAGの登場:次世代の知識システム
    1. 従来のRAG vs Agentic RAG
  4. システムアーキテクチャ
    1. コアコンポーネント
    2. アーキテクチャ図
  5. 9つの専門エージェントの詳細
    1. 1. Router Agent(ルーターエージェント)
    2. 2. Retrieval Agent(検索エージェント)
    3. 3. Query Rewriting Agent(再構成エージェント)
    4. 4. Web Search Agent(Web検索エージェント)
    5. 5. Integration Agent(統合エージェント)
    6. 6. Generation Agent(生成エージェント)
    7. 7. Fact Checking Agent(事実確認エージェント)
    8. 8. Safety Agent(安全性エージェント)
    9. 9. Clarification Agent(明確化エージェント)
  6. Dynamic Workflow Orchestration(動的ワークフロー調整)
    1. ワークフローパターン
      1. パターン1:シンプルなナレッジベース検索
      2. パターン2:Web検索が必要
      3. パターン3:質問再構成が必要
      4. パターン4:複合検索(ナレッジベース + Web)
      5. パターン5:自己修正ループ
    2. LangGraphによるワークフロー管理
  7. ハルシネーション削減の具体的手法
    1. 手法1:情報源の明示
    2. 手法2:検索結果に基づく生成
    3. 手法3:事実確認エージェント
    4. 手法4:不確実性の表明
    5. 手法5:複数情報源のクロスチェック
  8. 実装例
    1. ベクターデータベースの構築
    2. 検索エージェントの実装
    3. ルーターエージェントの実装
    4. 事実確認エージェントの実装
  9. 実用例
    1. ケース1:企業の社内ヘルプデスク
    2. ケース2:医療診断支援システム
    3. ケース3:法律相談AIアシスタント
    4. ケース4:カスタマーサポート
  10. セットアップガイド
    1. 必要なもの
    2. ステップバイステップ
      1. 1. プロジェクトのセットアップ
      2. 2. 環境変数の設定
      3. 3. ナレッジベースの準備
      4. 4. ベクターデータベースの構築
      5. 5. エージェントの実装
      6. 6. ワークフローの定義
      7. 7. Streamlit UIの作成
      8. 8. システムの起動
  11. コストと運用
    1. 開発コスト
    2. 運用コスト(月間10,000クエリ)
  12. まとめ
    1. 主要なメリット
    2. 9つのエージェントの協力
    3. 今後の展開
  13. 参考リンク

AIの「幻覚」問題とは?

ハルシネーションの実例

大規模言語モデルは、膨大なテキストデータから学習していますが、時々、存在しない情報を「作り出して」しまうことがあります。

具体例

ユーザー: 「徳川家康の17番目の子供の名前を教えて」

AI: 「徳川家康の17番目の子供は、徳川信勝(とくがわのぶかつ)です。
     彼は1612年に生まれ、江戸幕府の重要な役職を務めました。」

実際: 徳川家康には11人の子供しかいない。17番目の子供は存在しない。
      上記の情報は完全に捏造されている。

このように、AIは「知らない」と答えるのではなく、もっともらしい「嘘」を作り出してしまうのです。これは、医療、法律、ビジネス意思決定など、正確性が求められる分野では致命的です。

なぜハルシネーションが起きるのか?

LLMは、統計的な確率に基づいて次の単語を予測します。つまり、「正確な情報を提供する」のではなく、「それらしい文章を生成する」ことが目的なのです。学習データに存在しない情報や、曖昧な質問に対しては、パターンを組み合わせて「創作」してしまうわけですね。


RAGとは?従来の解決策

この問題を解決するために登場したのが「RAG(Retrieval-Augmented Generation:検索拡張生成)」という技術です。

従来のRAGの仕組み

[ユーザーの質問]
    ↓
[ナレッジベース検索] ← 関連する文書を取得
    ↓
[LLMに文書と質問を渡す]
    ↓
[LLMが文書を参照して回答を生成]
    ↓
[回答]

従来のRAGの利点
– 最新情報や専門知識を参照できる
– ハルシネーションを大幅に削減
– 企業独自のデータを活用可能

従来のRAGの課題
– 単純な検索→生成の一本道
– 検索結果の品質チェックがない
– 複雑な質問への対応が難しい
– 自己修正機能がない
– Web上の最新情報にアクセスできない


Agentic RAGの登場:次世代の知識システム

Agentic RAGは、従来のRAGを大幅に進化させた、多段階・多エージェント型のシステムです。

従来のRAG vs Agentic RAG

特徴 従来のRAG Agentic RAG
ワークフロー 固定(検索→生成) 動的(質問に応じて最適化)
エージェント数 1つ 9つの専門エージェント
自己修正 なし あり(複数回の改善サイクル)
事実確認 なし 専用エージェントが検証
安全性チェック なし 専用エージェントが監視
Web検索 なし リアルタイムWeb検索対応
複雑な質問 苦手 得意(分解と統合)

Agentic RAGは、まるで人間の専門家チームのように、複数のAIエージェントが協力して最も正確な回答を導き出します。


システムアーキテクチャ

Agentic RAGシステムは、以下のコンポーネントで構成されています。

コアコンポーネント

コンポーネント 技術 役割
UI Streamlit ユーザーインターフェース
ワークフロー管理 LangGraph マルチエージェント調整
RAGフレームワーク LangChain 検索・生成機能
ベクターDB Chroma 文書の意味的検索
埋め込み Google Generative AI セマンティック検索
LLM推論 Groq(Llama 3) 高速推論エンジン
Web検索 Tavily Search リアルタイム情報取得

アーキテクチャ図

┌────────────────────────────────────────────────┐
│          Streamlit UI                         │
│       (ユーザーインターフェース)                │
└────────────────────────────────────────────────┘
                      ↓
┌────────────────────────────────────────────────┐
│          LangGraph Orchestrator               │
│     (ダイナミックワークフロー管理)              │
└────────────────────────────────────────────────┘
                      ↓
    ┌─────────────────────────────────┐
    │   9つの専門エージェント         │
    │                                 │
    │ [ルーター] → [検索/Web検索]     │
    │      ↓            ↓             │
    │   [再構成]    [統合]            │
    │      ↓            ↓             │
    │   [生成]  ←  [明確化]           │
    │      ↓                          │
    │ [事実確認] → [安全性]           │
    └─────────────────────────────────┘
           ↓              ↓
    ┌──────────┐   ┌──────────┐
    │  Chroma  │   │  Tavily  │
    │ ベクターDB│   │ Web検索  │
    └──────────┘   └──────────┘

9つの専門エージェントの詳細

このシステムの核心は、9つの専門化されたAIエージェントです。それぞれが特定の役割を担い、協力して最高品質の回答を生成します。

1. Router Agent(ルーターエージェント)

役割:交通整理係

ユーザーの質問を分析し、どのワークフローが最適かを判断します。まさに「AI版トリアージ」ですね。

判断基準
ナレッジベース検索:既存の文書に答えがありそうか?
Web検索:最新情報が必要か?
明確化:質問が曖昧すぎないか?
直接回答:簡単な質問で検索不要か?

質問1: "会社の休暇ポリシーは?"
→ ナレッジベース検索(社内文書を参照)

質問2: "今日の天気は?"
→ Web検索(リアルタイム情報が必要)

質問3: "それについて詳しく教えて"
→ 明確化(「それ」が何か不明確)

質問4: "2 + 2 は?"
→ 直接回答(検索不要)

2. Retrieval Agent(検索エージェント)

役割:図書館司書

ナレッジベース(社内文書、マニュアル、過去の記録など)から、質問に関連する文書を取得します。

技術
ベクターデータベース(Chroma):文書を意味的に検索
セマンティック検索:キーワード一致ではなく、意味の類似性で検索
Google Generative AI Embeddings:文書とクエリを高次元ベクトルに変換

検索プロセス

# ユーザー質問をベクトル化
query_vector = embeddings.embed_query("休暇ポリシーは?")

# 最も類似した文書を取得(トップ5)
relevant_docs = vector_store.similarity_search(
    query_vector,
    k=5
)

# 取得した文書
# 1. "年次有給休暇規定.pdf" (類似度: 0.92)
# 2. "従業員ハンドブック.docx" (類似度: 0.87)
# 3. "福利厚生ガイド.pdf" (類似度: 0.81)

3. Query Rewriting Agent(再構成エージェント)

役割:質問の翻訳者

ユーザーの質問を、より検索しやすい形に書き換えます。人間は曖昧な質問をしがちですが、このエージェントがそれを明確にします。

元の質問: "前に話してたあれって、どうなってる?"
↓
再構成後: "プロジェクトXの進捗状況を教えてください"

元の質問: "それの使い方がわからん"
↓
再構成後: "製品Yの操作手順を教えてください"

元の質問: "犬と猫、どっちが好き?"
↓
再構成後: "犬と猫の特徴を比較し、ペットとして飼う際の利点と欠点を説明してください"

4. Web Search Agent(Web検索エージェント)

役割:インターネット探偵

ナレッジベースに情報がない場合、リアルタイムでWebから最新情報を取得します。

使用シーン
– 最新ニュース
– 株価情報
– 天気予報
– 最新の技術動向
– 最近のイベント情報

技術(Tavily Search API)

# Tavily Search APIで最新情報を取得
results = tavily.search(
    query="OpenAI GPT-5 release date",
    max_results=5,
    search_depth="advanced"
)

# 取得結果
# 1. OpenAI 公式サイト: "GPT-5 released on August 12, 2025"
# 2. TechCrunch: "GPT-5 shows 40% improvement over GPT-4"
# 3. The Verge: "New features in GPT-5..."

5. Integration Agent(統合エージェント)

役割:情報のキュレーター

複数の情報源(ナレッジベース + Web検索)から得た情報を統合し、一貫性のあるコンテキストを作成します。

統合プロセス

入力:
- ナレッジベース: 3つの社内文書
- Web検索: 5つの最新記事
- 合計8つの情報源

↓ (重複除去、関連性評価)

出力:
- 高関連性: 4つの情報源
- 矛盾なく統合されたコンテキスト

6. Generation Agent(生成エージェント)

役割:ライター

統合された情報を基に、一貫性のある、わかりやすい回答を生成します。

生成原則
引用:情報源を明記
一貫性:矛盾のない説明
わかりやすさ:専門用語の説明
完全性:質問に完全に答える

プロンプト例

以下のコンテキストを基に、ユーザーの質問に答えてください:

コンテキスト:
[統合された情報]

質問: {user_query}

回答には以下を含めてください:
- 明確で簡潔な説明
- 情報源の引用
- 関連する詳細情報

7. Fact Checking Agent(事実確認エージェント)

役割:ファクトチェッカー

生成された回答の事実を確認し、誤りがないかをチェックします。これがハルシネーション削減の鍵です。

確認項目
整合性:コンテキストと回答が一致しているか?
論理性:論理的な矛盾はないか?
具体性:曖昧な表現や根拠のない主張はないか?
信頼性:情報源は信頼できるか?

確認結果の例

回答: "OpenAI GPT-5は2025年8月12日にリリースされました"

事実確認:
✅ コンテキストに「2025年8月12日」の記載あり
✅ 情報源はOpenAI公式サイト(高信頼性)
✅ 論理的矛盾なし

判定: 事実として正確 ✓

修正が必要な場合

回答: "GPT-5は2020年にリリースされました"

事実確認:
❌ コンテキストには「2025年8月12日」と記載
❌ 回答と矛盾

判定: 修正が必要 ✗
→ Generation Agentに再生成を依頼

8. Safety Agent(安全性エージェント)

役割:コンプライアンス担当

生成されたコンテンツが、倫理的・法的に適切かどうかをチェックします。

チェック項目
有害コンテンツ:暴力、差別、ヘイトスピーチ
プライバシー:個人情報の漏洩
著作権:第三者の権利侵害
不適切な指示:違法行為の助長

回答: "このソフトウェアのライセンスキーは XXXX-YYYY-ZZZZ です"

安全性チェック:
❌ ライセンスキーの公開は著作権侵害
❌ 不適切なコンテンツ

判定: ブロック ✗
→ 代替回答: "ライセンスキーは購入後にメールで送付されます"

9. Clarification Agent(明確化エージェント)

役割:質問の明確化担当

質問が曖昧すぎる場合、ユーザーに追加情報を求めます。

明確化が必要なケース

質問: "それについて教えて"
→ "「それ」とは何を指していますか?具体的にお聞かせください。"

質問: "前のやつ"
→ "「前のやつ」とは、どの項目を指していますか?"

質問: "いつ?"
→ "何についての「いつ」でしょうか?イベントの日程?締切?"

Dynamic Workflow Orchestration(動的ワークフロー調整)

Agentic RAGの最大の特徴は、質問に応じてワークフローを動的に変更することです。

ワークフローパターン

パターン1:シンプルなナレッジベース検索

[質問] → [ルーター] → [検索] → [生成] → [事実確認] → [安全性] → [回答]

適用例:「会社の休暇ポリシーは?」

パターン2:Web検索が必要

[質問] → [ルーター] → [Web検索] → [統合] → [生成] → [事実確認] → [安全性] → [回答]

適用例:「今日の東京の天気は?」

パターン3:質問再構成が必要

[質問] → [ルーター] → [再構成] → [検索] → [生成] → [事実確認] → [安全性] → [回答]

適用例:「前に言ってたあれ、どうなった?」

パターン4:複合検索(ナレッジベース + Web)

[質問] → [ルーター] → [検索] + [Web検索] → [統合] → [生成] → [事実確認] → [安全性] → [回答]

適用例:「当社の製品と、競合他社の最新製品を比較して」

パターン5:自己修正ループ

[質問] → ... → [生成] → [事実確認]
                 ↑          ↓ (エラー検出)
                 └──────────┘ (再生成)

事実確認でエラーが見つかった場合、生成エージェントが再度回答を作成します。

LangGraphによるワークフロー管理

LangGraphは、これらの複雑なワークフローを管理するためのフレームワークです。

from langgraph.graph import StateGraph

# ワークフローグラフの定義
workflow = StateGraph(AgentState)

# ノード(エージェント)の追加
workflow.add_node("router", router_agent)
workflow.add_node("retrieve", retrieval_agent)
workflow.add_node("rewrite", rewrite_agent)
workflow.add_node("websearch", websearch_agent)
workflow.add_node("integrate", integration_agent)
workflow.add_node("generate", generation_agent)
workflow.add_node("fact_check", fact_check_agent)
workflow.add_node("safety", safety_agent)

# エッジ(ワークフローの流れ)の定義
workflow.add_edge("router", "retrieve")  # ルーター → 検索
workflow.add_edge("retrieve", "generate")  # 検索 → 生成
workflow.add_conditional_edge(
    "fact_check",
    lambda state: "generate" if state["has_errors"] else "safety",
    # エラーがあれば再生成、なければ安全性チェックへ
)

# ワークフローの開始点と終了点
workflow.set_entry_point("router")
workflow.set_finish_point("safety")

# コンパイル
app = workflow.compile()

ハルシネーション削減の具体的手法

Agentic RAGが、どのようにしてハルシネーションを削減しているのか、具体的に見ていきましょう。

手法1:情報源の明示

従来のLLMは、どこから情報を得たか不明でしたが、Agentic RAGは常に情報源を示します。

質問: "GPT-5の性能は?"

回答:
「GPT-5は、GPT-4と比べて数学テストで94.6%のスコアを記録しています
(出典: OpenAI公式発表、2025年8月12日)。
また、事実誤認を含む確率が45%低下しました
(出典: OpenAI技術レポート)。」

情報源が明示されているため、ユーザーは信頼性を判断できます。

手法2:検索結果に基づく生成

LLMは、学習データからの「記憶」ではなく、検索で取得した「最新の文書」を基に回答を生成します。

[検索結果]
文書1: "2025年度の休暇日数は年間20日です"
文書2: "有給休暇は入社6ヶ月後から付与されます"

[生成された回答]
「2025年度の休暇日数は年間20日で、入社6ヶ月後から有給休暇が付与されます。」

→ 検索結果に基づいているため、ハルシネーションなし

手法3:事実確認エージェント

Fact Checking Agentが、生成された回答とコンテキストを照合します。

def fact_check(answer, context):
    # 回答の各主張をコンテキストと照合
    claims = extract_claims(answer)

    for claim in claims:
        if not is_supported_by_context(claim, context):
            return {
                "verified": False,
                "error": f"主張 '{claim}' がコンテキストに見つかりません",
                "action": "regenerate"
            }

    return {"verified": True}

手法4:不確実性の表明

情報が不足している場合、AIは「わからない」と正直に答えます。

質問: "2026年のGPT-6のリリース日は?"

検索結果: 情報なし

回答:
「申し訳ございませんが、2026年のGPT-6のリリース日に関する
公式発表は現時点では見つかりませんでした。
最新情報はOpenAI公式サイトをご確認ください。」

→ 推測せずに「わからない」と回答(ハルシネーション回避)

手法5:複数情報源のクロスチェック

複数の文書から同じ情報が得られた場合、その情報の信頼性は高まります。

情報源1: "GPT-5は2025年8月12日リリース"
情報源2: "GPT-5のリリース日は2025年8月12日"
情報源3: "2025/8/12にGPT-5が公開された"

→ 3つの情報源が一致 → 高い信頼性

実装例

実際のコードを見てみましょう。

ベクターデータベースの構築

from langchain_community.vectorstores import Chroma
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 埋め込みモデルの初期化
embeddings = GoogleGenerativeAIEmbeddings(
    model="models/embedding-001"
)

# 文書の読み込みと分割
documents = load_documents("./knowledge_base/")
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
splits = text_splitter.split_documents(documents)

# ベクターストアの作成
vectorstore = Chroma.from_documents(
    documents=splits,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

検索エージェントの実装

from langchain.agents import Tool
from langchain_community.tools.tavily_search import TavilySearchResults

# ナレッジベース検索ツール
def knowledge_base_search(query: str) -> list:
    results = vectorstore.similarity_search(query, k=5)
    return [doc.page_content for doc in results]

# Web検索ツール
web_search = TavilySearchResults(max_results=5)

# ツールの定義
tools = [
    Tool(
        name="KnowledgeBaseSearch",
        func=knowledge_base_search,
        description="社内文書やマニュアルを検索します"
    ),
    Tool(
        name="WebSearch",
        func=web_search,
        description="インターネット上の最新情報を検索します"
    )
]

ルーターエージェントの実装

from langchain_groq import ChatGroq

llm = ChatGroq(model="llama3-70b-8192")

def router_agent(state):
    query = state["query"]

    # LLMで質問を分析
    prompt = f"""
    以下の質問を分析し、最適な処理方法を選択してください:

    質問: {query}

    選択肢:
    1. knowledge_base: 社内文書から検索
    2. web_search: インターネットで検索
    3. clarify: 質問を明確化
    4. direct: 直接回答

    回答は選択肢のみを返してください。
    """

    response = llm.invoke(prompt)
    route = response.content.strip()

    return {"route": route}

事実確認エージェントの実装

def fact_check_agent(state):
    answer = state["answer"]
    context = state["context"]

    prompt = f"""
    以下の回答が、提供されたコンテキストに基づいて
    事実として正確かどうかを確認してください:

    コンテキスト:
    {context}

    回答:
    {answer}

    確認項目:
    1. 回答の内容がコンテキストに含まれているか
    2. 論理的な矛盾はないか
    3. 推測や創作された情報はないか

    結果を「verified: true/false」で返してください。
    エラーがあれば、その内容も記載してください。
    """

    response = llm.invoke(prompt)
    result = parse_fact_check_result(response.content)

    return {"verified": result["verified"], "errors": result.get("errors", [])}

実用例

Agentic RAGは、様々な分野で活用できます。

ケース1:企業の社内ヘルプデスク

シナリオ
– 従業員が人事・福利厚生・IT等の質問をする
– Agentic RAGが社内文書を検索して回答
– 不明な点は人事部に自動エスカレーション

効果
– 人事部への問い合わせが70%削減
– 従業員の待ち時間が数日から数分に短縮
– 24時間365日対応可能

ケース2:医療診断支援システム

シナリオ
– 医師が症状と検査結果を入力
– システムが最新の医学論文と過去の症例を検索
– 診断候補と根拠を提示
重要:最終判断は必ず医師が行う

効果
– 診断精度の向上(見落とし防止)
– 最新の治療法へのアクセス
– 希少疾患の診断支援

安全対策
– 必ず情報源(論文、ガイドライン等)を明示
– 確実性の低い情報には警告を表示
– Safety Agentが不適切な推奨をブロック

ケース3:法律相談AIアシスタント

シナリオ
– 一般市民が法律相談をする
– システムが法律文書、判例を検索
– 関連する法律と過去の判例を提示
– 弁護士への相談を推奨

効果
– 初歩的な法律知識へのアクセス
– 弁護士相談前の情報収集
– 法律リテラシーの向上

注意
– 「これは法的助言ではありません」と明示
– 複雑なケースは必ず専門家に相談を推奨

ケース4:カスタマーサポート

シナリオ
– 顧客が製品の使い方を質問
– システムがマニュアル、FAQ、過去のサポート記録を検索
– 解決策を提示
– 解決しない場合は人間のサポート担当に引き継ぎ

効果
– 即座の問題解決(待ち時間ゼロ)
– サポート担当者の負担軽減
– 顧客満足度の向上


セットアップガイド

実際にAgentic RAGシステムを構築する手順をご紹介します。

必要なもの

  1. Python 3.10+
  2. 各種APIキー
    • OpenAI API または Groq API
    • Google Generative AI API
    • Tavily Search API
  3. ナレッジベース:検索対象の文書(PDF、テキスト等)

ステップバイステップ

1. プロジェクトのセットアップ

# プロジェクトディレクトリ作成
mkdir agentic-rag
cd agentic-rag

# 仮想環境作成
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 必要なパッケージのインストール
pip install langchain langgraph langchain-google-genai langchain-groq \
            chromadb tavily-python streamlit

2. 環境変数の設定

# .envファイルの作成
cat > .env << EOF
GROQ_API_KEY=your_groq_api_key_here
GOOGLE_API_KEY=your_google_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here
EOF

3. ナレッジベースの準備

# ナレッジベース用ディレクトリ作成
mkdir -p knowledge_base

# 文書を配置(PDF、テキストファイル等)
cp /path/to/your/documents/*.pdf knowledge_base/

4. ベクターデータベースの構築

# build_vectorstore.py
from langchain_community.document_loaders import DirectoryLoader
from langchain_community.vectorstores import Chroma
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 文書の読み込み
loader = DirectoryLoader("./knowledge_base", glob="**/*.pdf")
documents = loader.load()

# 文書を分割
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
splits = text_splitter.split_documents(documents)

# 埋め込みモデル
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")

# ベクターストア作成
vectorstore = Chroma.from_documents(
    documents=splits,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

print(f"ベクターストア作成完了:{len(splits)}個のチャンクを保存")

実行:

python build_vectorstore.py

5. エージェントの実装

エージェントのコードは長いので、主要部分のみ示します。

agents.py

from langchain_groq import ChatGroq
from langchain_community.tools.tavily_search import TavilySearchResults

llm = ChatGroq(model="llama3-70b-8192")

class RouterAgent:
    def run(self, query):
        # ルーティングロジック
        pass

class RetrievalAgent:
    def run(self, query):
        # ナレッジベース検索
        pass

class WebSearchAgent:
    def run(self, query):
        # Web検索
        pass

# 他のエージェントも同様に実装

6. ワークフローの定義

workflow.py

from langgraph.graph import StateGraph
from agents import *

workflow = StateGraph(AgentState)

# ノードの追加
workflow.add_node("router", router_agent)
workflow.add_node("retrieve", retrieval_agent)
# ... 他のノードも追加

# ワークフローの定義
workflow.add_edge("router", "retrieve")
# ... 他のエッジも追加

app = workflow.compile()

7. Streamlit UIの作成

app.py

import streamlit as st
from workflow import app

st.title("Agentic RAG システム")

query = st.text_input("質問を入力してください:")

if st.button("送信"):
    with st.spinner("処理中..."):
        result = app.invoke({"query": query})
        st.write("### 回答")
        st.write(result["answer"])

        st.write("### 情報源")
        for source in result["sources"]:
            st.write(f"- {source}")

8. システムの起動

streamlit run app.py

ブラウザで `http://localhost:8501` にアクセスすると、UIが表示されます!


コストと運用

開発コスト

  • 開発時間:4-6週間(1-2人)
  • 初期投資:ほぼゼロ(オープンソース技術)

運用コスト(月間10,000クエリ)

サービス コスト
Groq API (Llama 3) $20-40
Google Generative AI (Embeddings) $5-10
Tavily Search API $10-20
サーバー(クラウド) $30-50
合計 $65-120/月

従来の人力サポートと比べて、大幅なコスト削減が可能です。


まとめ

Agentic RAGシステムは、AI幻覚(ハルシネーション)を劇的に削減する、次世代の知識システムです。

主要なメリット

高精度:ハルシネーションを最小化
透明性:情報源を常に明示
最新性:Web検索でリアルタイム情報にアクセス
安全性:専用エージェントが不適切コンテンツをブロック
柔軟性:質問に応じて動的にワークフローを調整
スケーラブル:大量のクエリに対応可能

9つのエージェントの協力

このシステムの核心は、9つの専門エージェント(ルーター、検索、再構成、Web検索、統合、生成、事実確認、安全性、明確化)が協力して、最も正確な回答を生成する点です。まるで専門家チームのように、各エージェントが得意分野を担当し、全体として高品質な成果を生み出します。

今後の展開

Agentic RAG技術は、今後さらに進化していくでしょう。

  • マルチモーダル対応:画像、動画、音声の検索と生成
  • 推論能力の強化:複雑な論理推論や数学的証明
  • パーソナライゼーション:ユーザーごとに最適化された回答
  • リアルタイム学習:新しい情報を即座に学習
  • 多言語対応の拡充:100以上の言語に対応

AIの「幻覚」問題を解決し、信頼できる情報提供システムを構築する。Agentic RAGは、そんな未来を実現する鍵となる技術です。あなたのビジネスや研究にも、ぜひ活用してみてください!


参考リンク

コメント

タイトルとURLをコピーしました