文档切分
Document Chunking
文档切分(Document Chunking)是把长文档划分为可索引片段,并为每个片段保留来源、标题层级和位置等元数据的过程。切分决定检索系统能取回的最小上下文单元,是需要用真实查询评估的工程选择。
输入、输出与系统位置
输入是解析后的文档结构和文本,输出是chunk id、正文、token数量、父标题、原文位置和来源URL。切分通常发生在嵌入和索引之前;策略变化后,往往需要重新生成向量与索引。
固定长度与递归切分
固定长度按字符或token窗口切分,行为可预测但可能切断句子。递归切分依次尝试标题、段落、句子和字符边界,在不超过上限时尽量保留结构,适合混合格式文档。
语义切分与重叠
语义切分尝试在主题变化处断开,需要额外模型和阈值。重叠把前一片段末尾复制到下一片段,能缓解边界信息丢失,却会增加索引量和重复召回;不存在通用的最佳百分比。
token大小示例
一份API文档的“请求参数”表和解释段应保持在同一片段。如果固定500 token正好把字段定义与限制拆开,检索只能得到半个答案。按H2先分节,再对超长小节递归切分,通常更容易保留关系。
上下文丢失与失败模式
过小片段缺少主体、条件和指代对象;过大片段会把多个主题混合并占用上下文;PDF解析错误、表格拆散、页眉重复也会污染检索。切分前必须先检查解析质量。
评估方法
建立包含事实查询、跨段查询和表格查询的测试集。计算相关片段Recall@K、答案所需证据覆盖率、重复候选率和平均token成本,并人工检查引用能否回到原文。根据文档类型分层评估,不用单一平均值决定所有内容。
不同文档类型的策略
API文档优先保留标题、参数表和示例;合同按条款和编号;FAQ按问题答案;代码按函数或类并保留文件路径。扫描PDF先修复OCR和阅读顺序。统一固定长度只能作为基线,不能覆盖结构差异。
递归切分伪代码
先按H1/H2切分;仍超过token上限时按段落;再超限按句子;最后才按token窗口。每个片段保存父标题和相邻片段id。重叠只应用在可能跨边界的文本,不重复完整表格或代码块。
重建与对照实验
选择一组真实问题,为每个问题标出包含答案的原文范围。对固定长度、递归和语义策略使用同一嵌入与检索器,比较Recall@K、证据覆盖、重复率、索引量和延迟。改变切分后建立新索引做A/B或离线对照,不直接覆盖生产。
切分质量的人工验收
为每种文档抽取代表页面,检查标题是否附着到正文、表头是否与行一起、代码示例是否保留语言和文件位置、列表条件是否被拆散、页眉页脚是否重复。测试查询既包含单段事实,也包含需要相邻段落或表格关系的问题。比较不同策略时保持解析器、嵌入模型、索引参数和Top-K一致,只改变切分变量。记录证据覆盖、重复召回、无主体片段和平均上下文token。若跨段问题持续失败,可增加父级摘要或相邻片段扩展,但要重新测成本与噪声;不存在适合所有文档的固定chunk大小。
版本与可追溯性
每个片段保存解析器、切分策略、tokenizer和原文版本。答案出现问题时可还原当时片段;策略更新建立新索引,验证后切换,避免新旧片段混合造成不可解释变化。
常见问题
片段越小检索越准确吗?
不一定,过小片段可能缺少上下文,过大片段又会引入噪声。
所有文档都用同一长度吗?
不宜机械统一,应结合文档结构、语言和用户问题评估。
参考资料
Chunking phase for RAGMicrosoft Azure Architecture Center · 切分策略与评估流程 · 访问 2026-08-30
Parse and chunk documentsGoogle Cloud · 结构化切分工程行为 · 访问 2026-08-30
Retrieval-Augmented GenerationFacebook AI Research · RAG检索生成架构 · 访问 2026-08-30