---
title: "文档分块怎么做"
description: "分块决定检索能不能命中。这一页讲清按标题与段落等结构优先、固定长度兜底、重叠怎么定、块大小与上下文预算怎么权衡，以及中文文档和标题路径的处理。"
updated: 2026-11-13
canonical: https://docai.cc/concepts/chunking/
markdown_mirror: https://docai.cc/concepts/chunking.md
---
## 它是什么

分块（chunking）是把长文档切成一段段可独立检索、可独立送进模型的文本单元。它不是预处理里的小动作：检索能不能命中、模型拿到的材料是否完整，多半在切分时就已经决定。做 RAG、长文档问答、代码库索引，都绕不开这一步。

## 怎么工作

先按文档自身的结构切。标题层级是最可靠的边界：一个二级标题下的小节通常就是一个语义单元；段落、列表项、表格也各有边界。表格不要按行切散，把表头和说明一起保留；代码块不要从中间截断。

结构不够用时再按长度兜底：定一个目标长度，在句号、问号、分号、换行这些自然边界附近落刀，不要硬切在句子中间。

相邻块之间保留一小段重叠，避免答案刚好跨在边界上。重叠能缓解截断，但重叠太多会带来重复召回，也会浪费存储和上下文预算。

块大小要和上下文预算一起考虑。块越大，单块信息越完整，但召回精度下降，送进模型的 token 更多；块越小，召回更准，但容易丢前提。没有通用最优值，要拿自己的文档和问题去测。

中文要特别处理：中文没有空格，按固定字符数切容易切坏词。优先按标点（句号、问号、分号、逗号、顿号）和换行切，英文数字串、错误码、版本号不要拆开。

最后，给每个块保留标题路径，例如「部署 > 回滚 > 常见错误」。块被单独取出来时仍有坐标，模型和重排模型都更容易判断相关性。

## 常见误解

- **块越小检索越准**：小到一句话时，召回准了，但模型没有足够上下文回答，答案和前提被拆散。
- **按固定字数切就够了**：固定长度会切碎表格、代码和标题层级，语义边界全丢。
- **重叠越多越安全**：重复结果会挤占上下文预算，也可能让模型重复回答。
- **切完就不用管**：切分策略要跟着评测调，答案总被切断时先调边界与重叠。

## 怎么判断切得好不好

拿一批真实问题跑检索：看正确片段是否被召回、片段是否完整、模型能否只靠这段材料答对。如果答案经常缺半句，先调切分边界和重叠，再考虑换检索方式。

## 延伸阅读

- 块的向量表示：[什么是 embedding](/concepts/embedding/)
- 完整流程：[什么是 RAG](/concepts/rag/)
- 窗口预算：[什么是上下文窗口](/concepts/context-window/)
- 长文档处理课程：[处理超长文档](/learn/handle-long-documents/)
