Skip to content
🔗 分享本题
查看我的学习进度 →

传统 RAG 一次检索后生成,Agentic RAG 会评估证据充分性并迭代改写查询和切换数据源

🧠 记忆锚点:传统 RAG 检一次就答;Agentic RAG 会判断证据够不够,不够就换问法和数据源。

💡 答案要点

传统 RAG vs Agentic RAG 对比:

传统 RAG(被动、单次):
  用户问题 → 向量检索 → 拼入 Prompt → LLM 生成答案
  问题:检索一次,够不够看运气;无法应对多跳问题

Agentic RAG(主动、多轮):
  用户问题 → Agent 分析 → 决定检索策略 → 检索
             ↓(结果不够?)
          再次检索/换数据源/拆分子问题
             ↓(信息充分)
          生成最终答案

Agentic RAG 的五大核心能力:

能力说明
自主判断检索充分性判断"当前信息够不够回答问题"
查询改写/分解把复杂问题拆成多个子查询
多源检索向量库 + SQL + 搜索引擎按需组合
迭代检索第一次检索不够,自动补充检索
工具调用不只检索文档,还能调用 API、执行代码

实现示例:

展开 Python 代码示例(44 行)
python
class AgenticRAG:
    def __init__(self, vector_store, sql_db, web_search):
        self.vector_store = vector_store
        self.sql_db = sql_db
        self.web_search = web_search
        self.llm = ChatOpenAI(model="gpt-4o")

    def run(self, question: str) -> str:
        context = []
        max_rounds = 3

        for round in range(max_rounds):
            # 1. 让 LLM 判断:现有信息够不够?需要检索什么?
            plan = self.llm.invoke(f"""
问题: {question}
已有上下文: {context}

判断:
1. 当前信息是否足够回答问题?(yes/no)
2. 如果不够,下一步应该:
   - vector_search: 语义搜索知识库(query=xxx)
   - sql_query: 查询数据库(sql=xxx)
   - web_search: 搜索网络(query=xxx)
   - answer: 直接回答

以JSON格式输出。
""")
            action = parse_json(plan)

            if action["type"] == "answer":
                return self.llm.invoke(f"基于以下信息回答:{context}\n问题:{question}")

            # 2. 执行检索动作
            if action["type"] == "vector_search":
                result = self.vector_store.search(action["query"])
            elif action["type"] == "sql_query":
                result = self.sql_db.execute(action["sql"])
            elif action["type"] == "web_search":
                result = self.web_search.search(action["query"])

            context.append(result)

        # 超过最大轮次,用已有信息尽力回答
        return self.llm.invoke(f"基于以下信息回答(信息可能不完整):{context}\n问题:{question}")

典型应用场景:

  • 多跳问题:"A公司CEO的母校的校友里有哪些AI创业者?"(需要3次检索)
  • 跨源问题:需要同时查内部文档和实时数据
  • 验证性问题:需要反复核实才能给出确定答案

面试话术:

示例表达(仅在能用本人经历或可复现实验佐证时使用): "Agentic RAG 是 2025 年 RAG 的进化方向。传统 RAG 是'一次检索,凑合用',Agentic RAG 是'AI 自主决定要查什么、查几次、查哪里'。核心差异是 Agent 会评估'现有信息够不够',不够就继续检索。我做过一个法律问答系统,传统 RAG 对多跳问题准确率只有 45%,改成 Agentic RAG 后升到 82%,因为它能自动拆解问题、分步检索。"