首页 > 人工智能 > 人工智能 > 系统梳理 RAG 系统的 21 种分块策略
编者按: 我们今天为大家带来的文章,作者的观点是:分块(chunking)才是决定 RAG 系统成败的真正关键因素,不同场景需要匹配相应的分块策略。
本文系统梳理了从基础到进阶的 21 种分块策略,涵盖了基础分块法、定长分块法、滑动窗口分块等传统方法,以及语义分块、上下文增强分块、多模态分块等前沿技术。
作者 | Anjolaoluwa Ajayi
编译 | 岳扬
检索增强生成(RAG)是许多 AI 工程师又爱又恨的技术(包括我)。
没错,因为从理论上看,它简单极了:“从你的定制数据中检索正确的上下文,然后让大语言模型基于此生成回答”。
但在实践中,你不得不面对海量杂乱无章的数据 —— 这些数据以你见过的最混乱随机的格式存储,接着就是数日绞尽脑汁的试错:
而模型依然回复:“我找不到足够的信息来回答你的问题”。
更糟糕的是,它还会一本正经地输出完全错误的答案(产生幻觉)。
毋庸置疑,RAG 系统中存在许多复杂的组件,但真正默默决定整个系统是否能正常运行的关键因素其实是分块(chunking)。
不同的数据类型、文件格式、内容结构、文档长度和使用场景,都需要匹配不同的分块策略。
一旦出错,你的模型要么抓不住重点,要么... 好吧,还是抓不住重点。
本文将解析 21 种分块策略(从基础到进阶),并说明何时该用何种策略,让你的 RAG 系统不再...掉链子。
1)基础分块法(按换行符分割)Naive chunking (split by newline)
遇到换行符就分割文本。仅此而已。

基础分块法示例 | 此图片由原文作者制作
适用场景:
注意:如果内容行过长,可能超出 LLM 的词元限制。如果内容行过短,模型可能遗漏上下文或产生幻觉。
2)定长分块法 Fixed-size/ fixed window chunking
按固定字符数/单词数切割文本(即便这样会切断完整句子或语义单元)。

定长分块法示例 | 此图片由原文作者制作
适用场景:
3)滑动窗口分块法 Sliding window chunking
类似定长分块,但每个文本块会与前块内容重叠,以保持跨块上下文之间的关联。

滑动窗口分块法示例 | 此图片由原文作者制作
适用场景:
4)按句分块法 Sentence-based chunking
在句子结尾处分割文本(通常以句号、问号或感叹号为标记)。

按句分块法示例 | 此图片由原文作者制作
适用场景:
5)按段分块法 Paragraph-based chunking
依据段落分割文本(通常以双换行符为界),使每块均包含完整的语义单元。

按段分块法示例 | 此图片由原文作者制作
适用场景:
6)按页分块法 Page-based chunking
将每个物理页面视为一个独立文本块。

按页分块法示例 | 此图片由原文作者制作
适用场景:
7)按预定结构分块法 Structured chunking
依据预定结构(如具有固定格式的系统日志记录、结构化数据中的预定义字段、HTML 标签或 Markdown 元素)分割文本。

按预定结构分块法示例 | 此图片由原文作者制作
适用场景:
8)基于文档层级的分块法 Document-Based Chunking
基于文档固有结构分块(按标题/小标题/章节划分)。

基于文档层级的分块法示例 | 此图片由原文作者制作
适用场景:
9)基于关键词的分块法 Keyword-based chunking
在预设关键词出现处分割文本,将其视为逻辑断点。

基于关键词的分块法示例(关键词为“Note”)| 此图片由原文作者制作
适用场景:
10)基于实体的分块法 Entity-based chunking
使用命名实体识别(NER)模型检测人物、地点、产品等实体,将相关文本围绕每个实体分组形成区块。

基于实体的分块法示例 | 此图片由原文作者制作
适用场景:
11)基于词元数的分块法 Token-based chunking
通过 tokenizer(分词器)按词元数量分割文本。
建议结合按句分块法(sentence chunking)等技术使用,避免破坏句子完整性导致上下文被破坏。
适用场景:
12)基于主题的分块法 Topic-based chunking
当文本主题发生变化时,可以通过以下方式对文本进行分块:

基于主题的分块法示例(使用聚类算法) | 此图片由原文作者制作
适用场景:
13)表格感知分块法 Table-aware chunking
独立识别表格内容,并按 JSON 或 Markdown 格式分块(可逐行/逐列/整表处理)。

表格感知分块法示例 | 此图片由原文作者制作
适用场景:
14)内容感知分块法 Content-aware chunking
根据内容类型动态调整分块策略(为段落/表格/列表等内容适配不同规则)。
适用场景:
15)上下文增强分块法 Contextual chunking
通过 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
本期互动内容 🍻
❓在处理特定类型文档(如法律合同或学术论文)时,您有哪些独特的分块技巧可以分享?
原文链接:
https://ai.gopubby.com/21-chunking-strategies-for-rag-f28e4382d399
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70018536/viewspace-3094838/ ,如需转载,请注明出处,否则将追究法律责任。