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

承接上一品,这一品学习自我修正 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): 串行调用,解决复杂的多步逻辑。
相关推荐
花间相见6 小时前
【LangChain】—— Prompt、Model、Chain与多模型执行链
前端·langchain·prompt
qq_4557608510 小时前
Langchain & Langgraph介绍
langchain
祁思妙想10 小时前
LangChain开发框架
langchain
nvd1111 小时前
LangChain Agent 架构演进深度解析:从 AgentExecutor 到 LangGraph 与 LCEL
langchain
勇往直前plus14 小时前
大模型开发手记(二):基于 LangChain 的 RAG 架构全面解析与落地实践
架构·langchain
老蒋每日coding14 小时前
LangChain 实战系列(一) —— 在 Windows 上安装 LangChain 的详细步骤
langchain
njsgcs16 小时前
langchain框架怎么让 Skills 与 MCP(tools)协同使用
人工智能·langchain·skills
玄同7651 天前
LangChain 核心组件全解析:构建大模型应用的 “乐高积木”
人工智能·python·语言模型·langchain·llm·nlp·知识图谱
小芳矶2 天前
使用 Langgraph 构建本地 RAG 知识库:从文档加载到检索
python·langchain
麦兜*2 天前
深入剖析新一代AI Native技术栈:从向量数据库与LangChain应用架构到多模态大模型微调与智能体工作流的全链路实战
数据库·人工智能·langchain