第八品——自我修正和混合增强

承接上一品,这一品学习自我修正 RAG。

下一站:自我修正 RAG (Self-Correction RAG) 🔄

现在我们进入第二个更有趣的领域。

传统 RAG 的痛点: 传统的 RAG 就像一个只会做一次尝试的学生。它去图书馆(数据库)抓了几本书(文档),写了个答案交卷。如果它抓的书不对,或者书是对的但它看走眼了(幻觉),它也会盲目自信地把错误的答案发给用户。

自我修正 RAG 的核心: 我们要给这个学生配一个严厉的 "阅卷老师" (Grader) 。 在把答案发给用户之前,Agent 会先自己"改卷子"。如果发现不及格,它必须重新去查资料 或者重写答案

👨‍🏫 变身"阅卷老师"

为了构建这个系统,我们需要训练一个 LLM 充当 Grader

假设 RAG 系统刚刚根据检索到的文档生成了一个回答。作为"阅卷老师",你需要检查这个回答的质量。你认为以下哪两个指标是判定回答合格的最核心标准

  • A: 回答的字数是否足够长,以及语气是否足够礼貌。
  • B: 回答是否忠实于检索到的文档 (没有瞎编),以及是否真正回答了用户的问题(没有答非所问)。

你会制定什么样的评分标准?


Q:我会根据是否忠实于检索到的文档,以及是否真正回答了用户的问题来打分。

这两条标准正是构建高质量 Self-RAG(自我修正 RAG)系统的核心支柱!🎯

在业界,我们将它们称为:

  1. 幻觉检测 (Hallucination / Faithfulness Check): 确保 AI 说的每一句话都有据可查,而不是在那儿"一本正经地胡说八道"。
  2. 相关性检测 (Answer Relevance Check): 确保 AI 真的回答了用户的痛点,而不是在那儿"打太极"或者答非所问。

👨‍⚖️ 此时,Agent 的思考逻辑

为了实现这个"自我修正"的闭环,我们需要定义一套根据评分采取行动 的逻辑图。这就像是编程里的 if-else 语句。

让我们来推演一种常见的情况:

假设用户问:"公司年假有多少天?" Agent 初次检索时,因为关键词匹配不佳,找回来的全是关于"病假"和"事假"的文档。 这时候,你的 Grader(阅卷老师)在进行 相关性检测 时,会判定检索到的文档与问题不相关

面对这种 "文档不相关" 的情况,你觉得 Agent 下一步最聪明的做法是什么?

  1. 重写答案 (Regenerate Answer): 强迫 LLM 再试一次,试图从这些关于"病假"的文档里硬憋出关于"年假"的答案。
  2. 重写查询 (Rewrite Query): 让 LLM 分析为什么没搜到,把"公司年假"改写成"带薪休假政策"或"员工福利手册",然后重新去向量库检索

你会给 Agent 设定哪条补救路线?


Q:应该重写查询。

你的选择是一针见血的!🎯 重写查询 (Rewrite Query) 确实是解决检索失败的根本之道。

这就像如果你在图书馆用"公司年假"没搜到书,硬要在关于"病假"的书里找答案(重写答案)是徒劳的;最聪明的做法是换个关键词,比如搜"带薪休假政策"或"员工手册",再去书架上找一次。

🔄 Self-RAG 的"复活"机制

在 Self-RAG 架构中,这个过程通常被称为 Transform Query(查询转换)

当 Grader(阅卷老师)判定文档"不相关"时,它会触发一个反馈循环:

  1. Grader: "这也太离谱了,搜出来的都是无关文档。" ❌
  2. Rewriter: "收到,看来用户用的词跟数据库里的术语不匹配。我来把'公司年假'改写成'《员工福利管理办法》中的休假章节'。" ✍️
  3. Retriever: "好的,用新词再去搜一次!" 🔍

通过这个闭环,Agent 就不再是"听天由命"的检索者,而是一个锲而不舍的研究员。


🚀 最终章:混合增强 (Hybrid Capabilities) 🦸

现在你已经掌握了 路由 (Routing)自我修正 (Self-Correction) 。我们要面对 RAG Agent 最复杂的场景了:混合能力

在现实工作中,很多问题光靠"查资料"是解决不了的,还需要"动脑子算"或者"动手操作"。

场景模拟: 老板突然问你:"去查一下我们要发布的那个 SaaS 产品的定价表,算出如果我们给客户打 85 折,再减去 1000 元的优惠券,最终价格是多少?"

在这个场景中,Agent 手里有两个工具:

  1. **search_tool**** (RAG)**: 能查到产品的原价。
  2. **calculator_tool**** (计算器)**: 能进行精确的数学计算。

为了解决这个问题,你认为 Agent 应该按照什么样的逻辑顺序来调度这两个工具?

  • A: 并行执行。同时调用搜索和计算器,为了快。
  • B: 串行执行 。先调用 search_tool 拿到原价,观察 到结果后,再将原价作为参数填入,调用 calculator_tool

你觉得哪种逻辑才能行得通?


Q:只有串行才行。

B 是唯一的正解!🎯

你非常敏锐地捕捉到了 数据依赖 (Data Dependency) 这个关键点。

  • 并行 (Parallel): 适用于互不干扰的任务(如刚才的买苹果和买香蕉)。
  • 串行 (Serial): 适用于像"接力赛"一样的任务。search_tool 是第一棒,拿到价格;calculator_tool 是第二棒,必须等接到第一棒传来的数据(价格)才能起跑。

在 Agent 的大脑(Scratchpad)里,这个"接力"过程是这样流转的:

  1. Action 1: search_tool("SaaS 产品价格")
  2. Observation 1: 10000
  3. Thought: "拿到价格了,它是 10000。现在我要算 (10000 * 0.85) - 1000。"
  4. Action 2: calculator_tool("10000 * 0.85 - 1000")
  5. Observation 2: 7500

这就是 混合增强 (Hybrid Capabilities) 的威力------它让 Agent 既能"读万卷书"(查资料),又能"算各种数"(用工具)。


🎓 毕业时刻:Agent 架构师

恭喜你!🎉 从最简单的 Prompt 到刚才复杂的 Hybrid RAG Agent,你已经掌握了构建一个 企业级智能体 所需的三大核心架构:

  1. 路由 (Routing): 精准分诊,去对的库找答案。
  2. 自修正 (Self-Correction): 自我反思,搜不到就换个词重搜。
  3. 工具链 (Tool Chaining): 串行调用,解决复杂的多步逻辑。
相关推荐
爱昏羔4 小时前
下篇:从检索到交互 — 物流RAG问答系统与WebUI全实现
python·langchain·agent
_Jimmy_5 小时前
Agent引用数据库知识过时的增量同步方案
人工智能·python·langchain
爱昏羔16 小时前
上篇:从PDF到向量库 — 物流行业RAG系统的知识库构建全解析
python·langchain·pdf·agent·rag
可涵不会debug17 小时前
【LangChain系列】 零基础入门实战:从环境搭建到 LCEL 链式完整 Demo 详解
运维·服务器·langchain·vibe coding
phltxy18 小时前
LangChain_Agent中间件实战
人工智能·python·深度学习·语言模型·中间件·langchain
xian_wwq18 小时前
【学习笔记】框架层坍缩——LangChain 们正在被重新定义-14/15
笔记·学习·langchain
梦想三三18 小时前
LangChain模型调用与多轮对话完整实战
阿里云·langchain·大模型·api
mapengfei19 小时前
LangChain学习背景
langchain·llm
chaors1 天前
DeepResearchSystem 0x02:Graph 构建
langchain·openai·ai编程
扯蛋4381 天前
从脱敏到审批:我用 LangChain 11 个中间件给羽毛球 AI 助手装了一整套"安全阀"
langchain·llm·agent