第 1 章 · RAG 生产链路:切分、检索、重排
考点梳理
2.1 RAG 5 步链路(“链路原理”)
① 切分(文档 → chunks)
↓
② Embedding(chunks → 向量)
↓
③ 检索(用户问题 → 向量 → 召回 top-k chunks)
↓
④ 重排(Reranker 精排 → top-n)
↓
⑤ 生成(chunks 塞进提示词 → 答案 + 引用)
记忆锚:“切分→嵌入→检索→重排→生成”(“5 步”,“离线建库 + 在线问答两段”)。
2.2 切分(“RAG 一半质量”)
切分 3 原则(“必背”):
| 原则 | 内容 | 反例 |
|---|---|---|
| 语义完整 | 按段落/标题/问答对切(别切断句子) | 固定 500 字硬切(“句子被腰斩”) |
| 长度适中 | 256~512 token(Embedding 模型上限内) | 1 句一块(“丢上下文”)/ 1 章一块(“超上下文”) |
| 留重叠 | 相邻块重叠 10~20% | 零重叠(“边界信息丢”) |
进阶(“L2/L3”):
- 结构化文档(Markdown/HTML):按标题层级切(“标题进 chunk 做元数据”);
- 表格/代码:整块保留(“切碎 = 废”);
- 层级 RAG:先粗(章)后细(段)(“小标题定位 + 细块回答”)。
记忆锚:“语义完整、长度适中、留点重叠;表格代码整块留”。
2.3 检索(“2 路混合”)
| 路 | 原理 | 强项 | 弱项 |
|---|---|---|---|
| 向量检索 | 语义相似度(Embedding 距离) | 同义词/语义相近(“咋退款” ≈ “如何退款”) | 专有名词/编号(“型号 XJ-2024”) |
| BM25(关键词) | 词频/逆文档频率 | 精确词/编号/人名 | 不懂同义 |
混合检索(“生产标配”):
两路各召回 top-k(如各 50)→ 合并 → 去重 → 重排
(权重:向量 0.7 + BM25 0.3,按业务调)
记忆锚:“语义靠向量,名词靠 BM25,两路混合才是生产”。
2.4 重排(“最后一道关”)
为什么需要:向量召回是"粗排"(快但不精)——Reranker(交叉编码器)把"问题 + chunk"一起编码打分,精度高但慢,所以只对 top-k(50)精排到 top-n(3~5)。
| 参数 | 作用 | 调法 |
|---|---|---|
| top-k(召回) | 召回多少 | 30~100(大一点,宁多勿漏) |
| top-n(精排后) | 给模型多少 | 3~8(塞太多 = 超上下文 + 噪声) |
| 阈值 | 分数低于多少丢弃 | 答不出时宁可不塞(“低分 chunk 是幻觉源”) |
记忆锚:“召回宁多勿漏,精排宁缺毋滥,低分果断丢”。
2.5 生成与引用(“可信层”)
- 提示词约束:“只根据给定资料回答;资料不足就明说,不要编”;
- 引用来源:答案标注 chunk 来源(“第几篇第几段”)——“用户能查证 = 可信”;
- 兜底:“检索为空/低分 → 明说没找到 + 给人工入口”(“别硬答”)。
🧠 记忆工具箱
口诀速记
- 链路:“切分嵌入检索重排生成”(“5 步”);
- 切分:“语义完整长度适中留重叠,表格代码整块留”;
- 检索:“语义靠向量,名词靠 BM25,混合才是生产”;
- 重排:“召回宁多勿漏,精排宁缺毋滥,低分果断丢”;
- 生成:“只按资料答,答不出明说,引用要标清”。
场景锚点
- RAG 想象"“开卷考试”":你不是闭卷的考生(不能瞎编),你是"开卷但材料有限"的考生(“翻书答题”)——“切分 = 把书撕成小抄(撕坏了 = 废);检索 = 按关键词翻到相关页(只翻目录不够,还得翻正文);重排 = 把最相关的 3 页放桌上(别把整本摊开);生成 = 只按这 3 页答题(页上没有的明说’书上没有’,别编)"——“RAG 的质量 = 小抄撕得好不好 + 翻得准不准”。
⚠️ 易错提醒
- 切分"固定长度硬切” = RAG 头号杀手:“句子被腰斩 = 语义断裂 = 召回不准”——“按语义/结构切 + 留重叠”;
- 只向量检索 = 生产不合格:“型号/编号/人名查不到”(“专有名词靠 BM25”)——“混合检索是标配”;
- top-n 塞太多 = 自找幻觉:“塞 20 个 chunk = 噪声淹没信号 + 超上下文”(“3~8 个够”);
- 低分 chunk 不丢 = 幻觉源:“检索不到却硬塞 = 模型基于错误资料编”——“设阈值,低分丢弃 + 明说没找到”。