一个完整的 RAG Agent 案例
学到 RAG、Tool Use 和 Agent 之后,很多人最自然会问的一句就是:
这些东西在一个真实系统里,到底是怎么一起工作的?
单篇看时:
RAG很清楚Tool Use很清楚Agent很清楚
但真到落地时,大家最容易卡住的是:
怎么把它们装进同一个系统,而不是只会分别讲概念。
这篇文档就用一个完整的 RAG Agent 案例,把这些能力串起来。
1. 先定义一个案例场景
我们先假设要做这样一个系统:
企业内部知识调研助手
用户可能会提这类问题:
- 帮我整理某个产品方案的已知约束
- 帮我调研某个功能上线前的依赖和风险
- 帮我从多份内部文档里提炼结论
这个场景为什么适合做 RAG Agent?
因为它同时具备:
- 私有知识依赖
- 多步信息收集
- 过程中的动态判断
- 最终需要整合输出
这里可以直接拆开看:
- 只用普通 prompt 不够
- 只用单次 RAG 也不一定够
- 但它又不需要一开始就上特别重的多 Agent
2. 这个系统的核心目标
目标不是“让模型看起来聪明”,而是:
围绕一个调研问题,主动检索、补信息、整理证据,并输出有依据的总结。
所以这个系统至少要能做 4 件事:
- 理解调研目标
- 检索内部知识
- 判断信息够不够
- 整理结论并说明依据
3. 系统由哪 些部分组成
一个比较实用的最小 RAG Agent 可以拆成下面几层:
3.1 User Goal Layer
接收用户问题和目标。
3.2 Agent Orchestration Layer
负责:
- 判断下一步
- 进入多步循环
- 管状态
3.3 Retrieval Layer
负责:
- 文档切分
- 检索
- rerank
- 证据返回
3.4 Tool Layer
除了检索,还可以接额外工具,比如:
- 文档详情读取
- 数据查询
- 链接解析
3.5 State Layer
负责记录:
- 当前目标
- 已拿到的证据
- 已排除的信息
- 当前缺口
- 已做过的动作
3.6 Output Layer
负责:
- 汇总结论
- 标出依据
- 输出结构化结果
4. 先看一张整体图
可以这样理解:
- 用户提目标
- Agent 判断现在缺什么
- 去检索或调工具
- 把结果变成证据
- 更新状态
- 判断还需不需要继续
- 最终输出
5. 一个典型执行流程
5.1 第一步:理解目标
系统先判断:
- 用户要的到底是概览、对比,还是风险梳理
- 需要查哪些维度
5.2 第二步:发起第一轮检索
比如检索:
- 相关产品方案
- 历史设计文档
- 风险记录
5.3 第三步:判断证据是否够用
这一点很关键。
如果只是普通 RAG,很多系统在拿到第一批文档后就直接回答了。
但 Agent 会继续判断:
- 有没有关键维度缺失
- 检索结果是否冲突
- 是否需要深入读某份文档
5.4 第四步:调附加工具或更细粒度检索
比如:
- 读取文档全文
- 查某个依赖项
- 查看某条记录的上下文
5.5 第五步:更新状态
系统记录: