跳转至

S2G-RAG: Structured Sufficiency and Gap Judging for Iterative Retrieval-Augmented QA

会议: ACL2026
arXiv: 2604.23783
代码: 未在论文中声明
领域: 信息检索 / RAG / 多跳问答
关键词: 迭代检索, 充分性判断, 信息缺口, 证据压缩, 多跳问答

一句话总结

S2G-RAG 把迭代 RAG 中“证据够不够”和“下一步缺什么”显式建模成结构化控制器 S2G-Judge,再用 gap-guided query 和句子级证据抽取减少噪声,在 HotpotQA BM25 设置下把 F1 从 SIM-RAG 的 43.3 提升到 56.5。

研究背景与动机

领域现状:RAG 已成为知识密集型问答的标准方案,单跳问题通常能靠一次检索解决,多跳问题则需要多轮检索和中间推理。已有方法包括 IR-CoT、FLARE、Self-RAG、SIM-RAG、RAG-Critic 等,它们通过推理 trace、不确定性、反思 token 或 critic 信号控制检索。

现有痛点:迭代 RAG 的关键瓶颈不是单次检索,而是控制。系统每一轮都要判断当前 evidence memory 是否足以回答;如果不足,还要明确下一轮该搜什么。控制不可靠时,模型要么从不完整证据链中过早作答,要么持续检索并积累冗余、干扰性文本。

核心矛盾:自由文本推理很灵活,但难审计、难稳定地转化成下一跳检索需求。多轮检索又会让上下文越来越长,导致后续判断和回答受到 distractor 干扰。

本文目标:作者希望把检索控制变成显式、可诊断、可训练的结构化预测问题,同时用句子级 evidence context 控制多轮上下文膨胀。

切入角度:S2G-RAG 设计一个轻量 S2G-Judge,在每一轮输出 sufficiency decision 和 structured gap items。gap items 被映射成下一轮 query,retrieved documents 再由 sentence-level extractor 选取关键句进入 evidence memory。

核心 idea:让 RAG 控制器先回答“现在够不够”,不够时再结构化指出“缺哪类信息”,从而把多跳检索从自由漂移变成可审计的缺口填补过程。

方法详解

S2G-RAG 的设计可以理解为 judge-first iterative RAG。它没有改搜索引擎,也没有重新训练答案生成器,而是在检索器和 reasoner 之间加入一个结构化控制层,以及一个避免证据记忆膨胀的句子抽取层。

整体框架

给定问题 \(q\) 和语料库 \(D\),系统维护一段不断累积的证据上下文 \(C_t\),初始 \(C_0\) 为空。每一轮先让轻量控制器 S2G-Judge 读取 \((q, C_t)\),输出一个二元充分性标志 \(s_t\) 和一组结构化缺口项 \(G_t\):若 \(s_t\) 为 true 就停止检索、交给 answer reasoner 作答;若为 false 则把 \(G_t\) 翻译成下一轮 query,检索 top-k 文档,再经 evidence extractor 抽出句子级证据块 \(E_t\) 追加进 \(C_t\),进入下一轮。整条流水线把"多轮检索该不该停、停不下来时该搜什么"这件原本靠自由文本反思的事,变成可审计的判断—填缺口循环。默认 answer reasoner 是 Llama-3-8B-Instruct,S2G-Judge 是 LoRA 微调的 Llama-3.2-3B-Instruct,最多 4 轮、每轮 top-k=6 并做 title-based 去重;稀疏检索用 BM25,稠密检索用 E5-base-v2。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    Q["问题 q + 证据上下文 C_t(初始为空)"] --> JUDGE["结构化充分性与缺口判断 S2G-Judge<br/>输出二元充分性标志 + 四字段缺口项"]
    TRAIN["从执行轨迹蒸馏过程监督<br/>真实 rollout 中间状态 → GPT-4o-mini 标注 → LoRA SFT"] -. 离线训练 .-> JUDGE
    JUDGE -->|充分| ANS["答案推理器(Llama-3-8B)<br/>基于 C_t 作答"]
    JUDGE -->|不足| QRY["缺口转 query<br/>拼接 gap 项的 target + slot"]
    QRY --> RET["检索 top-k 文档<br/>BM25 / E5,标题去重"]
    RET --> EXT["gap-aware 句子级证据抽取<br/>指针选句、不重写"]
    EXT --> CUP["抽出的句子块追加进 C_t"]
    CUP -->|下一轮(最多 4 轮)| JUDGE

关键设计

1. 结构化充分性与缺口判断:把"够不够 / 缺什么"做成可填的字段。 控制器每轮显式回答两件事——当前证据是否足以作答,以及若不足还缺哪类信息。缺口被规约成带四个字段的 gap item:categorytargetslotdescription,其中 category 取自 bridge_entity、attribute、relation、evidence_span、other 五类;一旦 sufficiency 判为 true,gap set 即为空。

这种结构化设计直接对应多跳问答的典型失败模式:已经找到桥接实体却缺它的某个属性,或找到实体却缺连接两实体的关系证据。相比一段自由文本 reflection,带类别和槽位的缺口项更容易被稳定地映射成下一轮检索 query,也更容易诊断"系统到底卡在哪一跳"。

2. 从执行轨迹蒸馏过程监督:让 judge 适应它真正会看到的中间状态。 训练数据不是理想化的证据链,而是先用同一套迭代检索与证据积累流程跑出真实 rollout,逐轮记录 \((q, C_t)\);再由强教师 GPT-4o-mini 在 context-only 约束下为每个中间状态标注 sufficiency 与 gap items,并过滤掉低置信、教师自相矛盾的样本,最后用 LoRA SFT 训出 S2G-Judge。

之所以要从执行轨迹而非干净标注里蒸馏,是因为真实迭代 RAG 的中间 context 往往夹带冗余和 distractor。让 judge 在部署时会遇到的状态分布上学习,它对"含噪证据到底够不够"的判断才不会在线上失真。

3. gap-aware 句子级证据上下文:用指针抽取压住多轮噪声。 为避免每轮检索把整篇文档不断拼进上下文,extractor 把当轮文档切成带标题来源的句子候选池,由 LLM 依据问题和当前 gap items 只输出句子索引,系统再按索引取回原句追加到证据上下文——抽取器只做 pointer selection,不重写任何证据。

指针式抽取一举两得:保留了证据的 provenance、规避了改写阶段引入 hallucination 的风险;而把 gap items 喂给抽取器,又能让它优先挑出能填补当前缺口的句子,使证据上下文既紧凑又对路。

一个完整示例

以一个 2-hop 问题"某电影的导演出生在哪个城市"为例:\(C_0\) 为空,S2G-Judge 判 \(s_0=\) false,输出一个 category=bridge_entity、target=该电影、slot=导演的缺口项;系统据此构造 query 检索到"导演是 X",抽取该句进 \(C_1\)。第二轮 judge 读 \((q, C_1)\) 仍判不足,输出 category=attribute、target=X、slot=出生城市;检索回填"X 出生于 Y 城",抽句进 \(C_2\)。第三轮 judge 判 \(s_2=\) true、gap set 为空,停止检索,answer reasoner 基于 \(C_2\) 给出"Y 城"。整个过程的每一跳都对应一个可读的缺口项,便于审计究竟在哪一步补齐了证据。

损失函数 / 训练策略

S2G-Judge 用标准自回归交叉熵训练结构化输出,输入是 \((q, C_t)\),目标是教师标注的 sufficiency 与 gap schema,监督信号全部来自多轮执行轨迹而非人工逐轮标注。推理时 query construction 优先拼接 gap item 的 target 与 slot,缺失时回退到 description;默认只使用第一个有效 gap item,以保持 query 简洁。

实验关键数据

主实验

主结果在 TriviaQA、HotpotQA、2WikiMultiHopQA 上报告 EM/F1,并分别比较 BM25 和 E5 检索设置。

检索 方法 TriviaQA EM/F1 HotpotQA EM/F1 2Wiki EM/F1 主要结论
BM25 IR-CoT 56.9 / 68.9 28.6 / 41.5 23.5 / 32.4 多轮推理检索基线
BM25 SIM-RAG 70.7 / 75.6 32.7 / 43.3 34.1 / 40.2 critic 控制较强
BM25 S2G-RAG 72.0 / 77.9 43.3 / 56.5 41.7 / 48.6 多跳提升最大
E5 Standard RAG 58.8 / 68.3 25.1 / 35.3 10.6 / 21.0 单轮检索不足
E5 RAG-Critic 65.0 / 75.9 40.0 / 51.2 27.9 / 34.0 强 learned-control baseline
E5 S2G-RAG 71.1 / 78.0 42.0 / 53.5 39.0 / 45.3 对不同 retriever 都有效

相对 SIM-RAG,S2G-RAG 在 BM25 HotpotQA 上提升 +10.6 EM 和 +13.2 F1,在 2Wiki 上提升 +7.6 EM 和 +8.4 F1。TriviaQA 是单跳为主,提升较小但仍有收益,说明句子级 evidence context 能缓解额外检索带来的噪声。

消融实验

变体 HotpotQA EM HotpotQA F1 说明
Full S2G-RAG 43.3 56.5 完整系统
w/o SFT 39.2 50.8 用未微调 judge,下降 4.1 EM / 5.7 F1
w/o S2G-Judge 27.5 37.6 去掉结构化控制,下降最大
w/o Extractor 39.5 52.5 直接拼接原始检索文本,噪声和延迟增加
证据压缩方法 EM F1 压缩比 说明
LLM summarization 36.9 48.1 0.3816 摘要会丢证据或改写信息
ReComp extractive 41.4 53.8 0.4948 保真较好但不如本文
ReComp abstractive 34.9 46.4 0.1917 最短但 QA 损失大
句子指针抽取 43.3 56.5 0.3461 最佳准确率与压缩折中

关键发现

  • S2G-Judge 是最关键模块。去掉它导致 HotpotQA F1 从 56.5 跌到 37.6,说明多跳检索控制比单纯检索更多文档更重要。
  • sufficiency 判断偏保守,false positive rate 为 6.44%,但有 31.60% 已满足 retrieval truth 的样本仍被判为 insufficient。这降低过早作答风险,但也说明校准还有空间。
  • 句子级 evidence context 相比原始全文拼接可带来约 4.5x-6.4x 压缩;在 HotpotQA BM25 下,完整系统相比无 extractor 的 per-sample latency 从 1.9552 秒降到 1.6085 秒,同时 F1 更高。

亮点与洞察

  • “sufficiency + gap” 是很适合迭代 RAG 的接口。它比单纯 query rewriting 更可诊断,也比让生成器自由反思更容易约束。
  • trajectory distillation 的训练分布设计很实际。控制器看到的是系统真实 rollout 产生的中间 evidence memory,而不是理想化标注,因此更贴近部署状态。
  • 句子指针抽取兼顾压缩和可审计性。相比 abstractive summarization,它不改写证据,降低了压缩阶段引入 hallucination 的风险。
  • 论文展示了模块化 RAG 的一个方向:retriever、controller、extractor、reasoner 可以解耦改进,而不必把所有能力塞进同一个大模型。

局限与展望

  • gap schema 为了稳定性牺牲表达力,复杂问题可能需要多实体 join、时间约束或更结构化的中间程序,当前四字段 schema 未必足够。
  • sentence-level extraction 有 compactness-recall trade-off,可能遗漏跨句证据或 disambiguation 所需上下文。
  • sufficiency 判断偏保守,虽然能减少证据不足时作答,但会增加检索轮次和延迟。后续需要更好的 calibration。
  • 论文没有直接用 RL 或 actor-critic 优化端到端系统目标,而是使用蒸馏训练控制器。未来可以把 S2G 输出作为辅助 reward 或中间变量接入学习型检索策略。

相关工作与启发

  • vs IR-CoT: IR-CoT 用中间推理作为检索线索,S2G-RAG 则显式预测缺口字段,检索需求更结构化。
  • vs FLARE / Self-RAG: 这些方法通过不确定性或 reflection token 控制检索,S2G-RAG 的 sufficiency 和 gap schema 更容易审计和训练。
  • vs SIM-RAG: SIM-RAG 评估临时答案是否可接受,S2G-RAG 进一步要求指出缺失信息,并把它转成下一轮 query。
  • vs RAG-Critic: RAG-Critic 提供错误反馈和修正流程,S2G-RAG 更轻量,强调多轮 evidence state 的结构化控制。

评分

  • 新颖性: ⭐⭐⭐⭐☆ sufficiency/gap schema 不复杂,但抓住了迭代 RAG 控制的核心瓶颈。
  • 实验充分度: ⭐⭐⭐⭐☆ 覆盖三数据集、两类 retriever、多个强 baseline 和丰富消融;若有更多真实长文档任务会更完整。
  • 写作质量: ⭐⭐⭐⭐⭐ 动机、系统设计和分析实验层层对应,读起来很清楚。
  • 价值: ⭐⭐⭐⭐⭐ 对多跳 RAG 系统工程很有参考价值,尤其是可审计控制和证据记忆压缩两个设计。