news 2026/5/28 21:52:26

Agent系列(七):知识库集成——Agent 调用 RAG 的正确姿势

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent系列(七):知识库集成——Agent 调用 RAG 的正确姿势

RAG 遇上 Agent,不只是"给 LLM 接个搜索框"

很多人第一次接触 RAG,都是这个用法:用户问一个问题 → 检索知识库 → 把结果塞进 Prompt → LLM 生成回答。

这个模式叫Pipeline RAG。它有效,但有个根本问题——它不思考

Pipeline RAG 对每一个问题都执行检索,不管这个问题是问"WonderBot 订阅多少钱"(确实需要查知识库),还是问"Python 列表怎么求平均值"(LLM 自己就知道)。它像一个只会一招的工人:不管手头的活是什么,都先去仓库跑一趟。

Agentic RAG解决的是这个问题:让 Agent 自己判断何时检索、检索什么、检索完是否够用

本篇聚焦三个核心能力:

  1. 检索决策:这个问题需要查知识库吗?
  2. 多知识库路由:需要查,但查哪一个?
  3. 质量门控 + Fallback:查完了,够用吗?不够怎么办?

Pipeline RAG vs Agentic RAG:架构层面的本质区别

先看两种架构的对比:

Pipeline RAG(每次必检索): 用户问题 ↓ 向量检索(无论问题类型) ↓ 结果注入 Prompt ↓ LLM 生成 Agentic RAG(智能决策): 用户问题 ↓ [决策节点] 这个问题需要检索吗? ├─ 不需要 → LLM 直接回答(常识/数学/通用编程) └─ 需要 → 查哪个知识库? ├─ product_kb(产品功能/价格) ├─ ops_kb(部署/运维/监控) └─ faq_kb(账号/退款/发票) ↓ 检索质量够用吗? ├─ 够 → LLM 生成 └─ 不够 → 重写查询 → 重试(最多 2 次)→ LLM 生成

关键差别:LLM 是控制中心,不是下游的文本生成器


Demo 1: Pipeline RAG vs Agentic RAG 核心差异

用 5 个问题对比两种模式:3 个需要查知识库,2 个不需要(通用常识、数学计算)。

Pipeline RAG 实现

defpipeline_rag(question:str)->dict:"""Pipeline RAG:检索→注入→生成,永远不跳过检索步骤"""docs=unified_retriever.invoke(question)context="\n".join(d.page_contentfordindocs)answer=_ask(f"根据以下参考资料回答问题,若资料无关请基于资料内容作答。\n参考:{context}",question,)return{"answer":answer,"retrieved":True,"docs":len(docs)}

注意那个若资料无关请基于资料内容作答——当知识库内容和问题完全不相关时,这个 Prompt 会让 LLM 产生奇怪的行为:要么强行把不相关内容和答案混在一起,要么输出"根据参考资料,无法回答您的问题"。

Agentic RAG 实现

defagentic_rag(question:str)->dict:"""Agentic RAG:先决策,再(选择性)检索"""# Step 1:Agent 决定是否需要检索decision=_ask("判断以下问题是否需要查询知识库才能回答。\n""需要检索的场景:产品定价/功能、运维操作、用户服务政策\n""不需要检索的场景:常识问题、数学计算、通用编程知识\n""只输出 yes 或 no",f"问题:{question}",).strip().lower()if"yes"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 21:48:09

ThinkPad开机报错0183/0191/0199?别慌,三步教你进BIOS按F10搞定

ThinkPad开机报错0183/0191/0199?三步急救指南每次开机看到屏幕上跳出一串神秘数字,就像收到一封看不懂的加密电报。特别是ThinkPad经典的0183、0191、0199这类报错,明明急着用电脑,却被卡在开机界面动弹不得。别急着送修&#xf…

作者头像 李华
网站建设 2026/5/28 21:39:07

LeetCode 133:克隆图 | BFS/DFS

LeetCode 133:克隆图 | BFS/DFS引言 克隆图(Clone Graph)是 LeetCode 第 133 题,难度为 Medium。题目要求深拷贝一个无向图。 算法实现 def cloneGraph(node):if not node:return Nonevisited {node: Node(node.val)}queue [nod…

作者头像 李华
网站建设 2026/5/28 21:31:00

qmcdump:QQ音乐加密音频格式转换实战完整指南

qmcdump:QQ音乐加密音频格式转换实战完整指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经从Q…

作者头像 李华
网站建设 2026/5/28 21:30:58

3分钟从视频中智能提取PPT:免费开源工具完全指南

3分钟从视频中智能提取PPT:免费开源工具完全指南 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 还在为从视频中手动截图PPT页面而烦恼吗?现在,有…

作者头像 李华
网站建设 2026/5/28 21:30:01

CANN hixl零拷贝通信在Prefill/Decode分离推理中的实战

前言 PD分离架构下,Prefill节点与Decode节点之间存在频繁的KV Cache传输。每次自回归迭代,Decode节点都需要从Prefill节点获取当前层的Key和Value张量,然后用Attention机制计算上下文向量。如果走标准TCP Socket,流程是&#xff…

作者头像 李华