news 2026/4/15 20:19:27

RAG分块:四大基准测试告诉你怎么切最靠谱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG分块:四大基准测试告诉你怎么切最靠谱

最近看了一篇博客,主要讲分块的基准测试,挺有意思。

递归拆分 512 tokens、10-20% 重叠,这套看似平庸的配置,跑赢了更聪明的语义分块。

2026 年四项独立基准给出了相同结论。

原文链接:https://blog.premai.io/rag-chunking-strategies-the-2026-benchmark-guide/

一、先说结论

做 RAG 的人大概都经历过这么个阶段:一开始按固定长度切文档,觉得太粗糙,然后换成语义分块,觉得这才智能,结果上线后发现回答质量反而掉了。

到底出了什么问题?

2026 年初,FloTorch、NVIDIA、Chroma Research 和 Superlinked VectorHub 四家机构分别发布了 RAG 分块策略的基准测试报告。

测试方法不同、数据集不同、评估指标也不同,但指向了同一个方向——递归字符拆分(Recursive Character Splitting)仍然是最稳的通用选择,而语义分块在实际答案生成上存在一个容易被忽视的陷阱。

这篇文章把四项测试的数据掰开了讲,帮你搞清楚:什么场景该用什么切法,以及那些听起来更高级的策略为什么不一定更好用。

二、语义分块的悖论:检索 91.9%,答案 54%

先看最反直觉的一组数据。

Chroma Research 的测试中,语义分块拿到了 91.9% 的 Token 级检索召回率——找到了几乎所有相关文本。听起来很棒。

但在 FloTorch 2026 年 2 月的端到端测试中(50 篇学术论文,覆盖 10 个学科,总计 905,746 tokens),语义分块的最终答案准确率只有 54%。

同一策略,一个 91.9%,一个 54%,差在哪里?

差在衡量的东西不一样。

Chroma 测的是能不能找到相关的文字片段,FloTorch 测的是大模型基于这些片段能不能给出正确答案。

语义分块的问题在于它产生的分块太碎了。

在 FloTorch 测试中平均每个分块只有 43 个 tokens,大约两三句话。这些微小片段确实和查询语义相关,但信息密度太低,大模型拿到手里拼不出完整答案。

换个比喻:你让人帮你找一本书里关于某个话题的内容。语义分块相当于把相关的句子一条条撕下来递给你,每条都相关,但你读完一堆纸条还是不知道原文在讲什么。

这个发现的实际意义是:不要单独看检索指标来评估分块策略,必须跑端到端的答案准确率

三、四项基准测试的核心数据

逐个拆解一下。

FloTorch 2026(最大规模真实文档测试)

  • 语料:50 篇学术论文,905,746 tokens,涵盖 10+ 学科
  • 模型:gemini-2.5-flash-lite(生成),text-embedding-3-small(嵌入)
  • 冠军:递归字符拆分 512 tokens,准确率 69%
  • 固定大小 512 tokens 紧随其后,67%
  • 语义分块 54%,基于命题的代理式分块垫底

递归拆分赢在哪里?它优先按段落(\n\n)切,其次按换行、空格逐级降级。

这意味着它尽可能保留了文本的自然边界,同时不依赖任何额外的模型调用。

零成本加成,效果最好。

NVIDIA 2024(金融文档专项)

  • 语料:含 FinanceBench 在内的 5 个数据集
  • 发现:页面级分块在金融报告上表现最好(准确率 0.648),因为财务报告的页面边界通常对应完整的表格或章节
  • 1024 tokens 的大分块在 FinanceBench 上达到 57.9%

金融文档的启示:当文档自身的物理结构(分页、章节)承载了语义信息时,利用这种结构比按 token 数切更合理。

Chroma Research(检索阶段专项)

  • 关注 Token 级检索召回率
  • 语义分块 91.9%,检索阶段确实强
  • 但正如上面说的,这个数字不等于最终答案质量

Superlinked VectorHub(嵌入模型对比)

  • 句子级分割 + ColBERT v2 拿到最高 MRR 0.3123
  • 说明分块策略和嵌入模型的选择是耦合的,换了模型可能结果完全不同

四、策略怎么选

策略这么多,怎么在自己的项目里做决策?

下面这张图是我按文档类型的选型速查,仅供参考。

核心思路就四步:

第一步:默认用递归字符拆分。

512 tokens 分块,50-100 tokens 重叠。这是经过基准验证的最稳默认值。不需要额外模型调用,处理速度快,成本低。大多数通用场景到这一步就够了。

第二步:有结构就用结构。

  • PDF 报告有分页,用页面级分块。
  • Markdown 文档有标题层级,用标题感知分块。
  • 代码仓库,按函数或类切。前提是文档的结构边界确实承载了语义信息。

第三步:话题混杂才考虑语义分块。

会议纪要、多话题长文档,话题转换没有明显的格式标记,这时候语义分块的按话题自动断句能力才有用武之地。但一定要设最小分块下限(建议 ≥ 256 tokens),防止碎片化。

第四步:高价值场景上 LLM 分块。

法律合同、监管文件、技术规范这类文档,单篇价值极高,数量有限。让 LLM 判断语义完整单元,质量最高,对模型要求没那么高,单篇处理成本也很低了。

五、一些实操中容易踩的坑

坑一:重叠设太大。

有人把重叠设到 30-50%,想着多些上下文总没坏处。

实际上过大的重叠会导致索引膨胀,检索时返回大量重复内容,反而干扰大模型判断。10-20% 是多个测试验证过的甜区。

坑二:对自动分页的 PDF 用页面级分块。

很多 PDF 是从 Word 或网页导出的,分页完全是排版自动算的,和内容无关。

对这类 PDF 做页面级分块,等于按随机位置切,还不如老老实实递归拆分。

坑三:短文档也切。

FAQ 文档、产品说明这类几百字的短文本,切了反而丢信息。

Firecrawl 的测试数据表明,短文档直接整篇喂进去效果更好。

坑四:只测检索不测生成。

前面语义分块的例子已经说明了,检索指标好看不代表最终答案好。

评估分块策略,一定要跑端到端的 QA 评估。

六、LangChain 递归拆分实操

用 LangChain 实现推荐的默认策略,码量很小:

from langchain.text_splitter import RecursiveCharacterTextSplittersplitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=80, # 约 15% 重叠 separators=["\n\n", "\n", " ", ""], length_function=len, # 按字符计;用 tiktoken 可按 token 计)chunks = splitter.split_text(document_text)

如果要按 token 数切(更精确):

import tiktokenenc = tiktoken.encoding_for_model("gpt-4")splitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=80, separators=["\n\n", "\n", " ", ""], length_function=lambda text: len(enc.encode(text)),)

LlamaIndex 那边思路一样,用SentenceSplitter配合chunk_size=512chunk_overlap=80即可。

七、总结

分块策略的选择可能没有想象中那么玄学。四大基准测试给出的信号很一致:

  1. 递归字符拆分 512 tokens + 10-20% 重叠,作为默认起点,跑赢了大多数更智能的替代方案
  2. 语义分块检索强但生成弱,根源是碎片化,如果用,一定设最小分块下限
  3. 结构化文档(金融报告、技术文档)优先利用文档自身结构
  4. 评估分块策略必须看端到端答案准确率,不能只看检索指标

别被"语义"“智能”"代理式"这些标签迷住了。

分块的目的是给大模型提供信息密度足够高、边界足够合理的上下文。有时候,最朴素的办法就是最管用的。

当然,把索引优化好,可以一定程度的去解决碎片化的问题。

假如你从2026年开始学大模型,按这个步骤走准能稳步进阶。

接下来告诉你一条最快的邪修路线,

3个月即可成为模型大师,薪资直接起飞。

阶段1:大模型基础

阶段2:RAG应用开发工程

阶段3:大模型Agent应用架构

阶段4:大模型微调与私有化部署

配套文档资源+全套AI 大模型 学习资料,朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】👇👇


配套文档资源+全套AI 大模型 学习资料,朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】👇👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:15:28

springboot酒店管理系统小程序(文档+源码)_kaic

系统实现用户前台功能(前端)用户注册模块用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有符号&#xff0c…

作者头像 李华
网站建设 2026/4/15 20:15:18

户用储能爆火,贸易商怎么布局工商储 + 户用双产品线?

最近和不少做跨境能源产品的贸易商朋友交流,发现大家普遍遇到两个矛盾:一方面户用储能的海外需求还在涨,尤其是欧洲、东南亚的家庭用户采购量逐月攀升;另一方面单一做户用品类的利润越来越薄,不少老客户同时咨询工商业…

作者头像 李华
网站建设 2026/4/15 20:14:16

NBTExplorer终极指南:掌握6种Minecraft数据格式的免费编辑器

NBTExplorer终极指南:掌握6种Minecraft数据格式的免费编辑器 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经想要深入了解Minecraft世界的秘…

作者头像 李华
网站建设 2026/4/15 20:12:16

瀚高数据库定时任务pg_cron1.6版本安装说明

文章目录文档用途详细信息文档用途 本文主要介绍如何使用pg_cron1.6版本去安装及配置pg_cron任务。 详细信息 1、安装扩展 --登陆业务库 psql lizp_db sysdba alter system set shared_preload_libraries to ‘pg_stat_statements,pg_cron’; #注意单引号是英文格式 -- 配…

作者头像 李华
网站建设 2026/4/15 20:08:07

Postman API测试

Postman API测试:高效开发与调试的利器 在当今的软件开发中,API(应用程序接口)已成为不同系统间交互的核心纽带。无论是前后端分离架构,还是微服务之间的通信,API的稳定性和性能都至关重要。而Postman作为…

作者头像 李华