一句话定义:分块(Chunking)就是把一份长文档切成一段段短文本(chunk),再分别转成向量存进检索库,让系统需要时只取相关的那几段,而不是把整本书塞给模型。
为什么不能整篇塞进去
想象公司有上千页规章制度,员工问「年假能攒到明年吗」。把这上千页全塞进大模型(LLM)的上下文窗口(context window),一来装不下,二来就算装得下,模型也容易被满屏无关内容带偏,成本还高。
分块就像把这份制度拆成一张张索引卡:每条规则一张卡,卡上贴一个「语义标签」(也就是嵌入向量 embedding)。提问时,问题也变成一个标签,系统比对标签,抽出最像的几张卡递给模型,模型照着卡片回答。
一般流程
1. 切:按固定长度(字符数或 token 数)切,或按标题、段落、列表、代码块等结构切。
2. 留重叠(overlap):相邻块重复一小段,避免一句话被拦腰截断。
3. 嵌入:每块单独过嵌入模型,得到一个向量。
4. 检索:用户问题也向量化,算相似度,取最相近的若干块(top-k)。
5. 组装:把这些块拼进提示词,让模型基于它们作答。
和相邻概念的区别
- 分块 vs 嵌入:分块决定「切什么」,嵌入决定「怎么把它变成可比较的数字」。
- 分块 vs 检索增强生成(RAG):分块是 RAG 流水线的第一步,切得好坏直接决定后面检索效果的上限。
- 分块 vs 摘要:摘要会改写内容,分块尽量保留原文。查合同条款、报错日志时,原话比概括更靠得住。
块切多大
没有万能值,权衡方向大致如下:
| 切法 | 后果 |
|---|---|
| 块太大 | 一块里混进无关内容,检索命中率下降,还挤占上下文 |
| 块太小 | 一句话被切碎,语义不完整,模型拿到半截话 |
| 无重叠 | 关键句子跨在边界上,两块都没包住 |
| 按结构切 | 通常比硬切长度更贴近语义,但依赖文档本身有清晰的标题层级 |
对两类人的意义
做 AI 应用的人:块大小、重叠量、按结构还是按长度切,都要拿业务里的真实问题反复试,别照搬别人的数字。具体默认值与最佳实践,以官方文档和你自己的评测为准。
普通职场人:AI 答内部问题答得准不准,很多时候不是模型笨,而是文档被切坏了。写文档时多用小标题、短段落、把一件事说完整,既方便同事扫读,也方便机器切对。
