一文讲清:RAG的5种切分策略以及RAG 应用程序的典型工作流程

158 阅读5分钟

RAG 的5种分块策略

以下是 RAG 应用程序的典型工作流程:

图片

RAG:先将补充资料转化为向量形式存储,当接收到查询请求时,将这些查询与存储的向量进行相似度比对,最终将与查询最匹配的向量化信息连同原始查询一并输入LLM处理。

考虑到附加文档的体量可能十分庞大,在第一步处理过程中还包含了文档分块操作,即将大型文档分割成若干体积更小、更便于处理的片段单元。

图片

这一环节具有决定性意义,因为它可以确保文本适合嵌入模型的输入大小,其核心价值在于使文本严格适配模型输入的容量限制。

同时,它能显著提升检索流程的效能与精确度,而检索质量正是决定最终输出品质的关键因素。

以下是 RAG 的五种分块策略:

1)固定大小分块

生成块的最基础、最便捷的实现方式是通过固定字符数、单词数或符号数将文本切割为等长段落。

图片

由于直接分割会破坏语义流,因此建议在两个连续的块之间保持一些重叠(上图蓝色部分)。

这很容易实现。此外,由于所有块的大小都相同,因此可以简化批处理。

但有一个大问题。这通常会打断句子(或想法)。因此,重要信息可能会分散到各个块之间。

2)语义分块

这个想法很简单。

图片

根据句子、段落或主题部分等有意义的单位对文档进行细分。

接下来,为每个片段创建嵌入。

假设我从第一个片段及其嵌入开始。

如果第一个段的嵌入与第二个段的嵌入具有较高的余弦相似度,则这两个段形成一个块。

这种情况持续到余弦相似度显著下降为止。

一旦发生这种情况,我们就开始新的部分并重复。

输出结果可能如下所示:

图片

与固定大小的文本分割不同,动态分块通过语义边界识别技术,能够智能地保持语言的自然流变性与思想完整性。

每个语义单元承载更丰富的上下文信息,这种特性显著提升了向量检索的精准度,进而促使大语言模型生成更具逻辑连贯性与主题相关性的响应。

然而,该方法的核心挑战在于余弦相似度阈值的动态适配问题。

由于不同文档的语义密度和表达风格存在差异,统一的相似度阈值难以适用于所有场景,可能造成关键语义边界的误判或遗漏。

3)递归分块

这也简单。

图片

首先,根据固有分隔符(如段落或章节)进行分块

接下来,如果块大小超出预定义的块大小限制,则将每个块拆分为更小的块。但是,如果块符合块大小限制,则不会进一步拆分。

输出结果可能如下所示:

图片

如上图:

首先,我们定义两个块(紫色的两个段落)

接下来,将第1段进一步拆分成更小的块

与固定大小的块不同,这种方法还保持了语言的自然流畅并保留了完整的想法。

但是在实施和计算复杂性方面有一些额外的开销。

4)基于文档结构的分块

这是另一种直观的方法。

图片

该技术通过识别文档的层级化特征(例如标题层级、章节编号或段落间距)自动划分内容区块。

这种设计使得系统能够与文档的语义单元保持同步,从而在内容分割过程中维持原有的逻辑框架不变。

输出结果可能如下所示:

图片

也就是说,该算法默认数据呈现高度规整的排列特征,而实际场景中往往存在分布离散、形态各异的复杂情况。

再者,信息单元的尺寸可能产生显著波动,甚至突破模型处理容量的阈值边界。建议考虑采用分层聚合与动态分治相结合的混合策略。

5)基于 LLM 的分块

图片

既然每种分块技术都存在局限性,为什么不利用大语言模型(LLM)来构建智能语义块呢?

通过设计精准的提示词,可以引导LLM生成既保持上下文独立性又具备完整语义的文本单元。

这种方案的核心优势在于,LLM对复杂语义关系的理解能力远超传统规则匹配或统计分块方法,能够精准捕捉术语关联、指代消解等深层语言特征,从而显著提升分块结果的语义连贯性。

当然,这种技术也面临双重挑战:其一,作为计算密集型方案,它需要消耗比传统方法高得多的算力资源;其二,受限于模型固有上下文窗口长度,处理长文档时需采用滑动窗口等策略来维持语义完整性。

AI大模型系统化学习入口