跳转至

Ewe: Improving Factuality with Explicit Working Memory

会议: ACL 2025
arXiv: 2412.18069
代码: 无(Meta FAIR)
领域: 其他
关键词: factuality, working memory, RAG, fact-checking, hallucination, KV cache

一句话总结

提出 Ewe(Explicit Working mEmory),在 LLM 解码过程中引入由多个 KV cache 单元组成的显式工作记忆,实时接收检索知识反馈和事实核查反馈,检测到错误时删除错误句子并用更新后的记忆重新生成,在 4 个事实性长文本生成基准上将 VeriScore F1 提升 2–6 分且不损失回答有用性。

研究动机

  1. LLM 幻觉问题严重:大语言模型在长文本生成中容易产生事实性错误(hallucination),尤其在知识密集型问答场景下,错误信息会大量出现。
  2. 传统 RAG 仅提供单次静态知识:标准 RAG 在生成前一次性检索文档拼接到 prompt 前,无法随着生成进程动态更新知识,当生成的文本偏离初始检索内容时知识就过时了。
  3. 迭代 RAG 方法受限于传统设计:FLARE 和 Self-RAG 虽然引入逐句检索和自省机制,但知识仍然只作为输入字符串的一部分,缺乏灵活的多源信息融合机制。
  4. 缺乏实时事实核查闭环:现有方法仅依赖检索获取新知识,却没有验证已生成内容是否正确的机制,无法在生成过程中及时纠错。
  5. 多源反馈融合困难:检索知识和事实核查反馈具有不同属性(检索提供背景信息,事实核查针对具体细节),传统方法难以优雅地整合这两种信息流。
  6. 计算效率低下:迭代方法每轮更新都需要重新处理所有 context 文档的 embedding,当仅部分知识需要更新时造成大量冗余计算。

方法详解

整体框架

Ewe 在标准 Transformer 解码基础上增加两个核心机制:定期暂停获取反馈记忆增强生成

3.1 初始化

给定输入 prompt,使用 Contriever 从 C4 + Wikipedia 检索 \(k\) 个相关文本段落,分别通过语言模型编码为 \(k\) 个 KV cache 记忆单元,存入工作记忆。与 RAG 直接将段落拼接到 prompt 前不同,Ewe 将每个段落独立编码并并行存储。

3.2 实时反馈机制

生成过程中,Ewe 每隔 \(T_r\) 步暂停获取检索反馈,每隔 \(T_v\) 步暂停获取事实核查反馈(实验中 \(T_r=1, T_v=8\)),仅在有新完整句子生成时触发:

  • 检索反馈:以原始问题 + 当前生成句子为 query,用 Contriever 从 C4 + Wikipedia 检索新段落。检索分数超过阈值的段落被视为相关知识,用于更新工作记忆。
  • 事实核查反馈:使用 VeriScore 的 claim 提取模型和验证模型作为事实核查器。先从新生成句子中提取 atomic claims,再用 Google snippets 验证每个 claim 是否有支撑证据。若有错误 claim,将反驳信息(正确事实)作为新记忆单元追加到工作记忆,同时删除错误句子并从上一时间步回溯重新生成。

3.3 工作记忆刷新

工作记忆采用 FIFO(先进先出) 更新策略。来自检索器和事实核查器的新文本段落被编码为 KV cache,使用相同的 positional ID 并行处理。记忆存储在模型上下文的前部(先于 prompt 和已生成文本),更新时无需重新处理已有内容。

3.4 注意力聚合

在每一层的自注意力计算中,将每个记忆单元分别与上下文拼接,进行标准自注意力运算,再用注意力归一化项加权聚合:

\[\vec{h}_n = \sum_{i=1}^{k+1} \frac{\alpha_i \vec{h}_{n_i}}{\sum_{j=1}^{k+1} \alpha_j}\]

其中 \(k\) 个记忆单元各自与上下文拼接产生 \(k\) 个 hidden vector,额外保留一个纯上下文的 hidden vector(第 \(k+1\) 项)以提升长输出的流畅性。

3.5 与已有方法的关系

Ewe 可退化为多种已有方法的特例: - \(k=1\),不暂停 → 标准 RAG - \(k=1\),逐句暂停 + 低概率触发检索 → FLARE - 多记忆单元 + 仅检索反馈 → 迭代 RAG 的增强版

实验

评估设置

  • 基座模型:Llama-3.1-70B 和 Llama-3.1-8B(instruction-tuned)
  • 数据集:LongFact(250 prompts)、Fava(141)、AlpacaFact(241)、Biography(181)
  • 事实性指标:VeriScore F1(claim 提取 + 验证的精确率/召回率调和平均)
  • 有用性指标:AlpacaEval Win Rate(GPT-4o 作为 judge,以 Llama-3.1-70B 为基线)
  • 基线方法:Base model、RA(检索增强)、Nest(半参数解码)、DRAGIN(动态检索)、CoVe(验证链)、CoVe w/ Retrieval

表 1:主实验结果(VeriScore F1 / AlpacaEval Win Rate)

模型 LongFact F1 LongFact WR Fava F1 Fava WR AlpacaFact F1 AlpacaFact WR Biography F1 Biography WR
Llama-3.1-70B 64.3 - 52.0 - 63.8 - 37.1 -
+ RA 72.7 41.2 56.8 37.1 66.0 43.1 43.8 49.4
+ Nest 63.2 9.1 50.3 24.1 58.1 30.2 41.5 22.1
+ DRAGIN 71.5 38.2 57.2 33.9 65.3 31.5 42.8 33.5
+ CoVe 63.8 39.3 49.5 33.4 61.5 33.3 37.7 31.3
+ CoVe w/ Retrieval 67.4 31.8 52.6 23.1 64.0 28.8 38.2 29.4
+ Ewe 75.9 50.1 61.0 50.1 66.9 49.9 49.7 50.2
Llama-3.1-8B 63.1 40.6 51.0 36.5 65.3 26.7 28.9 24.2
+ RA (8B) 65.9 28.1 51.8 16.8 63.9 18.5 41.4 21.3
+ Ewe (8B) 67.3 40.5 53.1 36.2 65.5 28.0 42.2 21.5

表 2:不同检索数据源的影响(VeriScore F1,50 prompts 子集)

数据源 LongFact Biography AlpacaFact Fava
Wikipedia 67.9 46.1 55.5 52.5
C4 70.8 44.6 53.7 53.3
C4 + Wikipedia 74.8 48.4 53.3 52.3

表 3:人类评估一致性(Cohen's Kappa)

方法 Cohen's Kappa
RA(基线) 0.61
Ewe 0.65

Cohen's Kappa > 0.61 被认为是高度一致,Ewe 使用 VeriScore 做推理时反馈并未降低与人类的一致性,确认 VeriScore 提升确实转化为真实的事实性改善。

关键发现

  1. Ewe 在所有 4 个数据集上均取得最高 VeriScore F1,70B 模型上绝对提升 2–6 分,且 AlpacaEval Win Rate 接近 50%,说明事实性提升不以有用性为代价。
  2. 8B 模型的提升幅度小于 70B,假设是小模型利用反馈的能力较弱,不能总是正确地重新生成修正后的句子。
  3. 记忆单元数量需适度:过多记忆单元导致过时信息在 FIFO 策略下长时间留存,降低精确率。
  4. 记忆单元长度存在 trade-off:短单元提高精确率但降低召回率(注意力更聚焦单篇),长单元提高召回率但降低精确率(多篇混合分散注意力)。
  5. 检索阈值需平衡:阈值过低引入不相关信息,过高则排除过多检索结果,二者都损害 F1。
  6. 不同数据集偏好不同数据源:LongFact/Fava 偏好 C4,Biography/AlpacaFact 偏好 Wikipedia,C4 + Wikipedia 组合在 LongFact 和 Biography 上进一步提升。
  7. 模型置信度可替代固定间隔:用 entropy 或 min-prob 作为触发信号,在合适阈值下可以用更少的验证次数取得更好或相当的 F1。
  8. 事实核查反馈形式很重要:直接提供支撑段落优于"请不要生成以下错误声明"的指令模板,后者容易导致模型误解并在输出中复述错误内容。

亮点

  • 统一框架:Ewe 将 RAG、FLARE、迭代检索等已有方法统一为特例,提供更通用的视角。
  • 双流反馈:同时利用检索知识(背景信息)和事实核查(纠错细节),两者编码进并行的 KV cache 记忆单元,自然融合。
  • 高效增量更新:仅更新需要刷新的记忆单元,未过时的知识直接复用 KV cache,避免重复编码。
  • 实时纠错闭环:检测→删除→回溯→重生——完整的 online 纠错管道。
  • 与流式场景天然适配:语音输入等无法回退修改的场景中,Ewe 可边接收边检索边生成。

局限性

  1. 仅验证英文文本数据集,多语言和非事实性 prompt 的效果未知。
  2. 仅支持文本反馈,未探索多模态(图像、表格等)反馈。
  3. 人类评估规模较小(仅 120 条标注),大规模验证仍需补充。
  4. 推理成本高:每步可能涉及检索 + 事实核查 + 重生成,计算开销显著高于单次 RAG。
  5. FIFO 记忆更新策略简单:实验中探索了基于相关性分数等替代策略但未优于 FIFO,更优更新机制留待未来工作。
  6. 事实核查器依赖外部搜索引擎(Google snippets),搜索质量和延迟成为瓶颈。

相关工作

  • 迭代/自适应检索增强:FLARE(逐句低概率触发检索)、DRAGIN(注意力+熵的置信度度量)、Self-RAG(自省 critique 模型)、ITER-RETGEN(用上轮输出作为查询)。Ewe 的区别在于用 KV cache 记忆替代文本拼接,以及通过记忆而非字符串传递事实核查反馈。
  • 验证链方法:CoVe 仅依赖 LLM 自身推理进行验证,不引入外部知识,在长文本中效果受限。
  • 长上下文记忆:Memory3 将训练语料的 128-token chunk 编码为 KV cache 作为显式记忆,推理时检索最相关记忆。Ewe 的目标不同——不预编码整个语料库,而是在迭代解码中动态更新记忆。Memorizing Transformers 和 LongMem 用相似思路扩展上下文窗口。
  • 事实性评估:FActScore、SAFE、VeriScore 共享"分解为 atomic claims + 外部验证"的范式,VeriScore 使用 Google snippets 而非 Wikipedia,更高效且覆盖更广。

评分

  • 新颖性: ⭐⭐⭐⭐ 工作记忆+双流反馈的架构设计优雅,但 KV cache 记忆非首创(Memory3 等已有先例)
  • 实验充分度: ⭐⭐⭐⭐⭐ 4 数据集 + 5 个基线 + 人类评估 + 丰富消融(记忆数量/长度/阈值/数据源/反馈形式)
  • 写作质量: ⭐⭐⭐⭐ 与已有方法的退化关系阐述清晰,框架图直观
  • 实用价值: ⭐⭐⭐⭐ 推理成本高限制实际部署,但为长文本事实生成提供了灵活框架