小白学大模型 —— 文本如何分片

在RAG中,最重大的就是把内容进行分块,向量化,存到向量数据库里面。RAG检索结果的准确度主要还是要看内容分块是否合理。
本章我们主要介绍下文本切块(chunking)的几种方式。
方式 1:固定长度切
做法:每 N 个字符/词一刀切。
优点:无脑快,代码 3 行搞定。
缺点:容易把句子拦腰斩断,“北京大学”切成“北京+大学”,语义全断,自然处理效果就不会很好。
方式2:滑动窗口切(overlap)
做法:每 N 个词后回退 M 个词再切,像卷尺量两次。按照一个窗口一样往前滑动。
优点:减少断句,提高召回率。
缺点:块数翻倍,存储和检索成本大大滴高。目前我在工作中没咋用这种形式。
方式 3:按句子切(句号、换行)
做法:按 。!?
等能够明确的区分段落,完整句子的标识进行分割。
优点:语义完整,适合短问答。
缺点:句子太长或太短都不好;超长句子仍需二次切。主要还是向量化算法要求的token有限。
普通 BGE(bge-base/large-zh-v1.5 等)默认最多 512 token
新一代 BGE-M3 最长支持 8192 token
BGE 家族目前有两代产品:
- 第一代的 bge-base-zh-v1.5、bge-large-zh-v1.5 等,基于 BERT 类架构,训练时就固定了 512 token 的输入窗口。我们工作中用的就是bge-large-zh-v1.5这个版本。
- 2024 年发布的 BGE-M3(M3 = Multi-Lingual / Multi-Function / Multi-Granularity)改用 XLM-RoBERTa-Extra-Large 并加长上下文,官方把窗口提到 8192 token。
3、实际使用时要注意的三件事
|
模型 |
最大 token |
向量维度 |
场景提议 |
|
bge-large-zh-v1.5 |
512 |
1024 |
短文本、FAQ、标题 |
|
bge-base-zh-v1.5 |
512 |
768 |
资源受限场景 |
|
BGE-M3 |
8192 |
1024 |
长文档、论文、整段合同 |
4、 超过长度会怎样?
- 普通 BGE:超过 512 的部分会被 直接截断,不会报错也不会提示,只是后半段信息丢失。
- BGE-M3:超过 8192 同样会被截断,但绝大多数文档已够用。
这里说下二者的优缺点,我们主要是没有那么多资源,普通的已经完全沟通了。
一、BGE(普通版本) vs. BGE-M3 的优缺点
1. BGE(普通版本)
- 优点:
- 轻量高效:模型体积较小(如 bge-small 仅数百MB),推理速度快,适合实时性要求高的场景(如检索、问答)。
- 中英文优化:针对中文和英文的语义理解进行了专门训练,在中文任务上表现优于同等规模的通用模型(如 OpenAI Embedding)。
- 开源免费:可本地部署,无调用成本。
- 缺点:
- 多语言支持有限:对非中英文的语言(如小语种)效果可能较弱。
- 长文本处理:对超长文本(如整篇文档)的嵌入效果可能不如专用模型。
2. BGE-M3
- 优点:
- 多语言增强:支持 100+ 语言,覆盖更广的国际场景。
- 多功能性:同时支持 密集检索(dense retrieval)、稀疏检索(lexical search)和 多向量检索(multi-vector),适用复杂场景。
- 长文本优化:对长上下文的分块和语义捕捉能力更强。
- 缺点:
- 计算资源更高:模型更大,推理速度和显存占用可能高于普通 BGE。
- 复杂度提升:需根据任务类型选择检索模式(密集/稀疏),增加了使用门槛。
方式 4:递归字符切(Recursive Character)
做法:先按段落 → 句子 → 词,层层拆,直到 ≤ 设定长度。
优点:兼顾完整性与长度,LangChain/LlamaIndex 默认招式。
缺点:规则多,实现稍复杂。
这个方式用的人多,不过也很复杂,但是许多api提供了这种能力。不需要你自己手搓实现。
方式 5:按主题/语义切
做法:先用大模型或 TextTiling、BERTopic 找主题边界,再切。
优点:块内主题一致,检索更准。
缺点:速度慢,需要 GPU/额外模型。
你可以理解成为先用大模型给你处理一波,归归类,然后返回给你。你在向量化存起来。
招式 6:按文档结构切
做法:Markdown 按 ##、Word 按标题、PDF 按书签。
优点:层级清晰,适合手册、论文。
缺点:依赖解析器;无结构的网页或 TXT 不适用。
总结下具体的使用场景
|
场景 |
推荐招式 |
典型参数 |
|
客服 FAQ |
句子切 |
每句 ≤ 80 字 |
|
长篇小说 |
递归字符切 |
chunk=512, overlap=50 |
|
技术手册 |
结构切+递归 |
先按章节,再按512字符 |
|
实时问答 |
滑窗切 |
chunk=256, overlap=50 |
|
超大数据 |
固定长度切 |
chunk=1024, 无overlap(省存储) |
一句话总结
短文本 → 句子切;
长文档 → 递归字符切;
主题强 → 语义切;
想最稳 → 递归字符 + 滑窗 overlap。
许多工作场景都是多元化的,就是为了让结果更加精准,自己会做许多额外的处理,这也是为什么车企做的大模型说自己在车信息领域检索第一,问答类的说自己的大模型在问答类领域第一,由于他们就是把自己的内容惊醒了定制化的检索,放到了向量库里,然后定制化自己的检索精准度。
所以用什么,怎么用还是需要结合公司实际情况来选择。