ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

超越RAG:Agentic RAG架构设计与落地实践指南

超越RAG:Agentic RAG架构设计与落地实践指南 简介《超越RAG迈向智能体时代的Agentic RAG》PPT课件围绕大模型检索增强生成的前沿演进展开适合AI研究者、算法工程师及对RAG技术感兴趣的学习者阅读。内容从传统RAG的检索-生成流程讲起逐步过渡到Reasoning RAG与Agentic RAG系统说明如何通过动态选择检索策略、迭代优化和模块对齐来缓解LLM“幻觉”、扩展知识边界。其中细述了检索器与重排器的协同机制以及Retrieve、IsRel、IsSup、IsUse等反思标记驱动的自适应检索增强生成并延伸至自适应RAG、自我反思RAG与探针引导控制RAG等改进方法。资源为单一PPT文件压缩包大小14.93MB已有186人学习下载。整份课件结构清晰、案例直观如詹姆斯夺冠次数问答对比可作为团队技术分享或个人系统学习的参考。项目标题: 超越RAG迈向智能体时代的 Agentic RAG.pptx项目正文: 从传统RAG到Agentic RAG的演进思路涉及知识库构建、智能体编排、检索增强生成、RAG评估等核心内容关键词: RAG, Agentic RAG, 智能体, RAG知识库, 智能体开发, RAG评估方案摘要描述: 本文从一个实践者的角度拆解传统RAG的瓶颈、Agentic RAG的架构设计与落地实操并分享评估方法与避坑经验。先聊个现象。2024年那阵子几乎每个做AI应用的人都在搭RAG文档切一切、向量化塞进数据库、用户问一句就召回Top-K拼进Prompt看起来挺美跑起来总差点意思。到了2025年Agentic RAG这个词开始频繁出现GitHub上相关的开源项目也越来越多。它不是RAG的替代品而是把RAG从“一次检索一次生成”升级成“智能体自主决策、多轮工具调用”的完整链路。这篇内容我就想围绕这个主题结合我自己在知识库问答、智能体开发上的实操经历聊聊传统RAG为什么不够用、Agentic RAG到底怎么设计、落地要注意什么以及评估怎么做才靠谱。不管你是刚接触RAG的小白还是已经在做智能体开发的工程师这篇内容应该都能给你一些可落地的参考。1. 从传统RAG到Agentic RAG瓶颈到底在哪1.1 传统RAG的三个尴尬时刻传统RAG的经典流程很清晰文档清洗、分块、Embedding建索引用户提问时做向量检索召回Top-K把上下文塞给大模型生成答案。这套流程在简单问答场景下确实够用但你一旦把它扔到真实业务里很快就遇到三个尴尬时刻。第一个尴尬是单轮检索扛不住复杂问题。比如用户问“我们公司去年第三季度华南区所有项目的回款率是多少跟第二季度比变化大吗”这问题里既有时间过滤条件又有多项目聚合还带着比较分析。传统RAG做一次向量检索召回来的可能是某个项目的零星片段根本凑不齐回答所需的全部事实。模型再聪明喂进去的料不全也只能东拼西凑、胡编数字。第二个尴尬是语义理解停留在字面。向量检索算的是“语义相似度”但“语义相似”不等于“逻辑相关”。用户问“哪个产品的退货率最高为什么”检索回来的top结果可能是一篇讲“退货流程优化”的文章字面上跟“退货”强相关却完全没回答“最高”和“为什么”这两个核心诉求。你会看到大模型一本正经地拿无关内容凑答案也就是所谓的“幻觉”。第三个尴尬是无法处理多步推理任务。传统RAG没有“先查A再基于A的结果查B”的能力它只有一轮“查完就答”。但真实业务问题往往是链式的先查有哪些客户投诉再按投诉类型分组再去查对应产品的维修记录最后才能给出结论。每一步之间是强依赖关系一步结果错了后面全崩。我习惯把传统RAG比作“派一个实习生去资料室查资料只允许他跑一趟、拿一摞纸回来”。他会啥他会把最像的那几页复印给你但不会主动去查阅第二层资料、不会追问、不会交叉验证。在信息简单的场景下这一趟就够了但业务问题稍微绕一点就全露馅。1.2 Agentic RAG的核心思路把“检索”变成“行为”Agentic RAG跟传统RAG最大的区别不在于用了多牛的检索算法而在于把检索决策交给了智能体。智能体Agent本身还是那个大模型但它的任务不再是“根据给定资料直接回答”而是“围绕用户问题制定计划、选择工具、执行检索、观察结果、调整策略直到拿到足够信息再回答”。举一个我在实际项目里做过的例子。用户问“帮我写一份客户投诉分析周报重点说清楚投诉最多的三个产品以及共性原因。”传统RAG的流程是检索“客户投诉分析”相关文档拼进Prompt让模型写。结果往往是泛泛而谈因为单次检索根本找不全“投诉数据明细”和“产品维修报告”这两个不同来源的资料。换成Agentic RAG智能体自己会规划先调用“投诉数据查询工具”按周维度聚合投诉量找出Top 3产品再针对这三个产品调用“维修记录查询工具”最后把两轮结果整合、归因写出周报。整个过程里工具是什么、先查什么、再查什么全部由智能体根据问题内容动态决定。这种“思考-行动-观察”的循环英文里叫Reasoning and Acting业界简称为ReAct模式。它把大模型的能力从“阅读器”升级成了“研究员”。阅读器只能读你给它的材料研究员会自己去图书馆查书、翻期刊、做笔记最后还要交叉验证一下再写结论。Agentic RAG要的就是这种效果。当然把检索变成行为也意味着更高的复杂度智能体可能调用多次工具、产生更多token消耗、引入更多失败节点。所以不是所有场景都需要Agentic RAG。如果业务问题就是“某操作手册的某一步怎么做”这种单点查询传统RAG更快更省。判断要不要上Agentic RAG就看问题是否满足两个条件一是需要多源信息整合二是需要多步推理链条。2. Agentic RAG的架构设计与技术选型2.1 规划层ReAct模式与Plan-and-Execute模式在Agentic RAG的实际落地中最核心的部分是“规划”。你需要先确定智能体如何拆解任务、如何决定检索动作的先后顺序。目前业界主流有两条路线各有优缺点我分别说说。第一条是ReAct模式。它的核心是“边想边做”让智能体在每一轮都输出一个Thought思考原因、一个Action要调用的工具和参数和一个Observation观察结果直到它认为信息足够了才输出Final Answer。这种模式非常灵活能应对任务执行过程中出现的各种意外比如第一次检索没找到东西它自己会换个关键词再试一次。缺点是token消耗偏大而且如果模型能力不够强可能出现规划混乱、来回打转的情况。我在项目里用GPT-4级别以上的模型跑ReAct效果可控换成小模型就经常看到它反复调用同一个工具完全没进展。第二条是Plan-and-Execute模式。思路是让智能体先针对用户问题生成一份完整的执行计划再按计划逐个步骤执行。什么场景适合它工作任务相对固定、步骤可预期的时候比如“每周自动生成数据分析报告”。这种情况下先规划再执行的好处是结构清晰、中途不容易跑偏。缺点是不够灵活一旦执行中遇到计划外的情况智能体往往不知道如何变通卡在中间就得人工干预。在实际工程里我倾向于混合路线先用Plan模式把任务拆解成几个大阶段每个阶段内部再用ReAct模式自由探索。比如生成投诉分析报告这个任务第一阶段“查数据”用ReAct让智能体自己找报表工具、筛选条件第二阶段“归因分析”还可以调用另一个检索Agent去查产品资料。这种分层设计在复杂的业务场景中鲁棒性更高不会因为一个小步骤失败导致全盘崩溃。业界像LangChain的LangGraph框架基本就是为这类编排设计的你把节点定义好让模型在节点之间跳转既能控制复杂流程又保留了动态决策空间。2.2 工具层设计检索不只是向量搜索讲到Agentic RAG就绕不开工具Tool层的设计。不少人以为Agent调用工具就是“查向量库”其实早期我也这么干后来发现远远不够。一个成熟的Agent检索工具层至少应该包含下面几类**向量检索Dense Vector Search**是基础负责语义召回。但要注意设置相似度阈值低于某个分数就直接返回“未找到”别硬塞给大模型。实践中我把阈值设在0.55到0.7之间具体看Embedding模型而定跑一轮测试集才敢定准。**关键词检索BM25**依然有价值尤其是处理代码片段、型号名称、订单号这类专有名词。向量检索对这些精确字符串往往不敏感BM25反而一抓一个准。成熟的方案里通常是混合检索向量和BM25各走一路再通过RRFReciprocal Rank Fusion合并排序。这个做法不要偷懒效果提升非常明显。SQL工具我在知识库问答之外的Agent项目里用得很多。用户问“上个月销售额TOP10的客户有哪些”与其把客户表全部向量化去搜不如让Agent直接把SQL语句写好、去数据库执行一下拿回来的才是真正准确的答案。这一步的本质是“数据查询”和“文档检索”分离各干各擅长的事。**Graph RAG图搜索**是最近很火的方向。它的思路是先把实体和关系抽取出来构建成知识图谱再通过图结构扩展检索范围。比如查询“A公司和B公司之间有几次合作”向量检索可能只找到两篇提到对方的文章Graph RAG却能把两个实体的多跳关系都捞出来回答质量和可解释性都高一大截。缺点是构建和维护图谱的成本高适合那些实体关系密集且高频查询的领域比如医疗知识库、法律条文库。工具层设计的关键不只是接多少数据源而是给智能体足够的工具说明。每个工具要把名称、功能、输入参数、返回值结构写清楚。以我在Dify和LangChain里的经验工具描述写得越细模型选错工具的概率就越低。你总不能怪模型不会用你那个叫“query_data”但没说明是干嘛的函数是吧。2.3 记忆模块多轮交互不失忆的关键很多人在做Agentic RAG时忽略了一个东西记忆。这不光指对话历史还包括智能体在当前任务中的中间状态。你想想如果Agent已经完成了第一步检索拿到了结果结果模型上下文里的内容一滚动之前的结论被挤掉了它后面怎么整合答案所以记忆模块是Agentic RAG里我最强调的部件之一。记忆分两层。短期记忆就是上下文管理把对话历史、工具返回结果、推理轨迹都放在模型窗口里。这里有个坑就是上下文过长导致模型注意力分散。我的建议是对历史信息做压缩把之前的结论提炼成一段摘要塞回上下文而不是把全部tool日志都堆进去。另一个技巧是把“关键数据”存进临时变量里比如“this_turn_facts”后面需要时再手动注入当前Prompt这样就不会被模型滚动历史冲掉。长期记忆是跨会话的状态存储。比如用户告诉过智能体自己团队的业务偏好或者历史会话里已经查过某个项目的背景下一轮再问时应该记得。我常用两种方案一种是把长期记忆向量化需要时做一次召回另一种是结构化存进数据库按用户ID或者Session ID关联。更复杂的场景中还可以让智能体自己去判断“这段信息以后可能还会用到”然后主动写入长期记忆。这个设计在销售智能体、客服智能体场景里价值尤其大因为这类场景高度依赖对客户意图和历史的连续理解。3. 实操基于Dify快速搭建Agentic RAG工作流3.1 为什么选择Dify作为落地工具理论说了不少接下来讲落地。我在做Agentic RAG原型验证时最常用的工具是Dify原因很实在它把知识库管理、Agent编排、工具接入、日志追踪都放在一个平台里能让团队把精力集中在Agent逻辑和检索质量上而不是折腾基础设施。Dify里的核心概念有这么几个知识库用来上传和处理文档Agent应用用来定义大模型的行为工具用来让Agent调用外部能力工作流则适合编排有固定流程的多步骤任务。对我们做Agentic RAG来说最常用的组合是“知识库 Agent节点 自定义工具”。如果你只是想快速验证想法这个组合足够跑通端到端后面再考虑迁移到LangChain这类代码框架。3.2 搭建步骤与关键参数配置我以“企业内网政策问答助手”为例实际演示一套完整的Agentic RAG搭建过程。这个场景是典型的知识库问答同时需要跨文档对比非常适合Agent来处理。第一步准备知识库。把政策文档上传到Dify选择分段模式时注意“父子分块”父块按章节切子块按小段切。检索时召回子块返回答案时带上父块上下文。这个细节对回答质量影响很大因为单个子块信息量往往不够没有父块上下文就只能猜。第二步配置Embedding模型和检索模式。我推荐用混合检索向量全文相关性设置为“高相关性”档位Top-K设在5到8之间。太低漏信息太高噪声大。跑几轮测试之后你可以自己调不用迷信默认值。第三步创建Agent应用。模型选推理能力强的比如GPT-4o或Claude系列不要为了省钱上小模型后面你会发现在工具选择和规划上全是坑。在System Prompt里把Agent的工作流程写清楚先判断问题是否需要查询知识库、再选择合适工具、检索结果不够则换关键词重试、最后基于检索结果回答并标注引用来源。这一段Prompt是整个Agent的行为准绳要反复打磨。第四步把知识库作为工具接入Agent。在Dify里Agent可以使用知识库工具这一步是Agentic RAG与传统RAG的分水岭Agent会自主决定要不要检索、检索几次。你还可以挂一个“计算器”或者“SQL查询器”之类的额外工具让它具备多工具协作能力。第五步做参数调试。Top-K与Score阈值是绕不开的两个调节点。Score阈值太高Agent经常说“找不到相关内容”太低呢又会导致拿垃圾信息凑数。我的经验是先跑20条有代表性的测试问题统计召回内容的分数分布再把阈值设在“正确内容最低分”和“错误内容最高分”之间尽量拉开间隔。在最近的一个项目里MiniLM模型的阈值设到0.42效果不错换了bge-m3之后我重新标定到0.58可见这参数不能一套用到底。模型温度设置在0.2附近太低没创造性太高会胡编格式。最大迭代次数我建议限制在8次以内防止智能体陷入无意义循环既浪费时间又烧token。3.3 用LangChain手写一个Agentic RAG的最小实现如果你习惯用代码控制细节LangChain是一个更自由的选择。这里给出我项目里用过的极简结构帮你理解Agentic RAG的代码骨架from langchain.agents import create_react_agent, AgentExecutor from langchain.tools import Tool from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain.prompts import PromptTemplate # 1. 准备检索工具 def retriever_tool(query: str) - str: docs vectorstore.similarity_search_with_score(query, k5, score_threshold0.55) if not docs: return 未找到相关文档请尝试更换关键词。 results [] for doc, score in docs: results.append(f[来源] {doc.metadata.get(source)}\n{doc.page_content}) return \n\n.join(results) tools [ Tool( name知识库检索, funcretriever_tool, description用于查询企业内部政策文档输入为自然语言问题输出为相关文档片段。 ) ] # 2. 定义ReAct Agent llm ChatOpenAI(modelgpt-4o, temperature0.2) prompt PromptTemplate.from_template( 你是一个严谨的问答助手。请一步步分析用户问题并在必要时调用工具检索资料。 如果首次检索结果不足请换一个角度重新表达问题再调用工具。 最终回答必须基于工具返回的内容并标出引用来源。 工具列表: {tools} 工具名称: {tool_names} {agent_scratchpad} ) agent create_react_agent(llmllm, toolstools, promptprompt) executor AgentExecutor(agentagent, toolstools, max_iterations8, verboseTrue) # 3. 执行查询 result executor.invoke({input: 员工年假休不完可以累积到下一年吗需要提供哪些审批}) print(result[output])这段代码里最值得关注的不是框架API而是工具描述和System Prompt。工具描述直接决定了模型会不会在需要时调用它System Prompt里我刻意写了“如果首次检索结果不足请换一个角度重新表达问题再调用工具”这一句话就开启了Agent的“自我纠正”能力。实际测试中加这句话后回答准确率能提升十几个百分点。我的习惯是先用Dify做原型验证快速看到效果、发现问题再迁移到LangChain或LangGraph里面做精细化控制。两个工具各有擅长Dify适合非工程背景的人快速启动代码框架适合对性能和流程有强定制需求的团队。没有必要二选一它们是同一条路径上的不同阶段。4. Agentic RAG评估怎么做别只盯准确率4.1 核心评估指标从RAGAS到Agent专项指标RAG系统上线之前必须做评估这一点很多团队忽略了。传统RAG的评估框架里RAGAS提了三个指标忠实度Faithfulness检查答案是否忠于检索到的上下文有没有脑补答案相关性Answer Relevance检查回答是否对上了用户问题上下文相关性Context Relevance检查召回的文档有没有答非所问。到了Agentic RAG阶段仅靠这三个指标远远不够。Agent引入工具调用和多轮推理之后还应该加测几个维度任务完成率看Agent有没有真正把用户的复杂问题完整解决掉工具调用成功率看模型选工具、传参数的正确率无效轨迹次数看它有没有陷入反复检索同一个词的死循环端到端耗时和成本看多Agent编排会不会让延迟和token成本变得不可接受。我见过有团队做Agentic RAG准确率确实从70%提到了85%但单次请求的token消耗涨了3倍延迟从1秒变7秒。这种情况你就需要权衡是能力提升带来的收益大还是成本和体验的损失大。4.2 测试数据集设计与评估执行做评估数据集设计是最关键的一环。我在项目里会按难度把测试问题分成几个等级单跳问题一个事实就够、多跳问题需要关联多个文档、多条件限制问题时间地区品类、否定式问题“我们没有做过的项目是哪些”、时间敏感问题“去年”和“截至上季度”。每一类都想至少10个形成一个几十条规模的评测集。这些问题哪里来最好的来源是历史对话日志里的真实用户问题其次是让业务方按自己的query习惯出题。纯粹的模型生成问题往往太“标准”测不出边界情况。评估的执行方式早期可以让测试人员人工打分缺点是慢且主观。我现在的习惯是搭一个自动化评测流程先跑一遍Agent把所有问答对和工具调用日志记录下来然后用一个大模型比如GPT-4o作为裁判按照预设的评分标准逐条打分。裁判模型本身也是不完美的所以还需要每批抽20%的样本人工复核防止分数失真。这里有一个很多人踩过的坑评估数据集一旦固定模型就跑分“过拟合”了。你开始针对评测集调Prompt和参数分数会一路上涨但换个新领域、新文档效果立刻打回原形。所以评测集要定期更换至少每个迭代周期加10个新问题避免模型被“驯化”成只会答测试题的选手。5. 常见问题与排查技巧实录5.1 Agent陷入死循环反复调用同一个工具这是我在Agentic RAG项目里遇到最多的故障表现是Agent不断用几乎一样的问题去查知识库日志里能看到工具被调用了七八次输入还都差不多。原因基本有三种上下文里的检索结果没有真正进到模型的“认知”里提示词里没说清楚“检索不到时应该换个方式查”最大迭代次数设得太大。我的排查步骤是先看工具返回内容是否为空如果为空那说明是检索质量的问题去调Score阈值和Top-K如果返回内容非空但Agent就是不基于它作答那就是提示词没约束住需要在System Prompt里强调“你必须优先使用工具返回的内容作为依据除非工具明确返回未找到否则不得复述自己的常识”。然后把max_iterations从默认值降到一个合理的区间。这个故障排查完之后记得去检查一下日志中工具调用里有没有重复query的情况如果出现非常相似的重复词需要在提示词中增加“不要在同一把工具上连续重复调用超过2次”的限制。5.2 检索结果里明明有正确答案Agent却说不知道这种问题通常出现在分数阈值设得太严格或者Top-K太小的场景里。Agent看到召回结果为空或只有一个无关片段就会老老实实说“我不知道”。我一开始也以为是模型出了问题后来查看工具日志才发现是Embedding模型给正确文档打了0.48分低于我设定的0.55阈值被过滤掉了。排查方法是把Score阈值调低一点或者把语义检索的返回上限调高一些。但如果你的检索本身就有问题阈值再低也救不回来动手检查一下分段有没有把上下文拆散、Embedding模型是不是跟文档语言不匹配。这类问题最有效的预防手段就是混合检索加入BM25能在很大程度上补足向量检索的不足。5.3 工具参数传错或选错工具我在一个客服Agent里给工具命名成“query_order_status”描述里写了“用于查询订单状态”但Agent在用户问“我的订单到哪了”时还是会去调用“query_product_info”。后来我把工具描述改成“当用户询问物流、快递、收货时间时使用本工具”并附上参数说明示例选错率立刻降了很多。对大模型来说工具描述越具体、越有场景化范例它选择正确的概率就越高。参数传错的常见原因是工具输入参数命名本身不直观例如把时间参数命名为“period_start”而不是“start_time”模型就容易搞混。我的习惯是在参数描述里给出示例值和取值范围把这个工夫做足大部分传参错误都能避免。5.4 常见问题速查表问题现象可能原因排查思路与解决方案Agent反复调用工具无进展提示词未约束重试策略迭代上限过高修改提示词限制单工具连续调用次数调低max_iterations召回为空导致Agent答不上来Score阈值过高、Top-K过小调低阈值、增大Top-K或启用混合检索兜底回答内容与检索结果无关System Prompt缺少约束、上下文被压缩过度强化Prompt对工具结果的依赖约束检查摘要压缩是否丢信息工具参数总是传错工具描述不够具体、参数命名有歧义重写工具描述附参数示例和格式要求参数名要语义化多轮对话后Agent“失忆”长期记忆未写入短期记忆被截断引入长期记忆存储关键结论写入记忆变量必要时先检索记忆再回答问题6. 写在最后的个人体会把RAG升级成Agentic RAG本质上不是换来一个新的检索框架而是换了整套做问答系统的思路你不再追求“一次检索就能解决问题”而是接受“答案来自多步探索并且每次探索都在修正方向”。这个转变在实际项目中给我带来的感受是全方位的一方面回答复杂问题的能力确实上了一个台阶另一方面调试成本也明显变高了你不再只是调“检索参数提示词”还得随时盯住Agent的整条推理轨迹。如果让我给正在考虑这个方案的人一个建议我会说先别急着上智能体编排。第一步先把自己的传统RAG做扎实确认文档切分合不合理、Embedding模型选对没有、混合检索加没加、Score阈值调没调好——这些东西不做好Agent只是把错误放大得更优雅。先跑通一层好用的RAG再给它接上规划和工具调用的“手脚”你会发现Agentic RAG的威力真正爆发出来了。这既是我踩过很多坑之后的经验也是这套方法最稳妥的落地路径。本文还有配套的精品资源点击获取
返回列表