【Agent笔记 | 第四篇】Agentic RAG

目录

[1. Agentic RAG 与 传统 RAG 的核心区别](#1. Agentic RAG 与 传统 RAG 的核心区别)

[2. Query Rewrite(查询重写)算不算 Agentic?](#2. Query Rewrite(查询重写)算不算 Agentic?)

[3. 多轮检索(Multi-turn Retrieval)如何设计?](#3. 多轮检索(Multi-turn Retrieval)如何设计?)

[4. 检索失败后 Agent 应该怎么调整策略?](#4. 检索失败后 Agent 应该怎么调整策略?)

[5. Agentic RAG 的成本和稳定性问题怎么控制?](#5. Agentic RAG 的成本和稳定性问题怎么控制?)


1. Agentic RAG 与 传统 RAG 的核心区别

两者的根本差异在于控制流(Control Flow)的主导权

  • 传统 RAG (流水线式): * 架构: 线性且静态(Query -> 检索 -> 组装Prompt -> LLM生成)。

    • 特征: 无论问题多复杂,都只执行一次检索和一次生成。LLM 被动接收检索到的上下文,如果检索回来的内容是垃圾,LLM 产出的也是垃圾(Garbage in, garbage out)。
  • Agentic RAG (智能体式): * 架构: 动态且循环(基于 ReAct、Plan-and-Execute 等范式)。

    • 特征: LLM 作为"大脑"主动参与流程。它会评估 用户问题、规划 需要哪些信息、调用 不同的检索工具、判断检索结果是否足够,并决定是直接回答还是继续补充检索。

2. Query Rewrite(查询重写)算不算 Agentic?

结论是:视其驱动方式而定。 * 不算 Agentic(属于高级 RAG 技巧): 如果你的 Query Rewrite 只是一个固定的前置规则或单次 LLM 调用(例如:让 LLM 把用户的口语化提问改写为 3 个适合向量检索的关键词),这依然是流水线的一部分。

  • 算作 Agentic 的情况: 如果 Query Rewrite 是基于自我反思(Self-Reflection)触发的。例如,Agent 进行了第一次检索,阅读结果后发现没有命中答案,自主决定调整搜索词并重写 Query 进行第二次检索。这种具备"观察 -> 判断 -> 动作调整"的重写,就是典型的 Agentic 行为。

3. 多轮检索(Multi-turn Retrieval)如何设计?

设计高鲁棒性的多轮检索,通常依赖以下几个核心模块的配合:

  • 任务拆解 (Decomposition): 面对复杂问题(如"对比A公司和B公司2023年的营收增速"),Agent 首先将其拆解为子问题:"A公司2023年营收"、"B公司2023年营收"。

  • ReAct 循环 (Reasoning + Acting): * Thought: 我需要先找出A公司的营收。

    • Action: 调用财务数据库检索 "A公司 2023 营收"。

    • Observation: 获取到具体数字。

    • Thought: 接下来我需要找B公司的...

  • 记忆与状态管理 (State Management): 在多轮循环中,必须有一个统一的 Scratchpad(暂存区)记录"我已经知道了什么"和"我还需要查什么",防止 Agent 像无头苍蝇一样重复检索相同的内容。

4. 检索失败后 Agent 应该怎么调整策略?

一个成熟的 Agentic RAG 面对检索失败(如:返回为空、相似度极低、或提取不出有效信息)时,应该有一套梯度的 Fallback(降级/回退)策略:

  • 策略一:搜索词降维与泛化。 放弃精确匹配或长句匹配,提取核心实体。如果用户问"如何处理报错代码0x8000FFFF中的内存溢出",系统找不到完整案例,可以回退检索"0x8000FFFF"。

  • 策略二:切换检索路由(Router)。 向量检索(Dense Retrieval)找不到,可能因为需要的是精准匹配,Agent 应自主切换到 BM25/Elasticsearch 关键词检索;如果涉及实体关系,切换到知识图谱(Graph RAG)或 SQL 数据库查询。

  • 策略三:引入外部知识(Web Search)。 当本地知识库确实缺失时,Agent 判断权限后,调用 Google/Bing Search API 去公网寻找答案。

  • 策略四:反向澄清(Clarification)。 当系统发现用户的 Query 存在歧义或严重缺失条件导致无法检索时,Agent 应停止盲目尝试,主动向用户提问("请问您指的A系统是v1.0还是v2.0版本?")。

5. Agentic RAG 的成本和稳定性问题怎么控制?

这也是目前企业级落地最难跨越的门槛。Agentic RAG 的试错机制会导致 Token 消耗成倍增加,且容易陷入死循环。

成本控制 (Cost):

  • 大小模型协同 (Model Routing): 不要所有节点都用 GPT-4o 或 Claude 3.5 Sonnet。意图识别、简单的 Query 改写、判断检索结果是否相关的打分任务,可以使用微调过的本地小模型(如 Llama-3-8B 或 Qwen-7B)处理。只有最终的规划和长文总结才使用昂贵的大模型。

  • 语义缓存 (Semantic Cache): 对高频的相似多轮检索路径进行缓存,直接返回之前的推理结果,跳过 Agent 思考过程。

稳定性控制 (Stability):

  • 设置绝对护栏 (Hard Limits): 必须在工程层面限制 Agent 的 max_iterations(最大循环次数)。超过限制(如 3 或 5 次)强制终止思考,使用现有信息尽力回答或宣告失败。

  • 结构化输出约束: 强依赖 JSON 模式或函数调用(Function Calling)来限制 Agent 的输出格式,防止因为大模型胡言乱语导致下游代码解析崩溃。

  • 人机协同介入 (Human-in-the-loop): 设定置信度阈值,当 Agent 评估自己找出的答案置信度低于 60% 时,将对话转交人工或高亮提示用户"该回答仅供参考"。

相关推荐
闪闪发亮的小星星2 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq2 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波2 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.2 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余2 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.2 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央3 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器3 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记
影寂ldy3 天前
WinForm PictureBox控件 + ImageList组件 完整笔记
开发语言·笔记·swift