让 Agent 自己决定何时查知识库: Agentic RAG(RAG × Agent 合流)
008–010 的 RAG 有个「一根筋」的毛病不管你问什么它都先去检索一遍。你说句「你好」它也一本正经地去翻知识库你问一个需要两步资料的复杂问题它却只检索一次、抓不全。问题的根源在于——检索是被写死在流程里的。今天我们把这个决定权交还给模型把检索变成一个它可以调用、也可以不调用的工具。一行流程的改动让 RAG 从「死板管道」升级成「会思考的助手」。01普通 RAG 的「一根筋」回顾 008 的流程问题 → 必然检索 → 拼 prompt → 生成。检索是无条件发生的。这带来三个尴尬该省的没省闲聊、问候、常识题也去查库浪费一次检索还可能把不相关的资料塞进上下文干扰模型。该多的没多「生鲜能退吗退款几天到账」是两个子问题一次检索的 top-k 未必同时覆盖答案就残缺。该变的没变用户问得很口语直接拿去检索效果差理想情况该先把问题改写成更好的查询。02核心转变把「检索」变成一个工具解法优雅得出奇不再写死「先检索」而是把检索包成 011 那样的一个工具叫它search_kb丢进 Agent 循环。于是决定权回到模型手里普通 RAG问题 → 必然检索 → 答Agentic RAG问题 → 模型决定要不要查 / 查什么 / 查几次→ 答‍ 一句话类比普通 RAG 像个只会翻手册的新人你问什么他都先翻一遍手册再开口哪怕你只是说「早上好」。Agentic RAG 像个老练的客服简单的当场答拿不准的才去查资料复杂的会分几次查、还会换着关键词查。会不会「按需查证」就是新人和老手的差距。03动手把 009 的检索接进 011 的循环我们几乎不用写新东西——把 009 的 Chroma 检索包成工具塞进 011 的 agent 循环即可。关键在工具的description把「什么时候该查、什么时候别查」写清楚模型才能判断得准。import anthropic, chromadb client anthropic.Anthropic() # 复用 009 建好的持久化知识库 kb chromadb.PersistentClient(path ./chroma_db ).get_or_create_collection( support ) # 把检索包成一个工具——description 明确何时用/何时不用 tools [{ name : search_kb , description : ( 在公司知识库中检索资料。当问题需要依据公司文档 政策、产品、流程等才能回答时调用 闲聊、问候或常识问题不要调用。可多次调用以覆盖子问题。 ), input_schema : { type : object , properties : { query : { type : string , description : 检索用的查询语句 }}, required : [ query ], }, }] def run_tool (name, args): if name search_kb : docs kb.query(query_texts[args[ query ]], n_results 3 )[ documents ][ 0 ] return \n .join(docs) if docs else 未找到相关资料 return unknown toolAgent 循环和 011 一模一样——只是多给了它一个system指令交代整体行为def agent (user_input, max_turns 6 ): messages [{ role : user , content : user_input}] for _ in range (max_turns): resp client.messages.create( model claude-opus-4-8 , max_tokens 1024 , system( 你是客服助手。需要公司资料时用 search_kb 检索并据实回答 可为不同子问题多次检索资料没有就说\未找到\不要编造。 ), toolstools, messagesmessages, ) if resp.stop_reason ! tool_use : return next (b.text for b in resp.content if b.type text ) messages.append({ role : assistant , content : resp.content}) results [] for blk in resp.content: if blk.type tool_use : out run_tool (blk.name, blk.input) print ( f search_kb({blk.input[query]!r}) ) results.append({ type : tool_result , tool_use_id :blk.id, content :out}) messages.append({ role : user , content : results}) return 达到最大轮数 就改了一件事我们没发明任何新机制——只是把 008–010 里「写死的检索步骤」换成了 011 里「模型可选调用的工具」。控制权从代码转移到了模型。这一个转变解锁了下面所有的聪明行为。04见证差别同一套库两种反应跑起来你会看到模型对不同问题做出不同决策agentic_rag.py 你好呀 你好我是客服助手有什么可以帮您 # ← 没查库直接答 生鲜能退吗退款一般几天到账 search_kb(生鲜 退货 政策) # ← 自己拆成两次检索 search_kb(退款 到账 时间) 生鲜/定制类不支持 7 天无理由退款除非质量问题 退款在审核通过后 3 个工作日内原路退回。 1 加 1 等于几 2。 # ← 常识题也没浪费一次检索三个问题三种行为闲聊不查、复杂问题拆成多次查、常识题直接答。这些都不是我们写死的 if-else而是模型自己判断出来的——这正是 Agentic 的价值。05普通 RAG vs Agentic RAG普通 RAG008–010Agentic RAG今天检索时机每次必然检索模型自己决定要不要闲聊/常识也去查库浪费、易干扰直接答不查复杂/多跳问题只查一次可能不全可改写查询、多次检索扩展性只有检索一种能力可再加计算器、网络搜索…多工具协作代价快、便宜、可控慢、贵多轮、更难评估⚠️ 不是所有场景都该上 AgenticAgentic RAG 更聪明但每个问题可能要好几轮模型调用——更慢、更贵、行为更难预测评估也更难见 010。如果你的场景就是「固定问答、每问必查」朴素 RAG 又快又稳更合适。先用简单的遇到瓶颈再 Agentic 化——别为了炫技增加复杂度。06再进一步多工具协作一旦检索成了「工具之一」扩展就顺理成章——给它多个工具模型会自己编排比如问「按我们的报销标准这张 1280 元的机票能全额报吗」——模型可能先search_kb查报销政策再calculator算超额部分最后综合作答。检索、计算、搜索……模型像调度员一样按需组合。这也是把 006 说的「长期记忆/知识」真正融进 Agent 的方式。07常见坑⚠️ Agentic RAG 特有的翻车点①该查不查模型有时会凭训练记忆硬答、跳过检索 → 幻觉。对策在system和工具 description 里强调「涉及公司/专有信息必须先检索」。②该停不停反复检索绕圈子。max_turns上限必备同 011。③工具描述含糊description 决定模型判断得准不准——把「何时用/何时别用」写具体比什么都管用呼应 005。④更难评估行为不固定010 的评估要覆盖「该不该检索」这一维度而不只是「检索到没到」。08今日小测验Q1 普通 RAG 和 Agentic RAG 最本质的区别是什么**答**检索的控制权。普通 RAG 把「检索」写死在流程里每次必然执行Agentic RAG 把检索变成一个工具交给模型自己决定要不要查、查什么、查几次。Q2 从 008–011 到今天我们其实只做了什么改动**答**把 009 的检索函数包成一个工具(search_kb)塞进 011 的 agent 循环并用 system/description 交代何时该查。没有发明新机制——只是把写死的检索步骤换成模型可选的工具。Q3 为什么说 Agentic RAG 不是永远更好的选择**答**它每个问题可能要多轮模型调用更慢、更贵、行为更难预测、更难评估。固定问答/每问必查的场景朴素 RAG 又快又稳更合适。先用简单的遇到瓶颈再 Agentic 化。Q4 该查不查、凭记忆硬答这个坑怎么缓解**答**在 system 指令和工具 description 里明确要求涉及公司/专有/时效信息必须先调用 search_kb 检索不得凭训练记忆作答配合评估覆盖该不该检索这一维度来监控。09小结 下一站 带走这一句Agentic RAG 把「检索」从写死的流程步骤变成 Agent 可调用的一个工具。控制权一交给模型它就能按需查证闲聊不查、复杂问题多查、还能和计算器/搜索等工具协作。代价是更慢更贵——所以按场景权衡别过度。至此实战季的 RAG 与 Agent 两条线正式合流。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

Godot 4.2 AstarGrid2D实战:战棋游戏移动范围高亮与四种对角线模式详解

Godot 4.2 AstarGrid2D实战:战棋游戏移动范围高亮与四种对角线模式详解

1. 项目概述:为什么战棋游戏的“行动力范围”是个技术活? 做战棋游戏,尤其是那种走格子的经典类型,玩家最核心的体验之一就是“我能走到哪儿?”。一个清晰、准确、响应迅速的行动力范围高亮,不仅仅是UI的一…

2026/10/26 12:55:16 阅读更多 →
如何在5分钟内安全使用GTA5游戏辅助工具:YimMenu完整指南

如何在5分钟内安全使用GTA5游戏辅助工具:YimMenu完整指南

如何在5分钟内安全使用GTA5游戏辅助工具:YimMenu完整指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/Y…

2026/10/26 12:57:08 阅读更多 →
Redis布隆过滤器实现与优化实战指南

Redis布隆过滤器实现与优化实战指南

1. Redis布隆过滤器实现方案解析 布隆过滤器(Bloom Filter)本质上是一种概率型数据结构,用于快速判断某个元素是否存在于集合中。它的核心优势在于空间效率和查询速度,但存在一定的误判率(false positive)。…

2026/10/25 12:12:52 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →