这是 RAG 学习笔记的第 1 篇对应面试文档里检索优化模块的前两节Chunking切块和 Embedding 选型。离线链路是文档解析 → 切块 → 向量化 → 建索引 → 元数据看起来最简单的一步其实是最容易出问题的一步——切错了后面再好的模型也救不回来。本系列导航00 开篇用「开卷考试」理解 RAG 与我的学习方法01 Chunking 切块与 Embedding 选型本篇02 在线链路七步走与混合检索 RRF03 Rerank 与查询改写04 工程化延迟、缓存、成本与权限05 评测调优与三个进阶架构一、Chunking把书撕成小纸条类比把一本书撕成小纸条每条纸条要能独立回答一个问题。这句话是整节的钥匙。判断切得好不好就问自己一句这条 chunk 单独拿出来能不能读懂、能不能回答一个问题三种策略对比策略做法适合缺点固定大小512 token 一段通用可能切断关键信息递归切分标题 → 段落 → 句子结构规整文档依赖文档结构语义切分按语义边界松散文档慢、贵举例技术文档用递归切分因为标题边界比语义边界更可靠代码按函数/类边界切FAQ按问答对切。为什么没有固定最优值因为切块的最优解取决于文档结构 问题类型 检索模型。所以说我一般用 512是错的答法正确答法是我在真实评测集上对比过。overlap 为什么不是 0overlap 相邻两个 chunk 之间故意保留的一段重复内容。举例原文是……退款条件用户可在购买后 7 天内申请退款。具体退款天数为 7 个工作日原路退回。如果按固定长度硬切Chunk 1……退款条件用户可在购买后 7 天内申请退款。Chunk 2具体退款天数为 7 个工作日原路退回。overlap 0时用户问退款要几天检索可能只召回 Chunk 1——里面只说7 天内申请没说7 个工作日到账。关键数字在 Chunk 2但它没被召回。overlap 20%时Chunk 2 的开头会重复 Chunk 1 的结尾Chunk 1……退款条件用户可在购买后 7 天内申请退款。Chunk 2用户可在购买后 7 天内申请退款。具体退款天数为 7 个工作日原路退回。这样即使只召回 Chunk 2也能同时看到7 天内申请和7 个工作日两个信息不会断。**所以 overlap 的作用是防止关键信息被切断。**一般设 10%–20%。我当时的问题是overlap 到底在重叠什么。想通的关键是切块是按长度切的但语义是跨段的——只要语义会跨越边界就必须让边界两侧都看到它。面试口述版“没有固定最优值。我会在真实评测集上对比 300/500/800 token 和不同 overlap看 RecallK 和答案正确率选综合最优。技术文档我通常用递归切分因为结构规整、标题边界比语义边界更可靠。”二、Embedding把文字变成向量然后比距离类比Embedding 就是把文字变成一串数字向量语义相近的文字向量也相近。三个名词BGE、M3E、GTE这三个都是中文 Embedding 模型的名字我一开始完全不知道它们是什么名字全称来源备注BGEBAAI General Embedding智源研究院中文效果好常用BGE-large-zh-v1.5M3EMoka Massive Mixed EmbeddingMoka中文 embedding 模型GTEGeneral Text Embeddings阿里达摩院中文 embedding 模型它们的作用给它一段文字它输出一串数字比如 1024 维向量。检索时比较向量相似度找到语义相近的文档。注意一个容易混淆的点Embedding 模型 ≠ 生成模型两者不必同源。用 BGE 做 Embedding、用 GPT-4o 做生成是很常见的稳定组合。RecallK 是什么RecallK 召回率 K在检索返回的前 K 个结果里有没有包含正确答案。比如Recall10 0.92意思是10 次查询里有 9.2 次正确文档出现在前 10 个结果中。为什么要用 Recall 而不是准确率因为 RAG 是两段式召回阶段先要别漏RecallRerank 阶段再负责排序对。MTEB 榜单是什么MTEB Massive Text Embedding Benchmark一个公开的 embedding 模型排行榜可以理解成embedding 模型奥运会。**但榜单分数高 ≠ 你的业务效果好。**所以文档里写着“不只看 MTEB 榜单要看业务评测集上的 RecallK”。选型四维度语言中文优先 BGE、M3E、GTE序列长度长文档需要支持长上下文的 embedding部署云端 API vs 本地部署评测看 RecallK不只看 MTEB 榜单。举例中文企业知识库选BGE-large-zh-v1.5本地部署业务评测集上 Recall10 0.92。我印象最深的一句总结是“MTEB 是别人的考卷RecallK 是你自己的考卷。”拿榜单排名当选型依据是新人最常犯的错。三、这一篇的记忆卡概念一句话Chunking撕成小纸条每条要能独立回答一个问题overlap防止关键信息被切断留 10–20%FAQ 按问答对切一问一答永远在一起避免召回问题却丢答案BGE / M3E / GTE中文 embedding 模型把文字变向量RecallK前 K 个结果里有没有正确答案MTEB公开 embedding 排行榜≠ 业务效果四、我的复盘这一节的收获不是记住三种切分策略而是理解了一个更底层的事实RAG 的效果上限在离线阶段就已经被决定了。切块切断了信息、embedding 选错了语言或长度、元数据没打全——这些在在线阶段都救不回来。所以检索优化模块才被标为核心。下一篇进入在线链路把那串清 → 改 → 找 → 排 → 拼 → 答 → 标逐步讲透重点是混合检索和 RRF 为什么能提升召回以及双塔粗排到底是什么意思。