Chico Notes
LLM Wiki / RAG

Chunking 工程指南:文档怎么切,RAG 上限就在哪

系统拆解 PDF、网页、表格、代码和长文档的分块策略,以及 Parent-Child、层级索引、上下文化 Chunk 的工程取舍。

持续修订的工程笔记

Chunking 是 RAG 里最容易被低估的环节。很多团队一开始按固定长度切块,系统能跑,但一到真实文档就出现上下文断裂、表格失真、引用错位和召回噪声。

核心判断

Chunk 不是一段文本,而是一个可检索、可引用、可授权、可回溯的知识单元。分块策略决定了后面检索和生成的上限。

分块前先看文档类型

文档类型分块重点常见风险
Wiki / Markdown标题层级、锚点、段落边界切掉标题后 chunk 失去上下文。
PDF页码、版面、页眉页脚、表格OCR 断行、表格错列、重复页眉污染。
表格表头、行列关系、单位直接转 Markdown 后丢语义。
代码函数、类、注释、示例按长度切会截断函数体。
长报告摘要、章节、引用、附录Top-K 容量不足,跨章节问题答不好。

常见策略

策略优点代价
固定长度简单、稳定、实现快容易切断语义。
语义分块保留自然段落和主题边界不稳定,解析成本高。
层级分块适合手册、报告、Wiki需要维护标题树。
Parent-Child小块召回,大块补上下文上下文组装更复杂。
Contextual Chunk给 chunk 补充标题和摘要生成上下文有成本,可能引入噪声。

推荐 Chunk Schema

生产系统里,chunk 至少应该包含这些字段:

{
  "chunk_id": "doc_2026_policy_003",
  "document_id": "doc_2026_policy",
  "title_path": ["HR Policy", "Remote Work", "PTO"],
  "text": "...",
  "parent_id": "section_remote_work",
  "source_url": "https://...",
  "page": 12,
  "updated_at": "2026-07-06",
  "acl_groups": ["hr", "employee"],
  "doc_type": "policy"
}

Parent-Child 的典型链路

小 chunk 负责精确命中,parent chunk 负责补全上下文。这个策略通常比单纯增大 chunk size 更稳。

如何评估分块策略

指标说明
Recall@K正确证据能否被召回。
Context Precision上下文里噪声是否太多。
Citation Accuracy引用是否能精确指向原文。
Token Cost最终上下文是否过长。
Update Cost文档更新后需要重建多少索引。

Chunking 没有通用最优。最好的策略来自文档类型、问题类型和评测结果,而不是来自某个固定 chunk size。

讨论

继续讨论这篇笔记

有问题、补充案例或不同观点,可以通过 GitHub Discussions 继续交流。

On this page