跳转至

Beyond Chunking: Discourse-Aware Hierarchical Retrieval for Long Document Question Answering

会议: ACL 2026
arXiv: 2506.06313
代码: https://github.com/DreamH1gh/DISRetrieval
领域: NLP 理解 / 长文档 QA / 检索增强生成
关键词: 长文档问答、RST、修辞结构理论、层级检索、跨语言

一句话总结

用修辞结构理论(RST)解析长文档的篇章结构,构建一棵句子级层级树并对中间节点做 LLM 摘要增强,最后在树上做结构感知的多粒度检索,使长文档 QA 在 QASPER / QuALITY / NarrativeQA / MultiFieldQA-zh 四个 benchmark 一致超越固定切块和 RAPTOR 语义聚类。

研究背景与动机

领域现状:长文档 QA 主流是「切块 + 检索 + 生成」,要么 flat-chunk(如 RAG 把文档切成 100-word 段落),要么用 RAPTOR 这种递归语义聚类构建文档树。

现有痛点:固定大小切块完全无视文档的篇章组织——一句话可能被腰斩到两个 chunk、原本互为对照的两段被分得很远;RAPTOR 用语义相似度聚类,把内容相近但篇章上关系不大的句子混在一起,丢失了文档原本「话题—对比—举证—结论」的层次。

核心矛盾:「相似度组织 vs. 篇章组织」——语言学早就指出,人类阅读靠的是修辞关系(contrast / elaboration / summary 等)而非表面相似度;现有 chunking 方法把这种结构信号完全丢掉了。

本文目标:把 RST 篇章结构系统性注入检索,让长文档 QA 不再依赖启发式切块,且要兼顾跨语言(英文 + 中文)。

切入角度:RST 把文档表示为以 EDU 为叶子、修辞关系为内节点的树。如果把 RST 树直接接入 retriever,结构本身就提供了多粒度的「天然 chunk」——叶子 = 句子(细),中间节点 = 修辞段落(粗),根 = 文档摘要。

核心 idea:把 RST 解析下放到「句子级 + 跨语言」+ 用 LLM 给中间节点写摘要,让一棵篇章树同时支持局部精准检索(叶子)与全局连贯检索(中间节点)。

方法详解

整体框架

DISRetrieval 三阶段:(1) 篇章感知树构造——先句子级 RST 解析每个段落 → 段内树 \(T_i\);再用 LLM 把每个 \(T_i\) 自底向上摘要成段落语义单元 \(u_i\);再用同一个 RST 解析器把 \(\{u_i\}\) 组合成文档级树 \(T_{doc}^*\);最后把 \(T_{doc}^*\) 的叶子替换回原段内树得到统一篇章树 \(T_D\)。(2) 节点编码:用 gte-multilingual-base 或 OpenAI text-embedding-3-large 给 \(T_D\) 中每个节点(句子+LLM 摘要)编码。(3) 结构感知检索:用 query 与所有节点算 cosine,按相关性排序,对叶子直接取、对中间节点做受控子树展开。

关键设计

  1. 粒度 + 语言自适应的 RST 解析器:

    • 功能:用同一个 transition-based 句子级 RST 解析器同时处理英文和中文长文档,避免传统 EDU 级解析的高开销和语义碎片化。
    • 核心思路:(a) 粒度适配——把现有 EDU 数据集做两步转换:句子内 EDU 合并成统一句子单元;句间关系用原 EDU 树的最低公共祖先(LCA)推断。(b) 语言适配——用 GPT-4o 把 RST-DT 训练集句子级翻译到目标语言(中文),与原始英文语料合并训练统一解析器 \(f_{discourse}\)。Transition system 维护栈 \(\sigma\) 和句子队列 \(\beta\),用 shift / reduce / pop_root 三种动作增量构造树;评分模型用 \(h_v\) 表示每个节点(叶子用 PLM 编码,内节点取子节点平均),输入栈顶三元素 + 队列首元素的拼接做 softmax 选动作。
    • 设计动机:传统 RST 在 EDU 级别每句切成数个最小篇章单元,长文档下计算开销大、语义太碎;上升到句子级既保留足够篇章信息又显著提速。LLM 翻译让无需中文 RST 标注就能跨语言迁移,对低资源语言友好。
  2. 自底向上 LLM 节点增强:

    • 功能:把篇章树中只有「修辞关系标签」的内节点,变成有具体文本内容的可检索表示,弥合「抽象关系 → 具体语义」之间的鸿沟。
    • 核心思路:对每个内节点 \(v\)(左右子 \(v_l, v_r\))应用阈值规则——\(v^* = f_{LLM}(v_l, v_r)\)\(|v_l|+|v_r| \geq \tau\),否则 \(v^* = f_{merge}(v)\)(直接拼接)。从叶子往上层级地把每个内节点变成「子树内容的简明摘要」或「直接拼接」。最终再用相同 RST 解析器在文档级再跑一次,把所有段落根节点 \(u_i\) 组成文档级树 \(T_{doc}^*\)
    • 设计动机:纯结构节点(如 Contrast / Elaboration)没有具体内容、无法和 query 做语义匹配;做 LLM 摘要可以让中间节点同时携带「这是一段对比论证」+「具体在比较 X 和 Y」两种信号。阈值 \(\tau\)(QASPER 设 0、QuALITY/NarrativeQA 设 50)平衡保真与压缩——学术论文句子独立性强宜直接拼接,叙事文短句多需要摘要聚合。
  3. 结构引导的双选检索:

    • 功能:用 query 在统一篇章树上做检索,既要细粒度证据又要连贯段落,最终给生成器一组多粒度证据。
    • 核心思路:先算 query 与每个节点的 cosine 相似度 \(\text{score}(v) = \cos(f_{enc}(q), \mathbf{e}_v)\),按分排序。然后做双策略选择:(a) 若 \(v\) 是叶子且未被用过,直接加入证据集 \(E\);(b) 若 \(v\) 是内节点,做「受控子树展开」——只在该子树内未被用过的叶子里挑分数前 \(k\) 个加入。直到 \(|E| \geq K\) 为止。
    • 设计动机:传统 flat retrieval 给出一堆均匀切块、要么过短失去上下文要么重复噪声;本文双选策略让高相关的具体句子和高相关的篇章段同时被选中,且避免子树内冗余。这种「叶子+内节点」混合输出,正对应人类阅读时既会精读某句、又会回望整段。

损失函数 / 训练策略

句子级 RST 解析器训练目标:\(\mathcal{L}(\theta) = -\log p(a^* \mid c) + \frac{\lambda \|\theta\|_2}{2}\),即每步动作的交叉熵 + L2 正则,使用 RST-DT 标注的 gold 树作监督。生成阶段全部 zero-shot 不训练。

实验关键数据

主实验(生成性能 F1 / Accuracy)

数据集 Context flatten-chunk RAPTOR Bisection DISRetrieval
QASPER (UnifiedQA-3B, OpenAI) 400 39.03 39.53 39.70 40.74
QASPER (GPT-4.1-mini, OpenAI) 400 44.78 43.85 45.69 46.31
QuALITY (Deepseek-v3, OpenAI) 400 76.56 75.22 76.94 77.71
NarrativeQA (BLEU) 24.24 25.05 24.71 25.39
MultiFieldQA-zh (Deepseek-v3, 400) 400 26.70 27.01 28.24 29.54

在所有上下文长度(200/300/400)× 嵌入模型(SBERT / OpenAI)× 生成模型(UnifiedQA-3B / GPT-4.1-mini / Deepseek-v3)× 4 数据集组合下一致超越基线。

消融实验(QASPER 检索性能 token-level F1)

配置 200 (OpenAI) 300 (OpenAI) 400 (OpenAI)
flatten-chunk 29.17 25.12 21.91
RAPTOR 27.18 23.57 20.64
Bisection(仅去掉篇章结构) 29.29 25.16 21.98
Full DISRetrieval 30.27 26.00 22.79

Bisection 共享了本文的 LLM 增强 + 层级检索机制但用二分树代替篇章树,仍稳定低于 Full DISRetrieval ~0.5-1 个点,证明「篇章结构」本身的不可替代价值。

关键发现

  • 篇章结构 > 语义聚类:DISRetrieval 始终强于 RAPTOR,说明「修辞关系」比「embedding 相似度」更适合做文档组织。
  • 黄金证据 (129 词) > 全文 (4170 词):QASPER 上 gold evidence 给出 50.71% F1,全文 48.81%,说明精准检索比塞全文更重要。
  • 解析器能力直接限制下游:训练数据 0→100% 时 retrieval recall 与 answer F1 单调上升,说明 RST parser 是核心瓶颈。
  • 跨数据集自适应:QuALITY(小说/对话/短句)检索到的中间节点深度 ~17、覆盖 ~88 叶子;QASPER(学术论文/长句)深度 ~5、覆盖 ~13。同一框架自然适配不同文档结构。
  • 效率:处理 50K 词文档 103s vs RAPTOR 338s(3× 加速),预处理一次后可被无数 query 复用。

亮点与洞察

  • 把语言学几十年的篇章理论实打实地嵌进神经检索,证明在 LLM 时代「结构化语言知识」依然有显著价值——这是对纯数据驱动派的有力反例。
  • 「段内 RST 树 → LLM 摘要 → 段间再 RST → 替换回去」这个嵌套构造让同一个 RST 解析器跑两次就能得到文档级层级,工程上极其干净。
  • 中间节点用 LLM 写摘要这一步看似平凡,实际解决了「语言学结构 vs 神经检索」之间最尴尬的鸿沟——纯结构标签无法做语义匹配,纯文本又无层次。
  • 自适应阈值 \(\tau\)(学术 0 / 小说 50)是非常实用的工程参数,给出了清晰的选择准则(短句多用大 \(\tau\),长独立句用小 \(\tau\))。

局限与展望

  • 篇章解析器是性能上限,目前训练在 RST-DT(新闻文本)上,对学术/小说/电影剧本等领域泛化但精度仍有提升空间。
  • 跨语言只演示了英中两语,要扩展到其他语言需要额外 LLM 翻译训练数据。
  • 阈值 \(\tau\) 是简单二值规则,未来可做基于内容复杂度和层级位置的动态选择。
  • 评测指标仍是传统 F1/BLEU/ROUGE,不一定能完全反映「篇章结构感知」带来的连贯性增益。

相关工作与启发

  • vs RAPTOR:他们用递归 embedding 聚类构树,本文用 RST 篇章关系构树;前者捕捉语义相似,后者捕捉修辞关系。同等检索机制下后者一致更优,证明「为什么相连」比「相连什么」更有用。
  • vs Bisection:本文设计的强消融——保留所有 LLM 增强和层级检索、只换树构造方式。Bisection 已强于 flat baseline,但仍稳定弱于 DISRetrieval,干净地分离出「篇章结构」的独立贡献。
  • vs 传统 chunking RAG:固定窗口切块完全无视文档组织,本文提供了一条「先理解文档结构、再做检索」的新范式,对法律文书 / 科研论文 / 教材等强结构化场景特别有价值。

评分

  • 新颖性: ⭐⭐⭐⭐ 把 RST 系统性融入长文档检索是首次,跨语言扩展和 LLM 增强中间节点的组合也很巧妙。
  • 实验充分度: ⭐⭐⭐⭐⭐ 四个数据集 × 多上下文长度 × 多嵌入 × 多生成模型,加上 5 个深入 RQ 分析和效率对比,论证非常详尽。
  • 写作质量: ⭐⭐⭐⭐ 三阶段架构图清晰,关键公式(节点选择、子树展开算法)写得完整可复现,附录信息量大。
  • 价值: ⭐⭐⭐⭐ 在 RAG 范式下提供了一条扎实的篇章感知改进路径;对所有需要长文档理解的应用(法律、医学、学术)都有直接借鉴价值。