《DRAGIN:Dynamic Retrieval Augmented Generation》论文个人学习总结

DRAGIN(Dynamic Retrieval Augmented Generation)是一种创新的 RAG 框架,通过 RIND(实时信息需求检测)和 QFS(基于自注意力的查询生成)模块,让语言模型能够根据实时信息需求动态决定“何时检索、检索什么”。本文系统解析 DRAGIN 的架构设计、核心算法、实验结果及局限性,展示其在知识密集型任务中超越传统 RAG 的优异性能,为动态检索增强生成提供了高效、精准的新范式。

1. 研究背景与动机

1.1. 研究背景

RAG(Retrieval-Augmented Generation)框架是缓解 LLM 幻觉(hallucination)问题的主流方案,通过从外部知识库中检索信息辅助生成。然而传统 RAG 面临两种主要模式:

  1. 单轮检索(Single-round RAG):仅使用输入问题作为检索 query;
  2. 多轮动态检索(Dynamic RAG):在生成过程中多次触发检索。

多轮动态 RAG 面临的挑战:

  • 何时检索(When to Retrieve):多数采用固定规则,如每 n 个 token 检索一次,忽略模型当下信息需求;
  • 检索什么(What to Retrieve):多取最近一段文本,无法反映 LLM 在全上下文中的信息缺口。

1.2. DRAGIN 的核心思想

DRAGIN(Dynamic Retrieval Augmented Generation based on Information Needs) 提出两个关键模块:

  • RIND(Real-time Information Needs Detection) —— 判断是否需要检索;
  • QFS(Query Formulation based on Self-Attention) —— 利用注意力机制生成高质量 query。
  • 论文代码页



2. 框架架构

输入: 用户问题 Q

LLM 开始生成

RIND 模块检测实时信息需求
↓ 若
SRIND(t_i) > θ:
→ 触发检索模块
→ QFS 生成 Query
→ 检索外部知识 (BM25)
→ 将检索结果拼接至 Prompt

LLM 继续生成增强文本
(可多轮触发)

两大模块:

  • RIND → 控制“何时检索”
  • QFS → 决定“检索什么”



3. 核心技术机制

3.1. RIND — 实时信息需求检测

目标:根据 LLM 生成时的不确定性与语义权重,判断是否需要检索。

不确定性(Uncertainty)

不确定性(Uncertainty)

通过 token 概率分布熵表示:

$H_i = -\sum p_i(v) \log p_i(v)$

重要性(Influence)

3.1.2. 重要性(Influence)

使用自注意力矩阵的最大下游注意力值:

$a_{\max}(i) = \max_{j>i} A_{j,i}$

语义性(Semantic Significance)

过滤停用词:

$s_i = 0 \quad \text{if stopword else } 1$

综合得分

3.1.4. 综合得分

$S_{RIND}(t_i) = H_i \times a_{max}(i) \times s_i$

若 $S_{RIND}(t_i) > θ$ 则触发检索。


3.2. QFS — 基于自注意力的查询生成

目标:利用自注意力矩阵,从全上下文中提取关键信息形成高相关查询。

  1. 获取触发位置的注意力向量 $A_{i}$;
  2. 按权重排序,选取 top-n token;
  3. 按原顺序拼接生成 query。

示例

生成中:
"Einstein was born ... In 1903, he secured a job at the ..."
触发点:1903 secured job
提取 query:["Einstein", "1903", "secured", "job"]
生成检索:"Einstein 1903 secured job"

3.3. 动态生成与多轮增强

Below are the external knowledge references:
[1] doc1
[2] doc2
Please answer the question based on external knowledge:
Question: Q
Answer: <之前生成内容>

若后续再次触发 RIND,则重复 QFS + 检索 + 续写,实现多轮动态增强。




4. 实验设计

4.1. 数据集

Dataset类型任务特点
2WikiMultihopQA多跳推理长链逻辑问答
HotpotQA多跳推理跨文档推理
IIRC阅读理解上下文推理
StrategyQA常识推理是/否问答

4.2. 对比基线

方法何时检索检索内容
SR-RAG生成前一次性输入问题
FL-RAG每 n token上一窗口
FS-RAG每句生成后上一句
FLARE置信度低时最近句子
DRAGIN基于 RIND 动态检测基于注意力生成 query

4.3. 模型与配置

  • 模型:LLaMA2-7B / 13B / Vicuna-13B
  • 检索器:BM25、SGPT
  • 知识库:Wikipedia
  • 解码策略:greedy decoding



5. 实验结果与分析

5.1. 总体性能

模型方法2Wiki EM/F1Hotpot EM/F1Strategy AccIIRC F1
LLaMA2-13BDRAGIN0.304/0.3930.314/0.4240.6890.222
SR-RAG0.245/0.3360.263/0.3710.6540.230
FLARE0.224/0.3080.180/0.2760.6550.167

DRAGIN 在全部数据集上实现 SOTA。

5.2. 检索频率

FS-RAG 触发最频繁,FLARE 最少,DRAGIN 动态平衡精度与效率。

5.3. 消融实验

  • RIND 提升 IIRC F1 约 5%;
  • θ 阈值在 0.3~0.9 范围鲁棒;
  • QFS 提升 F1 从 0.37 → 0.42。



6. 机制分析与可视化理解

  • RIND:通过熵 + 注意力 + 语义性判断信息需求,类似软触发信号;
  • QFS:注意力引导式 Query 压缩器,从上下文提取最关键 token;
  • 二者协同,实现按需检索而非固定检索。



7. 主要贡献与启示

方向贡献技术意义
动态检索提出 RIND 模块首次将信息需求检测引入 RAG
查询生成提出 QFS 模块弥合“检索什么”的空白
框架结构无需训练、即插即用高兼容性、轻量级
实验验证多数据集 SOTA证明信息需求驱动 RAG 的有效性

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注