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

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

在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 家族目前有两代产品:

  1. 第一代的 bge-base-zh-v1.5、bge-large-zh-v1.5 等,基于 BERT 类架构,训练时就固定了 512 token 的输入窗口。我们工作中用的就是bge-large-zh-v1.5这个版本。
  2. 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。

许多工作场景都是多元化的,就是为了让结果更加精准,自己会做许多额外的处理,这也是为什么车企做的大模型说自己在车信息领域检索第一,问答类的说自己的大模型在问答类领域第一,由于他们就是把自己的内容惊醒了定制化的检索,放到了向量库里,然后定制化自己的检索精准度。

所以用什么,怎么用还是需要结合公司实际情况来选择。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...