你是否曾在备考时整理过错题本?这个习惯,和今天要介绍的 RAG 分块方法非常相似。
可以把它想象成按科目→章节→题型来整理题库,形成清晰的层级结构。复习时,先只取出最相关的错题,这些就是细粒度分块。如果多道题都来自同一章节,那就直接回顾整章,这就是向上合并。当然,复习时间总是有限的,当日预算用完就可以结束。
为什么 RAG 系统中分块质量至关重要
在 RAG(检索增强生成)中,文档的分块方式直接影响检索和生成的质量。如果分块割裂了语义关联的信息,或是把无关内容混在一起,检索阶段就会丢失关键上下文,生成阶段也难以给出准确答案。
图 1:不同分块方法得到相同答案。
真正的问题不只是分块大小,而是分块是否与文档底层的层次化语义结构对齐。这种对齐最终决定了能召回多少有用内容,以及模型回答的可靠性。
这就是为什么 RAG 中的分块不应被当作一次性预处理步骤。它值得被系统化地优化与评估。否则,我们就无法量化并改进支撑高质量回答的分块与检索核心。
HiChunk:层次化分块与自适应检索
HiChunk 将层次化分块策略与检索时的自适应自动合并(Auto-Merge)机制相结合,在语义完整性与灵活粒度之间取得平衡。
图 2:整体框架。(a) 长文档上 HiChunk 的迭代推理。(b) 自动合并检索算法。
把文档结构学习成一棵树
分块过程首先以句子切分为基本单元。将文档划分为句子 S[1:N] 后,HiChunk 使用微调后的语言模型,预测多个语义层级上的全局分块点 GCP₁:k。它不需要人工定义边界或使用僵硬规则,而是由模型同时学习在哪里切分以及如何将内容构造成层级。
对于超过模型输入长度限制的长文档,采用迭代推理策略:模型在令牌预算 L 内处理文档片段,预测局部分块点 LCP₁:k,并将其合并到全局树中。为防止层级漂移(尤其只出现一个顶层块时),会将前文上下文的剩余行加入以稳定预测。
HiChunk 在带有显式结构标签的数据集上训练,包括 Gov-report、Qasper 和 Wiki-727。为提升泛化能力,通过随机打乱文档段落、删除内容进行数据增强。训练与推理时模型分别支持最长 8192 和 16384 令牌,每个句子上限 100 字符。
面向查询的自适应检索
为在语义完整性与均匀检索粒度之间做平衡,HiChunk 输出的语义块会被进一步切分为固定大小的块(实验中称为 HC200)。这些固定大小的块通过共享的嵌入模型按与查询的相似度排序。检索过程分步进行:使用 BGE-m3 按相似度贪心遍历排序后的块,将高分块加入上下文,直到令牌预算耗尽。
这一阶段的自适应能力来自 Auto-Merge 算法。在满足条件时,属于同一父节点的多个子节点会向上合并为父节点,形成更大、语义更完整的块——前提是预算允许。
合并触发条件:
•
已检索到同一父节点的至少两个子块
•
这些子块的总长度超过阈值 θ∗
•
剩余预算 (T−t_cur) ≥ len(父块), then 用父块替换子块并重建上下文
阈值 θ∗ 会随预算使用动态增长:从父块长度的 1/3 增加到 2/3。合并到父节点后,如果条件仍然满足,循环可继续向上合并到祖先节点。
这种机制鼓励早期加入细粒度叶子块,后期提升为更大的父块,从而提升检索上下文的覆盖度与连贯性。
在粒度与完整性之间平衡
这种变体被称为 HC200,它结合了层次化分块的语义感知能力与固定长度分块的可预测性。在检索阶段搭配 Auto-Merge 后,整个系统称为 HC200+AM。
为保证公平对比,检索上下文始终按令牌数而非块数限制,通常上限为 4096 令牌。系统也支持在 2000~4000 令牌等不同预算下测试,以评估在不同资源条件下的鲁棒性。
评估
现有的很多 RAG 基准在评估分块策略时都存在不足:很难用现有基准单独评估分块方法的好坏。
这些基准中的大多数问题只需要一两句支撑证据。信号过于稀疏时,就难以区分分块的优劣。这与摘要这类现实中证据密集型任务形成鲜明对比。即便系统检索到正确句子,也无法确定是分块真的有效,还是只是运气好。
为此,作者专门构建了 HiCBench 来填补这一空白。
图 3:实验所用数据集统计。
该基准包含人工标注的多层级语义结构(从而定义切分点),每个问答对都设计为证据密集型,所需证据故意分布在一个或多个完整语义块中。与每个问答对一起,HiCBench 还提供显式证据句子,使得我们不仅能评估答案是否正确,还能评估是否从正确的块中检索到了正确信息。
图 4:分块准确率。HC 表示未做固定大小分块的 HiChunk 结果。最优结果加粗。
如图 4 所示,在分块准确率上:在两个域内数据集(Qasper、Gov-report)和域外数据集 HiCBench 上评估时,HiChunk 在切分点准确率上大幅超过单层级语义分块(SC)和基于 LLM 的分块(LC)方法。
思考
HiChunk 解决了 RAG 中的一个核心挑战:细粒度检索粒度与语义完整性保留之间的矛盾。通过将层次化分块与检索阶段的 Auto-Merge 机制结合,系统根据结构对齐和令牌预算动态合并相关块,确保检索到的上下文既相关又连贯。合并逻辑由明确条件驱动,并尊重分块层级中的父子关系,是一个实用、工程友好的方案。
不过在我看来:Auto-Merge 高度依赖底层嵌入模型的质量与可用令牌预算。其阈值与块排序与检索器打分方式强相关。在跨语料或切换嵌入模型时,可能需要重新校准,否则检索增益的波动会比预期更大。
-------------------------------------------------------------