📑 本页目录(点开跳转)
08d · RAG 进阶方向
⏱ 22 分钟 | ⭐ 前三页都做扎实了再看这页
🎯 一句话
GraphRAG、Agentic RAG、Self-RAG、CRAG 都在解决基础版 RAG 的某个具体缺陷。 ⚠️ 它们不是「更好的 RAG」,是「针对某类问题的 RAG」 —— 在切分、重排、评估都还没做扎实之前上这些,只会让系统更难排查。
🕸️ 进阶方向:GraphRAG / Agentic RAG / Self-RAG / CRAG
⭐ 每一行都写了代价 —— 这些方向的资料通常只讲好处,而真正决定要不要上的是右边那一列。
| 方向 | 解决什么 | 代价 |
|---|---|---|
| GraphRAG | 构建实体关系图,回答「跨多个文档的全局性问题」(如「这些报告的共同主题是什么」) | 建图要把全库过一遍 LLM,索引成本高一到两个数量级;而且图建好之后很难增量维护——文档一改,关系可能全变 |
| Agentic RAG | 让 Agent 自己决定检索几次、检索什么(智能体教程的循环 + RAG) | 延迟和 token 从"一次检索"变成"若干轮";必须有显式步数上限,否则会绕圈 |
| Self-RAG | 让模型自己判断"这次要不要检索"和"检回来的有没有用":训练时就往输出里加入反思标记(要不要检索 / 相不相关 / 有没有被支持),生成时按标记走分支 | ⚠️ 要微调模型才能产生这些标记,通用 API 模型用不了原版;用提示词模拟会明显打折 |
| CRAG(Corrective RAG) | 给召回结果加一个轻量评估器打分:好 → 直接用;差 → 回退到网络搜索;不确定 → 两者混合。本质是"检索质量的兜底闸门" | 多一个评估器(延迟 + 成本);回退到外部搜索意味着答案可能来自不可控来源,企业内网场景要谨慎 |
| 多模态 RAG | 检索图片、表格、图表(第 10 章) | 需要多模态 embedding + 版面解析,整条链路变重 |
| 长上下文 vs RAG | 上下文变长后还需要 RAG 吗?→ 需要:成本、时效、可溯源、规模 | — |
🔑 Self-RAG 和 CRAG 其实是同一个念头的两种实现:都在给 RAG 加一道「这次检索到底靠不靠谱」的判断。 区别是 Self-RAG 把判断力训进模型里(要微调),CRAG 把判断力放在模型外面(一个可插拔的评估器)。
⭐ 工程上先做 CRAG 那一路:它不动模型,加一个打分阈值就能上线,是这两条里投入产出比高得多的一条。而且它的评估器和你 08c 那张诊断表想量化的是同一件事——只不过从"事后排查"变成了"事中拦截"。
🔗 想再深一层,去哪一套
| 去哪 | 为什么 |
|---|---|
| 智能体工程教程 11 · 检索与RAG | ⭐ Agentic RAG 的正题:让 Agent 自己决定检索几轮、检索什么,那是智能体那一套的工程问题 |
| Claude博客资料库 · 上下文检索 | 上下文向量 + 上下文 BM25 的 top-20 失败率相对下降 49% 实验原文;与仅加上下文向量的 35% 分开 |
| 09 · 推理范式 | Self-RAG 的「先判断这次检索靠不靠谱」和推理范式里的自我反思是同一类机制 |
📦 深挖的话要学什么
✅ = 这一组的前三页已经讲了,点进去就是;其余是四页之外的。
📍 本章之外的那些,也标了它在哪: 📗 本库有 = 站内已经讲透,点进去就行;📙 半有 = 站内讲了一半,另一半得外找; 📕 要外找 = 站内没有,得去论文或别处。 (这份清单以前只列词不说去哪,指到的坑有些站内根本没挖过,按图索骥会扑空。)
- 文档解析:PDF/表格/扫描件(OCR)、版面分析、Markdown 转换 → 📕 要外找:站内一个字都没有。⚠️ 这一条值得单独警惕——它排在整条链的第一位,做企业知识库时也常常是最耗时的一环,而本库帮不上忙。别因为它在清单第一行就以为它最简单
- 切分:语义切分算法的阈值怎么定、Late Chunking、上下文补全的成本控制 → 📙 半有:切分的实用判据08 章给了(块大小起点、上下文检索/Contextual Retrieval 的做法)。Late Chunking 和语义切分算法的阈值调法站内没有,要外找
- Embedding:✅ 选型判据与维度取舍 | 领域微调的数据怎么攒、跨语言检索、MRL 截断检索 → 📙 半有:「领域微调的数据怎么攒」本质是标注问题,数据这一关 09 · 标注体系怎么设计 和 12 · 标注预算与主动学习 讲的正是"用有限预算攒出有用的标注"。MRL 截断检索和跨语言检索站内没有,要外找
- 检索:BM25 的公式本身(tf-idf、k1、b)、SPLADE 学习式稀疏检索、向量库选型(Milvus/Qdrant/pgvector,见推荐算法第 10 章) → 📙 半有:向量库选型 📗 就是上面那条链接;BM25 怎么用在 智能体工程 11 · 检索与RAG(为什么查「XR-2000」时向量会返回「XR-3000」、以及 RRF 融合为什么不需要分数可比)。但 BM25 的公式本身(k1、b 怎么调)和 SPLADE 站内没有,要外找
- 重排:✅ Cross-Encoder / ColBERT / LLM 三条路线 | ColBERTv2 的残差压缩、ColPali(直接对页面截图做后期交互) → 📕 要外找:⚠️ 全站搜「ColBERT」,唯一的正文出处就是 08b 那一节——ColBERTv2 和 ColPali 站内彻底没有,去 ColBERT 项目仓库
- 查询理解:改写、扩展、HyDE、路由、多跳(08c 的环节四给了地图,每一项都还能深挖) → 📗 本库有(HyDE 这一项):智能体工程 11 · 检索与RAG 把 HyDE 讲透了——问题「怎么申请报销」和文档「报销流程:第一步…」在向量空间里未必近,但模型编的假答案和真文档就很近。其余(改写/扩展/路由/多跳)本章的地图已经是站内最全的版本,再深挖要外找
- 生成:引用溯源怎么校验、幻觉检测、上下文压缩(LLMLingua)、拒答策略 → 📙 半有:拒答和输出把关这一侧站内很实在——智能体工程 16c · 接进真实产品 讲三层护栏、审核该放在链路哪个位置,⚠️ 还有一次事故复盘:审核只在末尾做,有害内容已经吐了 3.2 秒(做流式 RAG 的话这条直接适用)。但引用溯源的自动校验和 LLMLingua 式上下文压缩,站内没有,要外找
- 评估:✅ RAGAS 四指标 | 构建自己的测试集、端到端 vs 分段评估、TruLens / DeepEval / promptfoo 的差别 → 📙 半有:「构建自己的测试集」📗 站内很强——智能体工程 14 · 评测Evals 的八步(最贵的是写无歧义任务+参考解和读转录),加 数据这一关 13 · 评测集也是数据(抽样、多大才够、评分器也要校准)。工具那一侧 智能体工程 16b · 框架这层皮 说清了 Ragas / promptfoo / DeepEval 替你做的只是"评分器实现 + 跑批出表",最贵的三步一步不管。只有三者之间的具体差别要外找
- 进阶:✅ GraphRAG / Agentic RAG / Self-RAG / CRAG 及各自的代价 | 知识图谱怎么抽实体关系、增量索引与更新策略 → 📕 要外找:⚠️ 别被「知识图谱」这个词在站内的搜索结果骗了——Kaggle 19 里的知识图谱是推荐系统的物品关系图,和 GraphRAG 的实体抽取不是一回事。实体关系抽取和增量索引站内没有,从 GraphRAG 项目文档开始
需要的前置:不需要 GPU、不需要新数学,会调 API 就能开始。⭐ 做过推荐/搜索或写过 Agent 的人几乎是零前置(站内《推荐算法》《智能体工程教程》覆盖的就是这两块);没有这些背景的人,前置也只是「会用向量数据库存取一次数据」。
⚖️ 要不要深挖
| 你的情况 | 建议 |
|---|---|
| 要做企业知识库/客服/文档问答 | ✅ 必须,且优先级最高 |
| 做任何需要「模型用上私有数据」的事 | ✅ 必须(比微调重要得多) |
| 只做通用对话应用 | 🟡 知道基础即可 |
| 想快速产出可用成果 | ✅ 这块见效最快 |
🔑 我的判断:如果只能深挖一块,从纯实用角度这块排第一: - 落地场景最多(企业知识库是当前最主流的 AI 落地形态) - 迁移余地最大(做过推荐/搜索的话,那套知识直接复用;没做过也是全表门槛最低的几块之一) - 见效最快(一周能做出可用的东西) - 不需要 GPU、不需要新数学
唯一的竞争者是第 2 章 Transformer 原理——那个是认知价值最高,这个是实用价值最高。
✅ 检查点
- Self-RAG 和 CRAG 在解决同一件什么事?两者的区别是什么?工程上先做哪个?
- 为什么说这一页的方案都该放在最后考虑?
👀 答案
- 都在给 RAG 加一道「这次检索靠不靠谱」的判断。区别是 Self-RAG 把判断力训进模型里(要微调,通用 API 模型用不了原版),CRAG 把判断力放在模型外面(一个可插拔的评估器,差就回退到网络搜索)。工程上先做 CRAG——不动模型,加个打分阈值就能上线。
- 因为它们各自只解决一类特定缺陷,而切分、混合检索、重排、评估是所有 RAG 共同的地基。地基没打好就上进阶方案,出了问题你分不清是哪一层的锅 —— 排查成本反而更高。
🛑 到这里 RAG 就讲完了
⚡ 走神救援
先记住这几件事
- 进阶 RAG 方案分别针对多跳、一轮检索不够或证据质量不稳等具体问题。
- 先把切分、检索、重排与评测做好,再增加新的判断循环。
- 明确新增组件修复什么失败样例,并用同一评测集验证收益。
下一节 👉 09-推理范式.md