关注我们,深度学习LLM应用
生成式AI的发展日新月异,一不小心你就会淹没在新的概念中。RAG(检索增强生成)、Agent(智能体)作为主流的大语言模型(LLM)应用形式已经广为人知。这不还经常听到一个词: Agentic RAG ,前两天还有人问小编它到底是RAG还是Agent?今天我们就来彻底说清楚Agentic RAG。
01
为什么需要Agentic RAG?
首先,RAG是什么?RAG是用检索到的外部知识来对LLM进行能力增强的一种技术,旨在降低LLM的幻觉并让其更好的适应特定领域内的应用场景。通俗的讲: RAG就是给LLM增加一个可快速查询的“外挂”知识库,增强其能力,以防它不懂的时候胡说八道 。
RAG = LLM + 知识库 + 检索器
它可以让AI准确的回答诸如这样的问题:
- 公司的财务报销审核流程是怎样的?
- 上半年销售业绩前三名代理商是谁?
- 总结公司最新财报中的关键要点?
经典的RAG流程是借助检索器从知识库中查询问题相关(语义接近)的内容,并把这些内容作为LLM回答的上下文,从而得出最终答案。
现在,让我们考虑以下几个查询场景:
-
需要能够使用不同的检索技术来应对不同类型的查询问题。 如既能回答事实性查询(”xPhone手机详细参数“),也能回答总结性的问题(”总结下这篇论文要点“)
-
需要融合多个数据源的检索结果给出响应。 比如这样的查询:
”查询销量最高的三个代理商的摘要信息及其关联公司“
这里的问题是:
- 查询销量最高的代理商需要查询CRM系统的数据库
- 代理商的详细信息存储在非结构化文档中
- 关联公司的查询需要查询某个知识图谱数据库
单一的RAG检索与生成管道显然无法应对这样的问题。
-
需要结合外部工具来增强RAG管道的回答能力与响应质量。 比如这样一个查询任务:
“对比竞品公司产品与我公司产品,并总结媒体评论”
为了完成这个问题,你需要:
- 借助本地检索器,查询自身产品信息
- 借助Web搜索查询竞品信息
- 借助公开的API查询某些自媒体评论
这样的一个融合性查询任务也是单一RAG管道无法完成的。
- 希望RAG在检索相关数据后能够自我反思评估,必要时重新检索甚至改写问题。
这些都是在实际应用中可能会面临的需求,经典的RAG方案在面临这些场景时会捉襟见肘,因此更“Agentic”的RAG出现了。
02
什么是Agentic RAG?
Agentic RAG就是一种融合了Agent能力的RAG,而Agent的核心能力是自主推理与行动。所以 Agentic RAG就是将AI智能体的自主规划(如路由、行动步骤、反思等)能力带入到传统的RAG,以适应更加复杂的RAG查询任务。
Agentic RAG如何应对这些典型的复杂任务?一起来看。
- 在不同类型的RAG管道间自主选择(路由),以适应任务的多样性:
- 融合多种类型的RAG管道与数据源,以适应综合性复杂查询任务:
- 与必要的外部工具协作,以增强输出的准确性:
整体来说,Agentic RAG的“智能体”特征主要体现在检索阶段,相对于传统RAG的检索,Agentic RAG更能够:
- 决定是否需要检索
- 自主决策使用哪个检索引擎
- 自主规划使用检索引擎的步骤
- 评估检索到的上下文,并决定是否重新检索
- 自行规划是否需要借助外部工具
03
Agentic RAG VS 传统RAG
Agentic RAG在整体流程上与传统RAG一脉相承:检索-合成上下文-生成,但由于融入了Agent的自主能力,从而具有更强的适应性与任务质量。
这里的传统RAG指遵循“检索-上下文-生成”单一顺序流程的RAG应用。随着开发框架的不断完善,当前一些常用的高级RAG模块已经具备了部分Agentic的特征,比如:语义路由、多步骤查询转换、子问题查询转换等。
传统单一流程RAG | Agentic RAG | |
场景 | 数据环境简单、任务单一 | 企业级数据环境,任务多样 |
数据源 | 通常基于单个检索引擎 | 通常基于多个检索引擎 |
索引 | 向量索引为主 | 可灵活结合多种索引 |
检索规划 | 无规划或静态规则 | 动态规划下一步检索策略 |
多步检索 | 通常不支持 | 借助多步骤推理自主实现 |
外部工具 | 通常不支持 | 自动推理使用必要的工具 |
反省机制 | 通常不支持 | 借助反省优化问题或重新检索 |
灵活性 | 不够灵活,流程固定 | 自主推理,或灵活编排 |
04
Agentic RAG技术架构
与顺序式的传统RAG架构相比,Agentic RAG的核心是Agent,而RAG管道(通常是检索器,也可能是完整的RAG查询引擎)则可以看作是Agent使用的一种工具,从而完美的融合到Agent的架构中。
从这个角度说,Agentic RAG是RAG,但更是Agent。 从技术架构看,也存在单Agent架构与多Agent架构。
【单Agent的Agentic RAG】
在这个架构中,只有一个具有自主能力的Agent。RAG管道与外部工具都作为Tool提供给Agent,Agent根据输入问题规划与决策这些工具的使用,检索与累积更全面的上下文,最后输出全面而准确的结果。
如果这里的Agent每次规划只会选择一个后端RAG检索管道,那么也就退化成了一个语义路由器模块。
【多Agent的Agentic RAG】
这是一个多层的Agent架构:一个顶层的Agent负责协调多个二级Agent,每个二级Agent再负责特定领域或特定类型的检索或查询任务,可以根据需要灵活划分不同Agent的职责。
比如,你可以这样设计:
- Agent1负责企业内部知识库的检索。协调使用多个不同索引类型的检索器,如向量、知识图谱、甚至SQL检索。
- Agent2负责客户相关数据的检索任务。协调使用多个不同地区客户数据的检索器。
- Agent3负责借助各种工具从互联网检索必要的外部信息。
- 顶层的Agent则负责管理与协调使用上面三个Agent来共同完成复杂查询任务,实现任务拆分、派发与搜集结果,并最终响应用户。
多Agent的Agentic RAG架构具备更大的灵活性,实际开发中,你可以对不同的Agent进行单独规划、实现与调试,最后组合成一个更完备的RAG系统,提供超越传统的查询能力。
05
总结
Agentic RAG通过将智能体的核心能力引入到传统RAG,借助Agent的规划与推理能力,极大的增强了RAG检索的全面性、灵活性与准确性,使得能够 执行更复杂与多样的数据密集型的查询任务,激发了RAG应用的新潜力。
当然,进步也伴随着挑战。利用智能体思想完成复杂任务也带来了对LLM的更深层依赖,引发了新的响应延迟与不确定性的问题。因此,在开发和使用 Agentic RAG 系统时,需要审慎考虑其优劣,以实现更高效和可靠的应用。
Agentic RAG的实战案例,请参考早先的文章:
手把手教你构建Agentic RAG:一种基于多文档RAG应用的AI Agent智能体
END
福利时间
为了帮助LLM开发人员更系统性与更深入的学习RAG应用,特别是企业级的RAG应用场景下,当前主流的优化方法与技术实现,我们编写了 《基于大模型的RAG应用开发与优化 — 构建企业级LLM应用》 这本开发指南,与大家一起来深入到LLM应用开发的全新世界。
更多细节,点击如下链接了解
现在购,享 50%折扣
交流请识别以下名片