TL;DR
- 没有普遍最佳的RAG分块策略。 正确的方法取决于文档结构、问题类型、嵌入行为、重新排序以及生成器所需的上下文。
- 结构感知的章节分块是良好格式文档的最佳默认选项。 它保留标题和语义单元,同时避免模型驱动拆分器的成本。
- 递归令牌分块是最强的基线。 它简单、确定性强,并且有助于衡量更复杂的方法是否值得其额外的摄取成本。
- 父子检索在精确匹配和广泛答案上下文冲突时效果更好。 先检索小的子项,然后将其较大的父项返回给模型。
- 页面级分块适合面向页面的PDF值得测试。 NVIDIA的2025基准测试发现其在被测试数据集上平均最强,但结果仍因语料库和查询而异。
- 一起评估检索和答案质量。 一个提高向量召回的策略仍可能通过添加重复或无关的上下文而损害答案。
什么使得分块策略对RAG来说是“最佳”
最佳策略返回最小的证据单元,以回答查询,同时保留足够的周围上下文以便于理解。分块发生在获取和清理之后,但在嵌入和索引之前。Nstdata Crawl 可以提供来自授权网站的标准化Markdown或其他选定输出;它并不选择这些文档应该如何分块。
一个分块边界同时改变四件事:嵌入的内容、查询可以检索的内容、不相关文本到达重新排名器的程度,以及生成器看到的上下文。这就是为什么从框架教程复制分块大小,通常与真实文档接触后无法存活的原因。
本指南将每个策略与相同的决策字段进行比较:
| 字段 | 决策问题 |
|---|---|
| 边界信号 | 该方法使用令牌、段落、标题、页面还是语义变化? |
| 最佳语料库 | 哪些文档结构使信号可靠? |
| 查询契合 | 它是否倾向于精确事实、多句解释或交叉推理? |
| 上下文恢复 | 系统能否从精确命中扩展到更大的父项? |
| 摄取成本 | 该方法在索引过程中是否需要解析、嵌入或LLM? |
| 主要失败 | 哪种信息最可能被分割、重复或埋没? |
RAG术语表 提供了更广泛的检索和生成上下文。分块是该系统中的一个设计变量,而不是单独的质量开关。
策略比较
| 策略 | 边界信号 | 最佳语料库 | 查询契合 | 上下文恢复 | 摄取成本 | 主要失败 |
|---|---|---|---|---|---|---|
| 结构感知章节 | 标题、列表、段落 | 文档、文章、政策 | 解释性问题 | 可选的父章节 | 低到中等 | 不良或缺少标记 |
| 递归令牌块 | 有序分隔符加令牌限制 | 结构弱的混合文本 | 通用基线 | 默认情况下仅重叠 | 低 | 任意语义切割 |
| 父子 | 小子项加大父项 | 长结构化文档 | 精确检索与广泛答案 | 内置 | 中等 | 父项添加多余上下文 |
| 页面级 | PDF页面边界 | 报告、档案、手册 | 页面本地事实和分析 | 如果添加则临近页面 | 低 | 意义跨越页面 |
| 语义 | 嵌入相似性变化 | 记录和主题密集的散文 | 主题导向问题 | 可选的窗口扩展 | 高 | 阈值不稳定和成本 |
1. 结构感知章节分块:最佳默认
结构感知分块基于标题、段落、列表、表格和其他文档元素进行切分,然后将小的相邻元素合并到预算之内。它是技术文档、知识库和结构携带含义的网页内容的最佳默认选项。
Databricks RAG数据管道指南 区分了固定大小、段落、格式特定和语义方法,并强调最佳选择取决于数据和用例。结构感知拆分使用出版商已经提供的信息,因此它通常在不需要另一个模型调用的情况下保留章节的问题和答案关系。
将标题路径保留为元数据,例如 Product > Authentication > Token rotation。当短段落模糊时,在嵌入表示中重复该路径,但将干净的文本单独保留以获取最终上下文。表格和代码块应视为原子元素,或转换为为检索设计的表示形式。
主要故障出现在HTML模板过于复杂、缺少标题或PDF解析器丧失阅读顺序时。首先清理文档。一个深思熟虑的网络索引管道应该在每个块旁边保留规范URL、标题、标题路径、更新时间和内容哈希。
2. 递归标记分块:最佳基线
递归分块按顺序尝试首选分隔符——节、段落、句子,然后是更小的单元——直到每个块适合标记预算。这是最佳基线,因为它是确定性的、成本低廉的,并且在大多数RAG库中可用。
当嵌入模型强制标记限制时,请使用标记而不是字符。首先使用适中的大小和适度的重叠,然后通过实际问题进行调整。Azure AI Search 分块指南将512个标记与25%的重叠作为起点,而不是普适的最佳选择。这个区别是重要的:支持的常见问题、源代码库和年度报告不会共享理想的窗口。
重叠可以在边界间保留句子,但它也会导致向量重复、增加存储,并可能导致同一段落占据几个顶部结果。在检索后去重或多样化。如果需要大范围的重叠才能使答案连贯,则分割器可能忽略了有用的结构。
3. 父子分块:精确检索加上下文的最佳选择
父子分块索引小的子段落,但将每个子段落映射到更大的父部分。检索器匹配专注的子部分;应用程序将父部分或围绕子部分的有限区域发送给生成器。这也称为小到大检索。
Microsoft高级RAG指南描述了层次索引和Small2Big上下文扩展。当用户请求精确条款,但答案需要定义、例外或相关步骤时,此模式效果很好。
父子检索需要稳定的文档和偏移标识符。存储父ID、子位置、标题路径和内容版本。检索后,合并重复的父部分,并保留最相关的子部分位置,以便生成器不会重复接收相同的部分。
权衡在于上下文膨胀。一个小的子部分可以匹配一个关键字,而它的父部分包含几个不相关的小节。将父边界限制为连贯部分,对子部分使用重新排名,并将完整父检索与固定的周围窗口进行比较。
使用更干净的文档开始 RAG 分块使用 Nstdata Crawl 收集分界、结构化的网站内容,然后进行解析、分块、嵌入和检索。 尝试 Nstdata Crawl |
Markdown
JSON
{
"title": "...", "url": "..." } 屏幕截图
|
4. 页面级块:最佳用于以页面为导向的 PDF
页面级块将每个 PDF 页面保持为一个检索单元。当页面边界对读者重要、表格或图表是页面本地的,并且引用必须引用页码时,该方法有效。报告、文件、幻灯片式文档和手册是强有力的候选者。
在 2025 年的评估中,NVIDIA RAG 块基准测试报告了在其测试数据集中页面级块的最高平均端到端准确性。该评估还发现,最佳值因数据集和查询而异:一些以事实为导向的数据集偏爱较小的块,而分析性问题则受益于更大或页面对齐的上下文。可靠的结论是测试页面块,而不是宣称页面普遍优越。
当一个句子、表格或部分跨越页面边界时,页面会失效。页眉和页脚的重复也可能主导相似性。去除重复的家具,保留页面编号作为元数据,并在击中之后测试仅添加相邻页面,而不是默认嵌入多页面窗口。
5. 语义块:最佳用于没有标记的主题转变
语义块通过比较相邻句子或组的嵌入,检测意义的变化。它可以帮助处理文字稿、会议记录或没有标题结构且主题边界比长度更重要的长篇散文。
它的吸引力也是其风险。结果依赖于句子分割、嵌入模型、相似性阈值和用于平滑局部变化的窗口。更改嵌入模型可能会默默更改语料库边界并使缓存的评估无效。语义分割在摄取过程中还增加了嵌入工作,然后最终块再次嵌入。
只有在递归基线有文档化失败(例如反复混合相邻主题或将讨论与其结论分开)之后,才使用它。对分割器配置进行版本控制并保留源偏移量,以便块可以被再现。对于嘈杂的对话文本,比较语义边界与发言者轮次;更便宜的信号可能同样有用。
如何根据文档和查询类型进行选择
首先将文档结构用作路由信号,然后针对查询行为进行测试:
- 产品文档: 结构感知的部分,长主题的父子扩展。
- 简短支持文章: 段落或递归块,重叠较小。
- 财务报告和手册: 页面级加部分元数据;单独测试表格感知解析。
- 抄本: 演讲者轮次或语义块,保留时间码。
- 源代码: 语法树或符号边界而不是散文策略。
- 混合企业语料库: 按照 MIME 类型和解析器输出进行路由,而不是强制使用一个全局分隔符。
对于新的网站语料库,一个 自动化数据收集管道 应该只重新抓取政策允许的内容,检测内容变化,并重新嵌入受影响的块。每次运行重建每个向量会浪费资源并复杂化可追溯性。
揭示真实差异的评估协议
从实际使用中抽样的问题集开始。包括确切的查找、解释性问题、多部分请求、否定问题和答案跨越边界的查询。在调整分隔符之前标记支持源段落。
至少测量四个层面:
- 检索召回: 上述结果中是否包含所需的证据?
- 上下文精度: 检索到的文本有多少与问题相关?
- 答案忠诚度: 答案陈述是否得到了提供的上下文支持?
- 操作成本: 需要多少块、嵌入标记、重新排序输入和生成标记?
在比较分块时,保持嵌入模型、检索方法、重新排序器、提示和生成器不变。然后与 top-k 和上下文组合一起调整获胜策略。否则,强大的重新排序器可能被误认为是更强的分隔符。
检查失败,而不仅仅是平均值。一种方法可能总体表现良好,但始终丢失表头、例外或跨页定义。这些错误对产品决策的影响大于小的整体改进。
在分块之前准备网页内容
分块无法修复损坏的输入文档。导航、cookie 横幅、重复的移动标记、缺失的 JavaScript 渲染内容和格式不正确的阅读顺序都会成为低质量向量,无论分隔符如何。
Nstdata Crawl 可以收集经过授权的网站,并具有页面、深度、包含和排除控制,返回适合下游处理的格式。当标题和散文重要时使用 Markdown;当表格、属性或结构解析重要时保留 HTML。 AI 搜索代理指南 显示该摄取层在检索和合成之前的适用位置。
最终裁决:首先使用结构,然后证明例外
结构感知的部分分块是最好的通用默认,而递归标记分块是每种更复杂方法应超越的基准。当精确命中需要更广泛的上下文时,使用父子检索,测试面向页面的 PDF 时使用页面级块,并将语义分割保留给主题变化真实但标记较弱的语料库。
下一步是标记一个代表性的问题集,并在两到三种策略中运行相同的检索和答案评估。如果源页面不完整或嘈杂,在花时间设置分隔符阈值之前,用 Nstdata Crawl 修复获取。
提供更清洁的源文档给你的 RAG 管道
使用 Nstdata Crawl 生成带有保留 URL 和可选择格式的有界、结构化的网页输入,然后在一个可重复的语料库上评估分块策略。
常见问题解答
问:RAG 的最佳分块大小是什么?
没有普遍适用的最佳分块大小。从适中的标记窗口开始,然后在保持嵌入模型、检索器、重新排序器和生成器不变的情况下,对代表性查询进行调整。
问:RAG 块应使用多少重叠?
仅使用足够的重叠以在不可避免的边界间保留意义。高重叠会增加存储和重复检索;结构感知或父子方法通常更有效地保留上下文。
问:语义分块是否优于固定大小分块?
只有当语义分块的主题边界能显著改善测量的检索和答案质量,足以证明额外的摄取工作是值得的,语义分块才更好。递归固定标记分块仍然是更可重复的基准。
问:PDF 应该按页面分块吗?
页面分块是面向页面的报告、手册和备案的强候选,尤其在页面引用重要时。当关键句子、表格或部分经常跨越页面边界时,它的表现较差。





