DRAGIN(Dynamic Retrieval Augmented Generation)是一种创新的 RAG 框架,通过 RIND(实时信息需求检测)和 QFS(基于自注意力的查询生成)模块,让语言模型能够根据实时信息需求动态决定“何时检索、检索什么”。本文系统解析 DRAGIN 的架构设计、核心算法、实验结果及局限性,展示其在知识密集型任务中超越传统 RAG 的优异性能,为动态检索增强生成提供了高效、精准的新范式。
1. 研究背景与动机
1.1. 研究背景
RAG(Retrieval-Augmented Generation)框架是缓解 LLM 幻觉(hallucination)问题的主流方案,通过从外部知识库中检索信息辅助生成。然而传统 RAG 面临两种主要模式:
- 单轮检索(Single-round RAG):仅使用输入问题作为检索 query;
- 多轮动态检索(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. 框架架构
输入: 用户问题 QSRIND(t_i) > θ
↓
LLM 开始生成
↓
RIND 模块检测实时信息需求
↓ 若:
→ 触发检索模块
→ 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 — 基于自注意力的查询生成
目标:利用自注意力矩阵,从全上下文中提取关键信息形成高相关查询。
- 获取触发位置的注意力向量 $A_{i}$;
- 按权重排序,选取 top-n token;
- 按原顺序拼接生成 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/F1 | Hotpot EM/F1 | Strategy Acc | IIRC F1 |
|---|---|---|---|---|---|
| LLaMA2-13B | DRAGIN | 0.304/0.393 | 0.314/0.424 | 0.689 | 0.222 |
| SR-RAG | 0.245/0.336 | 0.263/0.371 | 0.654 | 0.230 | |
| FLARE | 0.224/0.308 | 0.180/0.276 | 0.655 | 0.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 的有效性 |
.webp)