知识点深化 · RAG
RAG 检索增强生成:从文档切分到生成全链路
大模型没看过你公司的内部文档,硬问就会瞎编。RAG 就是让它开卷考试:先从资料库里把相关段落检索出来,再让大模型照着资料答题。这一页讲透切分、嵌入、检索、重排、生成五步流水线,让你的问答系统有依据、可溯源、少幻觉。
① 小白第一课怎么学(4 步走,约 65 分钟)
大模型没看过你公司内部文档,硬问就会瞎编。RAG 就是"开卷考试":
1建立直觉(10 分钟)
读②③:RAG=先把资料翻出来,再让模型照着资料答题。
2记全链路(15 分钟)
读④:文档切分→嵌入→检索→重排→生成,五步流水线。
3跟例题(20 分钟)
精读⑤,看一个客服问题怎么走完整条链路。
4刷题纠错(20 分钟)
做⑦⑩,错题回⑥看高频坑。
本课小目标学完你要能:① 说清 RAG 五步各干什么;② 解释为什么要切分和重排;③ 区分向量检索和关键词检索。
② 一图看懂:RAG 全链路
读法:从左到右是一条流水线——把文档切了、变成向量、检索相近段落、重排、交给大模型照着生成。
③ 本质直觉:让模型"开卷考试"而不是"闭卷默写"
大模型的知识停在训练截止日,更不知道你公司的内部资料。直接问它"我们公司年假几天",它只能凭印象瞎编——这就是幻觉。
RAG 的思路:不重新训练模型,而是先从你的资料库里把相关段落检索出来,连同问题一起塞进 Prompt,让模型"看着资料答题"。
为什么要切分(Chunk)?文档动辄几万字,塞不进上下文,也稀释重点。把它切成一段段(比如每 300~500 字一块),检索时只取最相关的几块,精准又省钱。
为什么要嵌入(Embedding)?关键词匹配认同义词差("退款"匹配不到"退货")。把每段话变成语义向量,意思相近的向量也相近,检索按"语义"找。
为什么重排(Rerank)很关键向量检索是"粗排",快但不一定把最相关的排第一。重排模型(Cross-Encoder)把"问题+候选段落"成对精算,把真正相关的顶到前面,答案质量明显上升。
④ 完整体系:五步流水线与关键参数
离线建库 vs 在线问答
| 阶段 | 动作 | 产物 |
| 离线 1 切分 | 按语义/固定长度切段,加重叠 | Chunk 列表 |
| 离线 2 嵌入入库 | Embedding 模型把 Chunk 转向量,存入向量库 | 可检索索引 |
| 在线 3 检索 | 问题转向量,Top-K 相近 Chunk | K 个候选 |
| 在线 4 重排 | Rerank 模型精排,取 Top-N | N 个最相关段 |
| 在线 5 生成 | 问题+资料段拼进 Prompt,LLM 作答 | 带引用的答案 |
关键参数
经验值
Chunk 大小 ≈ 300~500 字 | 重叠 overlap ≈ 50~100 字
检索 Top-K ≈ 5~20 | 重排后 Top-N ≈ 3~5 段喂给 LLM
| 对比 | 关键词检索 BM25 | 向量语义检索 |
| 匹配依据 | 词面相同/频率 | 语义相近 |
| 同义词 | 认不出 | 能识别 |
| 短板 | 字面匹配死板 | 可能召回语义近但不精确的 |
混合检索(Hybrid)是趋势实际系统常把 BM25 和向量检索结果融合,再重排,兼顾"字面精确"和"语义泛化"。
⑤ 用法场景与典型例题
例1(为什么切分)一本 2 万字的员工手册,为什么不整篇塞给模型?
上下文有限+稀释重点。
① 整篇 2 万字可能超上下文窗口,且大部分与问题无关。
② 切成 400 字一段后,只检索与"年假"相关的 2~3 段。
③ 精准、省钱、不超限。答案:切分是为了精准检索和控制上下文。
例2(同义词检索)用户问"怎么退货",文档里写的是"退款流程",向量检索为什么能找到?
语义向量相近。
① 关键词检索只会字面匹配"退货",匹配不到"退款"。
② 嵌入模型把两句话都映射到语义空间,"退货"和"退款流程"向量夹角小。
答案:向量检索按语义找,同义词也能召回。
例3(重排作用)向量检索返回 10 段,为什么不直接全给模型?
粗排有噪声,且占上下文。
① 10 段里有相关也有凑数的,全喂会引入噪声、占 context。
② 重排模型精算相关性,只留最相关 3~5 段。
答案:重排提升精度、减少噪声和 token。
让答案可溯源生成时让模型标注引用了哪段,客服/合规场景能回查原文,这是 RAG 相对"纯聊天"的重要优势。
⑥ 高频错误诊断(4 条)
错误 1:切分把一句话拦腰截断按固定字数硬切,把"年假=10天"切成两半,检索到半截意思就残了。要用带重叠、按段落/标题切。
错误 2:检索到了但没喂进 Prompt检索完忘了把资料拼进上下文,模型还是闭卷瞎答。资料必须和问题一起给。
错误 3:只要向量检索不要重排粗排噪声大,最相关的没排前面。生产链路建议加重排。
错误 4:文档更新了不重建索引向量库存的是旧嵌入。资料一改,必须重新嵌入入库,否则答的是旧制度。
⑦ 考点真题演练(4 题)
考点分布
| 考法 | 出题形式 | 应对 |
| RAG 解决什么 | 问为什么要用 RAG | 让模型基于私有资料、减少幻觉 |
| 切分/嵌入 | 问为何切块、向量化 | 精准检索、语义召回 |
| 重排 | 问 Rerank 作用 | 精排候选,提精度 |
真题基础1. RAG(检索增强生成)主要解决大模型的什么问题?
真题中档2. 把长文档切成 Chunk 并加重叠(overlap)的主要目的是?
真题中档3. 用户问"退货",文档写的是"退款流程",靠什么能召回?
真题拔高4. 关于 Rerank(重排),正确的是?
⑧ 必背知识点卡
本质:RAG=开卷考试,先检索资料再让模型照着答 减少幻觉
五步:切分→嵌入→检索→重排→生成 一条流水线
切分:300~500 字,带 50~100 字重叠 别切断语义
嵌入:段落变语义向量,意思近则向量近 认同义词
检索:Top-K 粗排,再 Rerank 取 Top-N 粗+精
向量 vs 关键词:语义 vs 字面,生产常混合 Hybrid
铁律:资料更新必须重建索引;答案标注引用 可溯源
⑨ 应用输出:搭一个公司制度问答机器人
实战场景:员工问"年假能休几天"
① 离线:把《员工手册》按标题切成 400 字 Chunk,用 Embedding 模型转向量存入 Milvus。
② 在线:问题"年假几天"转向量,向量库检索 Top-10 候选段落。
③ 重排:Rerank 模型精排,留下"年假标准"那 2 段。
④ 生成:Prompt="根据下面资料回答,资料没有就说不知道:"+资料+问题。LLM 答"入职满 1 年享 10 天年假…"。
⑤ 溯源:答案后附引用段落出处,HR 可回查。
口述全链路"先把文档切了向量化建库;用户提问时转向量粗排、重排精排,把相关段落连同问题给大模型,让它照着答并标引用;资料变了就重建索引。"
⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)
▍基础 6 题
基础2RAG 让模型做闭卷还是开卷?
开卷,先给资料再答题。
基础3把长文档切成小段叫什么?
切分 Chunking。
基础4段落变成向量用什么模型?
Embedding 嵌入模型。
基础5对检索候选做精排的步骤叫?
重排 Rerank。
基础6RAG 主要缓解大模型什么毛病?
幻觉/编造和知识过时。
▍中档 5 题
中档7为什么切分要带 overlap 重叠?
避免在边界把一句话/一个完整意思切断,让跨段语义仍能被完整检索到。
中档8向量检索比关键词检索强在哪?
能理解语义、识别同义词,不依赖字面相同。
中档9检索到的段落如何进入生成?
作为上下文拼进 Prompt,与问题一起交给 LLM。
中档10为什么生产里常做 Hybrid 混合检索?
BM25 字面精确 + 向量语义泛化,互补后召回更全。
中档11Top-K 一般取多少?重排后喂几段?
检索 Top-K 约 5~20,重排后喂 3~5 段。
▍拔高 5 题
拔高12RAG 和微调在"注入知识"上有何不同?
RAG 不改模型、外挂知识、易更新;微调改权重、适合改风格/能力,知识仍会过时。
拔高13检索回来的段落不相关,可能原因?
切分不当、嵌入模型与领域不匹配、Top-K 太大引入噪声、缺重排。
拔高14为什么要让答案标注引用来源?
可溯源、可纠错、满足合规;用户能回查原文,不信模型一面之词。
拔高15文档更新后为什么要重建索引?
向量库存的是旧文档的嵌入,不重建就检索不到新内容。
拔高16用户问题和文档表述差异很大导致检索不到,怎么改进?
可做 Query 改写/扩展、加 HyDE 假设性答案、或混合关键词检索。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① RAG 是开卷:先检索资料,再照资料答题。
② 五步流水线:切分、嵌入、检索、重排、生成。
③ 语义向量认同义词,资料变了要重建索引。
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③④,画五步流水线图 | 说清每步产物 |
| 第 2 天 | 背知识点卡 + 基础 1-6 | 基础全对 |
| 第 3 天 | 做中档 7-11 | 懂切分/重排原因 |
| 第 4 天 | 做拔高 12-16 | 区分 RAG 与微调 |
| 第 5 天 | 做⑦真题 4 题 | 限时每题 2 分钟 |
| 第 6-7 天 | 合上书口述五步和三句口诀 | 不看资料全说对 |
← 返回算法与AI总览