为什么切分影响这么大
检索的基本单位就是「块」。块太大,一次召回会把大量无关内容带进上下文,模型容易答偏,也浪费上下文预算;块太小,一句「如上所述」脱离前提,检索到也没法用。
三种主流做法
**固定长度切分**(例如每 500 字一块,重叠 50 字)
**按结构切分**(按标题层级、按段落、按列表项)
**按语义切分**(按语义相似度找「话题转折点」再切)
可落地的默认选择
多数项目用「**先按结构、结构内再按长度**」的两段式最划算:
1. 先按标题切成大段,把标题文本一并写进块内(检索时标题往往是最强的信号);
2. 大段超过阈值(常见 600~1000 字)再按句子边界切,保留 10%~15% 重叠;
3. 块内保留来源标识(文档名、章节号),便于回答时给出处。
三个容易忽略的细节
怎么验证切分是否合适
不要凭感觉。挑 20~50 条**真实查询**,逐条看「该段落的块是否出现在前 K 条里」,统计命中率;再挑切得最差的几条回去看原始文本,通常一眼就能看出是切分问题还是检索问题。切分调整的收益,往往比换更贵的重排模型更明显。