Appearance
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。
一个可落地的协同流程
建议按这个顺序搭建:
- 定义任务边界:回答型还是执行型
- 定义工具集合:检索、搜索、数据库、计算、写入
- 定义触发条件:什么时候必须检索,什么时候不需要
- 定义证据门槛:不满足证据门槛就不允许执行
- 定义终止条件:避免无限检索或无限循环
最小示意(伪代码):
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 保证证据,系统才会稳定。