ARTICLE · 1055439
文档切片怎么做?切了 3 种方法才搞明白
A10 · 2026-09-22 · 5 分钟读完
不是搜得不准,是切得不对
我搜“李四提的需求”,三层漏斗全跑完了,精排也排了,top-1 是一段 800 字的内容。
我读完前 200 字,发现是讲张三的。李四的部分在第 600 字之后。
不是搜的问题。是我切文档的时候,把完整的意思切碎了。
就像切菜——你买了好食材,用了好锅,火候也到位了,但菜切得大小不一,炒出来有的生有的糊。
01我手动切了 2 小时
上个月我手上有 11 个工作文档:2 个 50 页的方案文档,5 个 30 页的说明文件,4 个 20 页的会议记录。加起来 200 多页。
我第一次试着手动切——开 Word,Ctrl+C 一段,Ctrl+V 进数据库。2 小时切了 50 块。
按这速度,切完 422 块我要干 17 小时。
所以问题是:怎么自动切?
02最简单粗暴:按字数切
最天真的想法:每 500 字切一块。
def naive_chunk(text, chunk_size=500):
return [text[i:i+chunk_size]
for i in range(0, len(text), chunk_size)]
200 页的文档 → 800 块。
我用了 1 次,发现问题大了。比如一段:
“供应商合同约定:乙方需在 2026 年 3 月前完成物料交付,甲方负责验收。”
按 500 字切,可能被切成两段:
· 段 1:“供应商合同约定:乙方需在 2026 年 3 月前完成物料交”
· 段 2:“付,甲方负责验收。”
“交付”被腰斩了——AI 搜“交付”找不到完整信息。
按字数切有三个问题:标题被切到中间,一个完整概念被腰斩,AI 检索时找不到完整意思。
03真正的解法:按“意思”切
后来我想明白一件事:切菜不是切得越小越好,是每一刀都落在该落的地方。
按“意思”切,不按“长度”切。一段话讲完一个完整的意思,就切一刀。讲到另一个意思,再切一刀。
具体是三个策略叠加:
策略 1:先按段落切
段落天然是一个完整意思——不会把“交付”切两半。
策略 2:再按标题分组
同一个标题下的所有段落,都是讲同一个主题。比如“3.2 交付条款”下的所有段落,都是讲“交付”的事。
策略 3:加 100 字重叠
每块末尾 100 字,也加到下一块开头。这样即使“交付”被切到两段,第二段开头也有“付”字,AI 搜得到。
50 行代码搞定。核心逻辑是:段落切分 → 标题分组 → 合并到每块不超过 800 字 → 加 100 字重叠。
04实测对比
同一个 50 页文档,两种切法对比:
naive 切 100 块 vs smart 切 38 块:
· 存储:100 × 1024 维向量 ≈ 400KB;38 块 ≈ 152KB
· 检索速度:100 块扫一遍 50ms;38 块扫一遍 20ms
· 检索准确度:naive 切断“交付”;smart 完整
smart 切 4 项全胜。
我 11 个文档,用 smart 切法,最终切出 422 块。方案文档约 160 块,说明文件约 200 块,会议记录约 60 块。跟预期差不多。
05切文档的 3 个反直觉
反直觉 1:切得越细 ≠ 越好
我第一次切,每段 200 字——结果切太细了。“供应商合同约定:乙方需在 2026 年 3 月前完成物料交付”切到 2 块:“供应商合同约定:乙方需在 2026 年 3 月前完成物料交”和“付,甲方负责验收”。AI 搜“交付”找得到,搜“物料交付”找不到——因为“物料”和“交付”被腰斩。经验:每块 500-1000 字最佳。
反直觉 2:重叠不是浪费
我一开始觉得“重叠 100 字 = 浪费 100 字 × 块数”——后来发现重叠 100 字能换回 90% 的检索准确度,完全划算。经验:重叠 10%-20% 是黄金比例。
反直觉 3:标题要保留
我第一次切文档时,把“## 3.2 交付条款”这行当“废话”删了。结果:AI 搜“交付”找得到块,但不知道这些块属于哪个章节——上下文丢了。经验:标题必须保留进块。
06这件事的本质
后来我意识到,切片这件事的本质不是“怎么切”,是“切决定了搜的上限”。
如果你的切片是 800 字一大块,那搜索最好也只能找到这 800 字。AI 拿到这一块,还得自己从里面找重点。切片没做好的工作,变成了搜索的负担。
如果你的切片是每块只讲一个意思,那搜索找到的就是那个意思。AI 拿到直接能用,不需要再做一次“从 800 字里找 200 字”的工作。
我优化了搜索、优化了精排,还是找不到对的东西——因为问题不在搜索本身。
切片是搜索的“上游”上游没做好,下游再优化也没用
07这件事不止出现在文档里
后来我发现,“切得不对导致下游出问题”这件事,不止出现在文档切片里。
写周报
如果每一周的内容是混在一起的,领导看完还是不知道你这周做了什么。按“一件事一块”来写,读起来才清晰。
整理聊天记录
如果聊天记录是一大段,搜什么都搜不准。按“一个话题一段”来整理,搜起来才精准。
做会议记录
如果记录是一整篇流水账,没人会看。按“一个决议一条”来记,执行起来才明确。
这些事情看起来不一样,但本质是同一个:上游的“切分”方式,决定了下游的“使用”效率。
08什么情况下不适用
按“意思”切有一个前提:你得能判断“一个意思”在哪里结束。
如果内容是高度结构化的(比如表格、代码),按“意思”切反而容易切错——结构化内容有自己的边界,按字段切更准。
还有一种情况:如果你的内容本来就是短句、短段落,那“按意思切”和“按段落切”区别不大。这时候不用纠结,怎么切都行。
所以,按“意思”切适合的是:内容是自然语言、段落长度不均匀、语义边界不明显的场景。
09切完怎么“翻译”入库
切完之后,还要“翻译”成向量存进数据库。
流程就三步:切好的每一块 → 调模型翻译成 1024 个数字 → 存进向量库。一行 collection.add() 搞定。
最爽的是加新文档的时候。之前手动切 2 小时,现在跑一次脚本 30 秒。新文档的几十块自动进柜子。
这一项升级,值 100 倍。
10一个反直觉的发现
我以为切文档的难点是“怎么切”——段落、句子、字数、智能算法……但实测发现:
真正的难点是“哪些文档值得切”。
我 11 个文档里,2 个旧版方案文档切了也没人搜——因为业务早变了。切之前应该先想:这个文档未来会被搜几次?没人搜就别切,浪费存储。
切文档是体力活,“决定切哪个”才是脑力活。
小白的AI折腾笔记
折腾笔记 正在看 | 自动化实战 去看 → | 小白词典 去看 → |
上游切得对,下游才用得顺。
—— 切了三种方法才切对之后
NEXT
我把 RAG 跑起来了,4 篇文章的总结账单
关键词:RAG 全景 / 真实账单
小白的AI折腾笔记
技术小白 · 不懂代码 · 喜欢折腾
如果这篇对你有帮助,点个「在看」或转发给也在折腾 AI 的朋友