@TeachTheMachine:决定你的RAG是否有效的7种分块策略
摘要
来自MachineLearningMastery的一篇教育性文章,涵盖了RAG流水线的七种分块策略,从固定大小令牌分块到高级语义和层次化方法,并提供了每种策略的适用场景指导。
查看缓存全文
缓存时间: 2026/08/08 03:00
7 Chunking Strategies That Decide Whether Your RAG Works
https://t.co/VQTGRHMpjs
决定 RAG 成败的 7 种分块策略 - MachineLearningMastery.com
来源:https://machinelearningmastery.com/7-chunking-strategies-that-decide-whether-your-rag-works/ 在本文中,你将了解 RAG 管道的七种不同的分块策略、每种策略的工作原理,以及如何根据你的具体用例在它们之间进行选择。
我们将涵盖的主题包括:
- 为什么朴素的固定大小 Token 分块会破坏语义,而句子窗口检索和结构化分块等策略如何保留语义。
- 高级方法,包括语义分块、层次分块、基于 LLM 的命题分块,以及多模态保留表格的分块。
- 在生产级 RAG 系统中,除分块策略之外的重要事项,包括索引生命周期管理和分块去重。
7 种分块策略决定你的 RAG 是否有效
朴素方法行不通
将非结构化文本直接放入固定大小的 Token 窗口,并称之为检索增强生成(RAG)管道,这种做法只会导致幻觉。RAG 本质上是在给 AI 开卷考试:系统在数据库中搜索相关笔记,将其交给大语言模型(LLM),然后模型根据这些笔记综合出答案。但那个数据库完全取决于你的分块策略——也就是将大文档切分成更小片段、供嵌入模型读取和存储的规则手册。
朴素方法将文档切分成静态的 512-Token 数组,这会从中间切断语义边界,在嵌入模型(将文本转换为数学数组的系统)看到文本之前就破坏了上下文。如果将一个否定限定词与其主语分开,或者将一个函数定义拆分到两个向量中,检索器就会实际性地失明,从而在 LLM 的开卷考试中抓取到错误的笔记。
在我们深入之前,值得澄清一点:分块(对文本字符串进行确定性或启发式拆分)和解析(从原始文档格式中提取逻辑 DOM/AST 结构)并不是一回事。糟糕的解析必然导致糟糕的分块,但即使解析完美,也需要扎实的分块架构来经受生产查询负载的考验。
1. 固定大小 Token 分块(带重叠)
概念: 严格按原始 Token 数量拆分文本,并使用滑动窗口来捕获边界上下文。
工作原理: 一个快速的 tokenizer 将原始文本映射为整数数组,将其切片为统一的数据块(例如 512 个 Token),并以固定余量(例如 50 个 Token)将它们重叠,然后再解码回文本字符串,交给嵌入编码器。
需要留意的是: 它在结构上是盲目的。你不可避免地会将 try/except 块从中间切开,或将代词与其先行词分离。重叠可以稍微缓解这一点,但会以重叠比例线性地增加向量数据库的膨胀和摄入计算成本。
适用场景: 处理同质化的非结构化日志文件或扁平文本流时,这些文本流不存在结构边界,且摄入延迟是首要优先级。
2. 句子窗口检索(从小到大)
概念: 嵌入一个细粒度的块以最大化向量搜索精度,然后在提示组装期间将扩展后的周边上下文返回给 LLM。
工作原理: 在摄入时,文档被解析为单独的句子。每个句子被嵌入,并附带一个指向其周围 \( k \) 个句子的元数据指针。在检索时,向量数据库返回最近的 \( n \) 个句子,中间件会在将它们交给生成模型之前,用它们扩展后的文本窗口替换它们。
需要留意的是: 这里存在冗余上下文注入的真实风险。如果两个相邻句子都超过 top-\( k \) 检索阈值,你的中间件需要对重叠的上下文窗口进行基于图的去重。跳过这一步骤,你将撑爆 LLM 的上下文窗口,并引发推理延迟峰值。
适用场景: 领域事实密集且高度微妙时(例如医学文献、法律条文等),你需要高检索精度,同时又不丢失周边上下文。
3. 文档感知的结构化分块
概念: 沿着文档的逻辑 markdown 或 DOM 边界(H1、H2、段落、列表项)拆分文档,而不是通过任意的 Token 限制。
工作原理: 管道使用解析器构建文档结构树,对叶节点(段落和列表)进行分块,并将父级标题层次前置到每个块(例如 H1: Q3 Earnings > H2: Risk Factors > [Chunk])。这样无论块在空间上位于何处,都能保留全局上下文。
需要留意的是: 节点大小是非确定性的,且差异很大。一个大的子部分可能仍然超过嵌入模型的最大序列长度(对于密集编码器,通常为 512 或 1024 个 Token),从而被迫回退到基于 Token 的分块,这可能会破坏你花费计算周期解析出来的结构完整性。
适用场景: 摄入高度格式化的公司文档、API 文档或合同时,这些文档中的标题层次本身定义了语义载荷。
4. 语义(基于嵌入的)分块
概念: 通过测量相邻句子向量之间的距离来动态确定块边界,当语义漂移超过阈值时进行切分。
工作原理: 在文本上滑动一个句子级窗口,为每个句子生成轻量级嵌入。计算句子 \( i \) 和 \( i+1 \) 之间的余弦相似度(数学上的接近程度)。如果相似度低于一个经验调优的超参数 \( \epsilon \),则插入一个硬块边界。这个下降表示主题发生了变化。
需要留意的是: 摄入延迟和成本会显著增加。你需要在生成最终块嵌入之前,对每一个句子都强制做一次编码器的前向传播。而且 \( \epsilon \) 出了名的脆弱——在异构文档集上几乎不可能进行全局调优。
适用场景: 处理转录音频、会议记录或长篇叙事文本时,这些文本缺少结构化格式,但包含明显、不可预测的主题变化。
5. 层次 / 父子分块
概念: 创建一个分块树,其中多个细粒度的子节点映射到单个宽泛的父节点。检索到足够多的子节点,你就能得到整个父节点。
工作原理: 文本以多种粒度进行分块(例如 256 个 Token 和 1024 个 Token)。256-Token 块被嵌入,并通过向量存储中的元数据外键映射到其 1024-Token 父块。如果近邻(ANN)搜索检索到父块的 \( >x\% \) 的子节点,查询规划器就会执行一次合并,将子块替换为父块。
需要留意的是: 在分布式向量数据库中管理父子关系映射很快就会变得复杂。删除和文档更新需要在树上进行级联失效,而检索时的合并逻辑则会在关键路径上增加延迟。
适用场景: 查询范围变化很大时——从精确的事实型提取到整个文档章节的广泛摘要。
6. 智能体(LLM 驱动)命题分块
概念: 使用经过指令微调的 LLM 来读取文本流,并基于上下文理解注入结构断点,或提取原子命题。
工作原理: 文档被流式传输给一个快速 LLM,并带有严格的系统提示,指示其输出一个自然断点或不同事实命题的 JSON 数组。摄入管道随后沿着这些综合出的边界切分原始文档,并嵌入提取出的命题。
需要留意的是: 这保证了非确定性的摄入。LLM 会幻觉出断点、输出格式错误的 JSON,或在提取过程中静默丢弃文本——这些都会导致索引中不可恢复的数据丢失。并且它比程序化分块要慢得多。
适用场景: 针对价值极高、不规则的数据集,此类数据中分块质量决定了整个产品的可行性,但前提是摄入运行在异步批量队列中,而不是实时流中。
7. 多模态与保留表格的分块
概念: 将表格、图表和图形从标准文本中分离出来,将它们提取为独立对象,为向量化生成摘要,并维护指向原始表格数据的指针。
工作原理: 一个确定性的布局解析器或视觉语言模型(VLM)识别出表格。管道提取原始 HTML/Markdown,使用 LLM 生成表格语义要点的密集文本摘要,并且只嵌入摘要。检索层通过 ANN 搜索获取摘要,但会将原始 Markdown 表格传给最终的生成提示。
需要留意的是: 如果一个表格依赖于周围文本才能有意义(例如“下表 1 中显示的结果已针对对照组进行了归一化”),那么将表格分离就会剥离必要的待定依据,并产生幻影引用。宽表模式也可能超过旧一代生成模型的最大序列长度。
适用场景: 摄入财务报告、科学论文或高度量化的文档时,这些文档中标准的递归文本 tokenizer 会破坏空间列对齐。
7 种分块策略决定你的 RAG 是否有效
回顾 7 种 RAG 分块策略
超越分块
进入生产环境第 100 天后,真正的问题不再是分块策略,而是索引生命周期管理、状态同步和修剪过期数据。文档更新不可避免地会在你的数据库中产生碎片化的、孤立的块。如果你没有为你的块实现基于加密内容哈希的确定性 UUID,并严格执行生存时间(TTL)策略,你的向量数据库将会因过时的文本块而膨胀。这会在检索时导致重复的上下文注入,进而静默地降低 LLM 的推理质量,并抬高你的 Token 成本。
如果你的分块策略本身只是事后想法,那就别再痴迷于最新嵌入模型的基准分数。世界上最强的高密度检索器也无法恢复已经被朴素摄入管道弄乱的语义。把分块视为一个基础性的数据建模问题,积极测试你的边界,并构建一个能够预期结构失效的系统。
还没有评论。
相似文章
@DataScienceDojo: RAG系统中检索步骤的质量取决于提供给它的分块——而大多数团队并没有仔细思考……
本文讨论了RAG系统的五种分块策略,强调了检索精度与推理上下文之间的权衡,并指出适当的分块对于有效检索至关重要。
Adaptive Chunking:为RAG优化分块方法选择
介绍Adaptive Chunking,一个利用五项文档内在指标为RAG选择最佳分块策略的框架,将答案正确率从62-64%提升至72%,并将问题解决率提高超过30%。
@LearnWithBrij:别再像2022年那样构建RAG了。分块→嵌入→检索→生成 这条流水线能用……直到你尝试上线……
一个帖子解释了构建生产级RAG超越简单分块-嵌入-检索-生成所需的四个关键层次:智能查询路由、高级索引、多类型检索和持续评估。
@_avichawla: 面向AI工程师的8种RAG架构:(用法说明)1)Naive RAG——纯粹基于向量相似度检索文档…
一个推文串,解释了8种不同的RAG架构(Naive、Multimodal、HyDE、Corrective、Graph、Hybrid、Adaptive、Agentic)及其使用场景,并暗示了一种改进的索引技术。
记录了不断破坏我的RAG系统的故障模式:分块、过期索引、混合搜索等
一位开发者分享了调试RAG系统时遇到的故障模式,包括分块、过期索引和混合搜索的问题,以及滑动窗口分块和上下文检索等实用修复方法。