系统梳理 RAG 系统的 21 种分块策略

编者按: 我们今天为大家带来的文章,作者的观点是:分块(chunking)才是决定 RAG 系统成败的真正关键因素,不同场景需要匹配相应的分块策略。

本文系统梳理了从基础到进阶的 21 种分块策略,涵盖了基础分块法、定长分块法、滑动窗口分块等传统方法,以及语义分块、上下文增强分块、多模态分块等前沿技术。

作者 | Anjolaoluwa Ajayi

编译 | 岳扬

检索增强生成(RAG)是许多 AI 工程师又爱又恨的技术(包括我)。

没错,因为从理论上看,它简单极了:"从你的定制数据中检索正确的上下文,然后让大语言模型基于此生成回答"。

但在实践中,你不得不面对海量杂乱无章的数据 ------ 这些数据以你见过的最混乱随机的格式存储,接着就是数日绞尽脑汁的试错:

  • 调整文本块(tweaking chunks)
  • 切换嵌入模型(switching embedding models)
  • 替换检索器(swapping out retrievers)
  • 微调排序器(fine-tuning rankers)
  • 重写提示词(rewriting prompts)

而模型依然回复:"我找不到足够的信息来回答你的问题"。

更糟糕的是,它还会一本正经地输出完全错误的答案(产生幻觉)。

毋庸置疑,RAG 系统中存在许多复杂的组件,但真正默默决定整个系统是否能正常运行的关键因素其实是分块(chunking)。

不同的数据类型、文件格式、内容结构、文档长度和使用场景,都需要匹配不同的分块策略。

一旦出错,你的模型要么抓不住重点,要么... 好吧,还是抓不住重点。

本文将解析 21 种分块策略(从基础到进阶),并说明何时该用何种策略,让你的 RAG 系统不再...掉链子。

1)基础分块法(按换行符分割)Naive chunking (split by newline)

遇到换行符就分割文本。仅此而已。

基础分块法示例 | 此图片由原文作者制作

适用场景:

  • 处理由换行符统一分隔的文本:笔记、项目列表、FAQ、聊天记录或每一行都包含完整语义的文字转录稿。

注意:如果内容行过长,可能超出 LLM 的词元限制。如果内容行过短,模型可能遗漏上下文或产生幻觉。

2)定长分块法 Fixed-size/ fixed window chunking

按固定字符数/单词数切割文本(即便这样会切断完整句子或语义单元)。

定长分块法示例 | 此图片由原文作者制作

适用场景:

  • 适用于原始的、杂乱的文本数据,如扫描文档、质量较差的转录文本,或无标点、无标题、无其他结构的大型文本文件。

3)滑动窗口分块法 Sliding window chunking

类似定长分块,但每个文本块会与前块内容重叠,以保持跨块上下文之间的关联。

滑动窗口分块法示例 | 此图片由原文作者制作

适用场景:

  • 处理需要保持长句间逻辑连贯性的文本类型:议论文、叙述性报告、自由形式的写作等。
  • 与定长分块法类似,适用于无结构的文本(无标题、无标点、无框架等),但需注意词元消耗与上下文连贯性间的平衡。

4)按句分块法 Sentence-based chunking

在句子结尾处分割文本(通常以句号、问号或感叹号为标记)。

按句分块法示例 | 此图片由原文作者制作

适用场景:

  • 适用于语义清晰的规整文本,每句话都承载着完整的语义,如技术博客、内容摘要或文档。
  • 可作为初级的分块手段产出小而聚焦的文本块,便于后续通过更复杂的分块技术重新组合或重排序这些文本块。

5)按段分块法 Paragraph-based chunking

依据段落分割文本(通常以双换行符为界),使每块均包含完整的语义单元。

按段分块法示例 | 此图片由原文作者制作

适用场景:

  • 当按句分块所得内容过于零碎时
  • 处理已具备段落结构的文档,如议论文、博客文章或研究报告

6)按页分块法 Page-based chunking

将每个物理页面视为一个独立文本块。

按页分块法示例 | 此图片由原文作者制作

适用场景:

  • 处理含固定页面的文档,如扫描版 PDF、演示文稿或书籍。
  • 需保留页面布局的检索场景(如在检索时需要引用页码)。

7)按预定结构分块法 Structured chunking

依据预定结构(如具有固定格式的系统日志记录、结构化数据中的预定义字段、HTML 标签或 Markdown 元素)分割文本。

按预定结构分块法示例 | 此图片由原文作者制作

适用场景:

  • 处理结构化/半结构化数据,如系统日志、JSON 记录、CSV 文件或 HTML 文档。

8)基于文档层级的分块法 Document-Based Chunking

基于文档固有结构分块(按标题/小标题/章节划分)。

基于文档层级的分块法示例 | 此图片由原文作者制作

适用场景:

  • 当源文件具备清晰的章节结构时,如在技术文章、操作手册、教材或学术论文中。
  • 可作为进阶分块技术(如按层级分块(hierarchical chunking))的预处理步骤。

9)基于关键词的分块法 Keyword-based chunking

在预设关键词出现处分割文本,将其视为逻辑断点。

基于关键词的分块法示例(关键词为"Note")| 此图片由原文作者制作

适用场景:

  • 文档无标题结构但含标志性的关键词(且这些关键词可稳定标记新主题的起始)时使用

10)基于实体的分块法 Entity-based chunking

使用命名实体识别(NER)模型检测人物、地点、产品等实体,将相关文本围绕每个实体分组形成区块。

基于实体的分块法示例 | 此图片由原文作者制作

适用场景:

  • 处理特定类型的实体(人物/地点/组织等)对文档理解起决定性作用的文件,如新闻报道、法律合同、案例研究或电影剧本。

11)基于词元数的分块法 Token-based chunking

通过 tokenizer(分词器)按词元数量分割文本。

建议结合按句分块法(sentence chunking)等技术使用,避免破坏句子完整性导致上下文被破坏。

适用场景:

  • 无标题/无段落结构的非结构化文档。
  • 使用低词元限制的 LLM 时(避免响应被强制截断或长文本输入被丢弃)。

12)基于主题的分块法 Topic-based chunking

当文本主题发生变化时,可以通过以下方式对文本进行分块:

  • 首先,将文本拆分为小单元(句子/段落)
  • 然后,使用主题建模或聚类算法将相关单元合并为区块

基于主题的分块法示例(使用聚类算法) | 此图片由原文作者制作

适用场景:

  • 当文档涵盖多个主题,且需保持语义焦点时。
  • 适用于主题转变较为平缓但未通过明确的标题或关键词标注的文本。

13)表格感知分块法 Table-aware chunking

独立识别表格内容,并按 JSON 或 Markdown 格式分块(可逐行/逐列/整表处理)。

表格感知分块法示例 | 此图片由原文作者制作

适用场景:

  • 含表格元素的文档。

14)内容感知分块法 Content-aware chunking

根据内容类型动态调整分块策略(为段落/表格/列表等内容适配不同规则)。

适用场景:

  • 混合格式的文档(含多种文本结构)。
  • 需保持原生格式完整性的场景(表格不分割/段落不截断等)。

15)上下文增强分块法 Contextual chunking

通过 LLM 实现:

  • 分析知识库的部分或全部内容。
  • 在嵌入前为每个文本块注入简短且相关的上下文

上下文增强分块法示例 | 此图片由原文作者制作

适用场景:

  • 知识库的全部内容或部分内容在 LLM 的词元限额内。
  • 处理复杂文档(如财报/合同等)。

16)语义分块法 Semantic chunking

基于嵌入相似度聚合主题相关的句子/段落,保持语义聚焦性。

适用场景:

  • 当按段分块法或定长分块法失效时
  • 处理含混杂主题的长文档。

17)递归分块法 Recursive chunking

首先使用大粒度的分隔符(如段落)分割文本。

如果任何生成的分块超过预设的分块大小限制,对这些区块递归使用小粒度分隔符(如句子或单词)进行分割,直至所有分块都符合所需大小。

适用场景:

  • 处理句子长度不规则或不可预测的文本,如访谈记录、演讲内容、自由形式的写作内容。

18)嵌入优先分块法 Embedding chunking

常规流程是先分块后嵌入,但此方法先将所有句子全部嵌入,再按顺序逐一处理,若相邻句的相似度高于设定阈值则合并为一组,低于阈值则进行拆分。

适用场景:

  • 无结构(无句子分隔/标题/章节符/标记等)的文档
  • 当基础技术(如滑动窗口分块法)效果不佳时

19)基于大模型/智能体的分块法 Agentic / LLM-based chunking

将分块的决策权完全交由 LLM,由其自主决定文本的分割方式。

适用场景:

  • 当内容复杂或结构不明确,需要类似人类的判断力来确定分块边界时

注意:该方法计算成本较高。

20)分层分块法 Hierarchical chunking

将文本按照多个层次(如章节、子章节、段落)进行分块,以便用户能够以不同详细程度检索信息。

适用场景:

  • 具备清晰层次结构的文档,如技术文章、手册、教材、研究论文等
  • 希望用户在不丢失上下文的情况下,同时探索整体概述和详细信息。

21)多模态分块法 Modality-Aware Chunking

针对不同内容类型(文本、图像、表格)实施差异化的分块策略。

多模态分块法示例 | 此图片由原文作者制作

BONUS:混合分块法 Hybrid chunking

融合多种分块技术、启发式规则、嵌入模型以及 LLM 来提升分块过程的可靠性。

适用场景:

  • 单一分块方法效果不足时,需组合方案应对复杂的数据结构。

END

本期互动内容 🍻

❓在处理特定类型文档(如法律合同或学术论文)时,您有哪些独特的分块技巧可以分享?

原文链接:

ai.gopubby.com/21-chunking...

相关推荐
school20233 小时前
贵州在假期及夏天结束后保持旅游活力的策略分析
人工智能·美食
TextIn智能文档云平台3 小时前
AI如何理解PDF中的表格和图片?
人工智能·pdf
蒋星熠4 小时前
.NET技术深度解析:现代企业级开发指南
人工智能·python·深度学习·微服务·ai·性能优化·.net
拓端研究室4 小时前
Python-Flask企业网页平台深度Q网络DQN强化学习推荐系统设计与实现:结合用户行为动态优化推荐策略
人工智能
做科研的周师兄4 小时前
【机器学习入门】3.2 ALS算法——从评分矩阵到精准推荐的核心技术
人工智能·python·深度学习·线性代数·算法·机器学习·矩阵
2202_756749694 小时前
YOLO 目标检测:YOLOv5网络结构、Focus、CSP、自适应Anchor、激活函数SiLU、SPPF、C3
人工智能·yolo·目标检测·php
nju_spy4 小时前
机器学习 - Kaggle项目实践(7)NLP with Disaster Tweets 灾难消息
人工智能·深度学习·自然语言处理·bert·tf-idf·glove·南京大学
九年义务漏网鲨鱼5 小时前
PyTorch 训练随机卡死复盘:DataLoader × OpenCV 多进程死锁,三步定位与彻底修复
人工智能·pytorch·opencv