RAG分块策略基准测试:固定大小 vs 语义 vs 文档感知
控制变量基准测试,比较五种RAG分块策略——固定大小、递归、语义、文档感知和滑动窗口——涵盖检索精度、延迟、token效率和最佳适用场景。
分块是任何RAG管道中影响力最大的决策。做对了,检索精度提升15到30个百分点。做错了,再多的提示工程或模型升级都无法弥补。
然而,大多数团队选择分块策略时依据的是博客文章或所选框架的默认设置,而 非经验数据。本文提供了这些数据。我们在标准化的企业文档语料库上对五种分块策略进行了基准测试,并测量了真正重要的指标:检索精度、延迟、token效率和跨文档类型的稳健性。
五种策略
在展示数据之前,先简要介绍每种方法。
固定大小分块将文档分割为预定token数量的块(通常256-512 tokens),可选重叠。这是最简单的方法,也是大多数RAG框架的默认设置。每个块的大小相同,与内容结构无关。
递归字符分割使用分隔符层次结构——段落分隔、然后句子边界、然后单词边界——在保持目标块大小的同时在自然断点处分割文档。LangChain推广了这种方法,它仍然是生产系统中最常部署的策略。
语义分块使用嵌入模型检测文档内的主题边界。相邻句子根据其嵌入的余弦相似度进行分组,当相似度降至阈值以下时开始新的块。这产生与连贯主题对应的可变大小块。
文档感知分块利用文档结构——标题、章节、表格、列表——来定义块边界。一个带标题的章节成为一个块。表格保持完整而非在行中间分割。这需要一个理解文档布局而非仅处理原始文本 的解析器。
滑动窗口以固定间隔创建重叠块,每个块与其相邻块共享一定百分比的token(通常20-50%重叠)。这确保没有信息落在边界上,代价是增加索引大小和token使用量。
测试方法
我们从四种企业文档类型构建了基准测试语料库:
- 合同(50份文档):多方协议,包含嵌套条款、定义术语和交叉引用
- 技术手册(50份文档):结构化文档,包含标题、代码块、表格和编号程序
- 财务报告(50份文档):年度报告,包含叙述性章节、数据表、脚注和图表
- 支持工单(50份文档):非结构化文本,包含短消息、时间戳和混合格式
对于每种文档类型,我们创建了100个基准真值问答对,其中答案存在于特定段落中。检索精度用Recall@5衡量——正确段落出现在前5个检索块中的查询百分比。
嵌入模型: OpenAI text-embedding-3-large(3072维) 向量存储: Qdrant with HNSW索引 目标块大小: 512 tokens(适用时) 重叠: 固定大小和滑动窗口策略使用20%
所有策略在相同硬件(32核CPU、64GB RAM)上使用相同的嵌入模型和向量存储配置进行测试。
基准测试结果
| 策略 | 检索精度(Recall@5) | 平均延迟(ms) | Token效率 | 索引大小(相对) |
|---|---|---|---|---|
| 固定大小(512 tokens) | 71.3% | 12ms | 1.0x(基线) | 1.0x |