【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% 时,将对话转交人工或高亮提示用户"该回答仅供参考"。

相关推荐
FellAveal10 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
xqqxqxxq11 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
龙仔72511 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
Z59981784112 小时前
c#软件开发学习笔记--Modbus-RTU通讯
笔记·学习·c#
quanjui14 小时前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习
小黄蚁14 小时前
FreeRTOS学习笔记(十二)
笔记·学习
茯苓gao14 小时前
嵌入式开发笔记:电机参数辨识与自学习完全指南——从电气参数到机械特性的深度解析
笔记·嵌入式硬件·学习
优化Henry15 小时前
学习笔记之VoNR语音业务注册流程
网络·笔记·学习·5g·信息与通信
摇滚侠15 小时前
《RocketMQ 官网》阅读笔记 RocketMQ 订阅 (Subscription)
笔记·rocketmq
风曦Kisaki16 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes