Skip to content

12.4.1 Agent 和 RAG 应该怎么结合? ​

先给结论:RAG 负责“找证据”,Agent 负责“做事情”。最稳的结合方式,是把 RAG 当成工具,让 Agent 决定何时检索、检索什么、检索结果是否足够。

如果你把 RAG 当成主流程,Agent 只会变成“外挂”,反而更乱。正确姿势是:流程由 Agent 驱动,检索由 RAG提供。

两种常见结合方式 ​

1. RAG-in-Agent(更常见) ​

Agent 是主流程,RAG 是工具之一。适合任务型场景:

  • 先规划步骤
  • 在需要证据时调用检索
  • 用证据支持工具调用或最终输出

2. Agent-in-RAG(谨慎使用) ​

RAG 是主流程,Agent 只做“纠错或扩展检索”。适合问答为主、偶尔需要多步检索的场景。

判断标准很简单:如果任务需要多工具、多步骤,优先 RAG-in-Agent。

一个可落地的协同流程 ​

建议按这个顺序搭建:

  1. 定义任务边界:回答型还是执行型
  2. 定义工具集合:检索、搜索、数据库、计算、写入
  3. 定义触发条件:什么时候必须检索,什么时候不需要
  4. 定义证据门槛:不满足证据门槛就不允许执行
  5. 定义终止条件:避免无限检索或无限循环

最小示意(伪代码):

python
def agent_task(query):
    plan = plan_steps(query)
    for step in plan:
        if step.need_knowledge:
            evidence = retrieve(step.query)
            if not evidence_enough(evidence):
                evidence = retrieve(rewrite(step.query))
        tool_result = call_tool(step, evidence)
    return summarize(plan)

核心不是“工具调用”,而是“证据门槛 + 触发条件”。

工程化落地的三件事 ​

1. 把检索变成“工具” ​

检索必须像数据库或 API 一样被调用,而不是默认发生。你需要定义:

  • retrieve(query) 的输入输出规范
  • 证据结构(标题、来源、时间、段落)
  • 证据评分或过滤规则

2. 给 Agent 一个“证据门槛” ​

Agent 不能在“证据不足”时继续执行。门槛可以是:

  • 相关性得分阈值
  • 关键字段覆盖率
  • 证据一致性检查

3. 把检索预算纳入流程 ​

Agent 需要成本约束:

  • 最大检索次数
  • 允许的召回规模
  • 超过阈值时的降级策略

常见误区 ​

误区一:有 Agent 就不需要 RAG ​

Agent 擅长规划,但没有证据就会“合理胡编”。RAG 的作用是把“事实”提供给 Agent。

误区二:RAG + Agent = 更智能 ​

如果流程不清楚,只会变得更混乱。Agent 需要明确边界和工具,否则会在流程里迷路。

误区三:把所有步骤都交给检索 ​

检索不是万能工具,它解决的是“找证据”,不是“做动作”。真正执行仍然需要工具和流程。

自检清单 ​

  • RAG 在流程里是工具还是主流程?
  • 证据不足时是否会阻止执行?
  • 是否有明确的检索预算和终止条件?

一句话总结 ​

Agent 与 RAG 的正确关系是“流程 + 证据”。让 Agent 决定流程,让 RAG 保证证据,系统才会稳定。