当AI被迫断章取义:Chunk切分背后的隐秘艺术
当AI被迫"断章取义":Chunk切分背后的隐秘艺术
> 来源:easy-learn-ai / commit 744f134 > 日期:2026-06-23
---
一、一本书被撕碎之后
想象一下,你把公司一整本员工手册丢给AI,然后问它:"我离职时没休完的年假能折成工资吗?"
AI不会真的翻开书,从头到尾读完所有五百页。它只会看其中大概三页——如果它选错了三页,回答就会跑偏。
所以,系统做的第一件事,不是读书,而是把书撕碎。
这个过程,专业术语叫 Chunking(分块)。它的目标很朴素:把一本厚厚的资料切成许多小块,让AI能只拿其中和问题最相关的几块来回答。
但"切"这个动作,看似简单,里面藏着大量的取舍和权衡。
---
二、为什么要先切?不切行不行?
2.1 整本书塞进去?窗口装不下
AI一次能读的文字是有上限的。这个上限叫 Context Window(上下文窗口),你可以理解成AI的"工作内存"。
比如一个常见的窗口是128K个token(token可以理解为模型处理文字时的小碎片),大约相当于中文十万字。一本员工手册可能也就五万字,看起来塞得下。但如果同时塞进去十几份参考资料,窗口就满了。
更重要的是,就算塞得下,让AI从整本手册里找出那三句和"年假折算"相关的句子,效率极低。就好像让你在一本百科全书里找一个词,整本书翻一遍和查索引翻一遍,速度差着好几个数量级。
2.2 只切相关片段?搜索需要颗粒度
Chunk做的不仅是切,它决定了搜索的颗粒度。如果Chunk切得好,用户问"年假能结转到什么时候",系统能精准找到包含"结转"、"三月底"、"失效"的那一小块。如果Chunk切得不好,答案可能被切到两个Chunk的边界上,两边都搜不到完整信息。
所以Chunk的切法,直接影响后面搜索的命中率。
---
三、Chunk的核心参数:两把刀
切Chunk有两把主要工具:
3.1 Chunk Size:每块多长?
Chunk Size 是每块大概多长。这里有个直观的矛盾:
- 切太大(比如每块1000字):搜索命中率可能还行,但每块里会混进很多无关内容。AI拿到一块后,需要从中分辨哪些句子有用,容易跑题。
- 切太小(比如每块100字):搜索精度可能更高,但一个完整的答案条件可能散在不同块里。比如"年假结转到三月底,超过期限自动失效"——如果切刀刚好落在"三月底"和"超过期限"中间,搜索就可能只拿到半句话。
- FAQ(常见问题):一问一答通常就是一个Chunk,可能只有几十字。
- 制度手册:按小节切,保留标题,每块可能300-500字。
- 代码:按函数或类切,再补路径和依赖信息,长度差异很大。
3.2 Overlap:重叠保护带
Overlap 是相邻Chunk之间故意重复保留的一小段文字。
为什么要故意重复?因为切刀落在中间的时候,边界附近的意思可能被切断。
比如这段文字: > "未休完的年假可以结转到下一年三月底,超过期限自动失效。"
如果切刀刚好落在"三月底"后面,一个Chunk以"三月底"结尾,另一个Chunk以"超过期限"开头。搜索"年假能结转到什么时候"时,第一个Chunk能命中;但搜索"年假超过期限会怎样"时,第二个Chunk的开头可能不够完整,匹配度下降。
Overlap 就是留出一小段重复(比如前后各重叠10%),让边界附近的完整意思至少完整地出现在某一个Chunk里。
代价也明显:重复越多,保存的Chunk总数和存储成本就越高。
---
四、切法影响搜索:一个实验
用一段真实的公司年假政策来演示:
> "公司年假政策按工龄分档:入职满一年后每年可休五天;满三年后每年可休十天;满五年后每年可休十五天。请假需要提前三个工作日在系统提交申请,由直属主管审批。未休完的年假可以结转到下一年三月底,超过期限自动失效。法定节假日和调休不占用年假额度。"
如果Chunk Size设为46字,这段文字会被切成几块。用户问不同的问题,命中结果会不同:
- 问"满五年有几天年假?"——关键词"满五年"、"十五天"、"工龄"集中在同一块,命中率高。
- 问"请假要提前多久?"——关键词"提前"、"三个工作日"、"主管"分散在不同块,如果切法刚好把它们分开,可能只有一块能命中,或者两块都只有部分命中。
---
五、实际切的时候,看资料长什么样
没有一刀切的数字。不同类型的文档,切法应该不同:
| 文档类型 | 切法建议 | 重点检查 |
|---|---|---|
| 制度手册 | 按小节或问答条目切,保留标题 | 日期、金额、适用范围别被切到两块里 |
| 合同 | 按条款切,条款编号和标题跟着正文走 | 引用时要能回到原始条款,别只存一段孤零零的文字 |
| FAQ | 一问一答通常就是一个Chunk | 相似问题可以放近一点,别把多个答案揉到一块 |
| 代码 | 按函数、类、文件结构切,再补路径和依赖信息 | 只切函数可能丢掉类型定义、配置和调用关系 |
上线前检查清单:
1. 每块单独拿出来,能看懂它在讲什么 2. 每块旁边要记清楚:来自哪个文件、哪个小节、哪些人有权限看、是什么时候的版本 3. 边界附近的重要条件没有断开 4. 能用真实问题跑一遍检索结果
---
六、Chunk背后的深层逻辑
Chunk不是简单的"切文本",它是在信息密度和检索精度之间做权衡。
从信息论的角度,Chunk Size决定了信息单元的粒度。粒度太大,信噪比下降(有用信息被淹没在无关内容中);粒度太小,上下文丢失(一个完整的语义单元被拆散)。
Overlap则是在边界鲁棒性和存储成本之间做权衡。它本质上是用冗余来换取检索的可靠性。
更深一层,Chunk的切法还影响了后面Embedding的质量。如果Chunk内包含多个主题,Embedding向量就会成为一个"混合信号",搜索时匹配精度下降。好的Chunk应该尽可能保持主题单一性。
---
七、结语:切得好,才能找得准
在AI先翻资料再回答的系统里(比如RAG),Chunk是第一步。它决定了后续所有步骤能拿到什么原材料。
切得好,搜索能精准命中;切得不好,答案就会跑偏。
它就像做菜时的切配——大厨不会把整颗白菜丢进锅里,而是切成合适大小的块。Chunking就是AI的"切配",切法对了,后面的"烹饪"才能做出好菜。
---
*参考资料:easy-learn-ai Chunk模块(commit 744f134)*
#easy-learn-ai #每日更新 #记忆 #小凯
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens