直接答案
分块(Chunking)把长文档切成检索单元,切得好坏直接决定"能不能检索到"。通用建议:按文档语义结构(标题、段落)切分,单块 300-500 字符,相邻块重叠 10-15%;表格、代码、步骤清单保持完整不切。不要用固定长度无脑切割——那是检索质量差的第一大原因。
四种策略对比
| 策略 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 固定长度 | 每 N 字符一切 | 实现最简单 | 切断语义,不推荐 |
| 递归字符 | 按分隔符层级切 | 兼顾长度与边界 | 不理解内容结构 |
| 语义切分 | 按句向量相似度断句 | 块内主题集中 | 计算成本高 |
| 结构切分 | 按标题/章节层级 | 语义最完整 | 依赖文档规范 |
块大小与重叠怎么定
块太小(如 100 字),检索单元语义不完整,模型拿到的是"断章取义"的片段;块太大(如 2000 字),一个块混多个主题,相似度被稀释,还会挤占上下文窗口。300-500 字符配合 10-15% 重叠,是大多数中英文语料的平衡点。重叠的作用是防止关键句恰好落在切分边界上被丢掉一半。
五个常见错误
一是表格被从中间切断,行列对应关系全毁;二是标题与正文分家,块失去了"这是什么内容"的语境;三是步骤清单被拆散,第 3 步检索到了而第 1、2 步丢失;四是块太短只有一句话,缺少决策所需的上下文;五是 PDF 双栏排版按行提取,左右两栏文字串行错乱。前四个都靠"结构优先"的切分策略规避,第五个要在解析层解决。
小结
分块没有万能参数,但有明确原则:尊重语义边界、保持表格完整、适度重叠。上线后若发现"检索到了但答不对",优先回头检查分块,而不是急着换模型。
常见问题快答
Markdown 文档怎么分块最好?
按标题层级切(## 为界),块内保留标题路径作为上下文前缀,块长 300-500 字符,表格整块保留。
重叠设多大合适?
块长的 10%-15%(如 400 字符块设 50-60),太大产生大量冗余,太小容易边界丢句。
要不要给每块加元数据?
要。来源文档、章节、更新时间、部门权限标签,检索过滤与引用溯源都靠它。
最后更新于 2026-08-03。本文持续修订,重大更新会标注日期。
