从概念到架构:我理解的Agentic RAG与实现思路
从概念到架构:我理解的Agentic RAG与实现思路
引言:RAG的进化之路
检索增强生成(Retrieval-Augmented Generation, RAG)已经成为大模型落地的主流范式。它将外部知识库与LLM结合,有效解决了模型知识更新慢、容易产生幻觉的问题。然而,传统的RAG流程往往是线性的:查询→检索→生成。这种模式在面对复杂问题、多源异构知识、需要迭代验证的场景时,就显得力不从心了。
于是,Agentic RAG应运而生——将智能体(Agent)的决策、规划和协作能力引入RAG流程,让系统不再是“一问一答”的被动工具,而是能够主动思考、拆解任务、调用工具、自我纠偏的“智能研究员”。
一、Agentic RAG的核心思想
Agentic RAG的本质是:将RAG流程中的每个环节(如查询理解、检索、生成、验证)封装为可被智能体调度的“节点”,并通过定义节点间的协作模式,让系统具备类人的工作方式。
我将其核心能力归纳为三点:
- 任务拆解:面对复杂查询,能够将其分解为多个子任务,比如“先查A产品的技术参数,再对比B产品的用户评价”。
- 动态决策:根据中间结果决定下一步行动,例如当检索到的信息不足时,决定是否改写查询重新检索。
- 多轮迭代与自我修正:对生成的答案进行评分,若不满足要求则循环改进,直到达到预期或上限。
二、三种协作模式:从线性到智能
在探索Agentic RAG的过程中,我发现有三种基础协作模式,它们可以组合出无限复杂的智能行为。
1. 顺序协作(Sequential Collaboration)—— 最小执行单元
顺序协作是最直观的模式:将一个任务分解为若干步骤,按固定顺序执行。在RAG场景下,它可以是一个完整的查询处理流水线:
查询重写 → 多路检索 → 结果融合 → 答案生成
我把这种顺序协作封装成一个 “RAG执行单元” ,它就像一个微服务:输入一个查询,输出一个答案。内部可以有各种优化细节(比如混合检索、重排序),但对外表现为一个可靠的最小功能单元。这是我们整个系统的“工人”。
2. 循环协作(Cyclic Collaboration)—— 自我反思与修正
循环协作让智能体具备了“思考-行动-观察”的闭环能力。典型的例子是ReAct模式:LLM生成思考和行动指令,调用工具获取观察结果,然后再次进入思考。在RAG场景中,我们可以利用循环来自我修正答案质量。
例如,一个 “检查者Agent” 可以对生成的答案从多个维度(相关性、准确性、完整性、时效性)进行评分,并给出改进建议。如果评分不达标,系统可以重新进入RAG流程,并根据建议调整查询策略(如强调时间范围、补充关键词),直到满意或达到重试上限。
3. 监督者协作(Supervisor Collaboration)—— 多智能体团队
当任务复杂到需要多个专业智能体协同时,就需要一个“监督者”来管理。监督者负责拆解任务、分配工作、汇总结果,并决定下一步行动。这种模式类似于一个团队的项目经理,手下有多个专家。
在RAG系统中,我们可以让监督者根据用户问题,决定调用哪个RAG执行单元(如技术文档库、销售数据库、客服聊天记录),甚至并行调用多个,然后将结果汇总交给检查者评分。监督者本身也是一个智能体,它集成了任务拆解、分配、监督三合一的能力。
三、我的三层架构设计
基于上述思考,我设计了一个三层Agentic RAG架构,它清晰地将三种协作模式落地为具体模块:
用户提问
↓
[ 监督者Agent ] —— 三合一:拆解+分配+监督
├─ 调用 [RAG执行单元] (顺序协作) → 初步答案
├─ 调用 [检查者Agent] (循环协作) → 评分 + 改进建议
└─ 若评分通过 → 输出;否则 → 根据建议调整,重试(循环)
第一层:RAG执行单元(顺序协作)
- 职责:接收查询,执行完整的RAG流程,返回答案。
- 内部细节:可包含查询重写、混合检索、重排序、生成等步骤,对外屏蔽复杂性。
- 设计目标:高内聚、可替换,作为系统的最小执行单元。
第二层:检查者Agent(循环协作)
- 职责:对答案进行多维度评分,并输出改进建议。
- 设计关键:
- 评分维度需具体可操作(如“信息过时”建议补充最新资料)。
- 建议要能被监督者理解并转化为查询调整。
- 边界条件:可配置重试次数上限,避免无限循环。
第三层:监督者Agent(监督者协作)
- 职责:三合一,负责:
- 拆解:分析用户问题,判断是否需要多源查询。
- 分配:调用合适的RAG执行单元(可并行)。
- 监督:将结果送检查者,根据反馈决定重试或输出。
- 设计目标:智能决策的核心,需要具备对评分建议的理解能力,并能动态调整查询策略。
四、后续实现思路(不含代码)
在从零到一实现这套架构时,我打算遵循以下路径:
1. 搭建模拟环境,让痛点显性化
- 多源异构数据:准备PDF论文、CSV销售记录、JSON API文档、HTML网页等,故意混入噪音和冲突信息。
- 复杂查询集:设计需要跨文档对比、需处理矛盾信息、需多次检索的查询。
- 评分基准:定义人工评分的测试集,用于衡量系统改进效果。
2. 定义清晰的状态流转
- 每个Agent的输入输出都应是结构化的“状态”对象,包含查询、上下文、答案、评分、改进建议、重试计数等字段。
- 状态流转图:明确哪些节点可被调用,条件边如何判断。
3. 逐步构建节点
- 先实现RAG执行单元(顺序协作),确保它能处理单一知识源。
- 再实现检查者Agent,先简单评分(如仅判断是否相关),再逐步增加维度。
- 最后实现监督者Agent,从简单调用开始,逐步加入拆解和并行能力。
4. 处理边界与健壮性
- 重试机制:设计退避策略,避免无意义的重试。
- 超时控制:为每个节点设置最大执行时间。
- 降级输出:当多次重试仍不达标时,输出当前最佳答案并附带说明。
5. 可观测性设计
- 记录每个节点的输入输出、耗时、token消耗。
- 可视化执行路径(如用Mermaid图展示每次请求的Agent调用链),便于调试。
五、总结与展望
Agentic RAG不是简单的技术堆砌,而是一种将智能体的思考能力注入信息检索的架构思想。通过三种基础协作模式的组合,我们可以构建出适应复杂场景的智能系统。我的三层架构将这一思想具体化,既保持了模块的清晰边界,又赋予了系统迭代进化的能力。
下一步,我将用Spring AI Alibaba Graph作为实现框架,将上述思路落地为可运行的代码。我相信,当系统第一次在面对矛盾信息时主动追问,或者在检索不足时自动改写查询,那种“智能”的感觉会让人激动不已。
如果你也对Agentic RAG感兴趣,不妨从搭建自己的模拟环境开始,亲手体验从线性到智能的进化之路。

浙公网安备 33010602011771号