MemSifter: Offloading LLM Memory Retrieval via Outcome-Driven Proxy Reasoning

论文阅读:MemSifter:把 LLM 长期记忆检索卸载给小模型

论文标题:MemSifter: Offloading LLM Memory Retrieval via Outcome-Driven Proxy Reasoning
作者:Jiejun Tan, Zhicheng Dou, Liancheng Zhang, Yuyang Hu, Yiruo Cheng, Ji-Rong Wen
发表位置:arXiv preprint
arXiv 编号:arXiv:2603.03379v2
原文链接:https://arxiv.org/abs/2603.03379
代码与数据:https://github.com/plageon/MemSifter
主题:LLM 长期记忆、记忆检索、代理模型、强化学习、Outcome-driven Retrieval
核心问题:当 LLM 的历史交互越来越长时,如何低成本地从长期记忆中找出真正能帮助当前任务的信息。


1. 背景:长期任务中的记忆检索问题

随着大语言模型被用于更长周期的任务,模型需要处理的不再只是当前一轮输入,而是不断累积的历史交互、用户偏好、工具调用结果、搜索轨迹、推理过程等信息。论文关注的是这种长期、持久化的外部记忆,而不是模型当前上下文窗口里的短期工作记忆。

长期记忆系统通常会把历史内容存到外部存储中。当前任务到来时,系统再从这些历史内容中检索若干片段,拼接进上下文,让 working LLM 生成最终回答。

问题在于,历史越长,检索越困难。

论文把已有方法大致放在两类思路中讨论:

思路 做法 优点 问题
简单 token-level memory 把原始历史切成片段,用 embedding 或简单 top-k 检索 实现简单,更新方便 语义相似不等于任务有用,容易漏掉关键记忆
结构化索引 构建摘要、层级索引、图结构等 可以增强组织性和多跳关联 索引成本高,抽象过程可能丢失细节
长上下文直接读取 让强大的 working LLM 直接读完整历史 让主模型自行判断哪些历史有用 成本高、延迟高,也可能受到长上下文中“lost-in-the-middle”等问题影响

这篇论文要解决的核心矛盾是:记忆检索需要推理能力,但不能每次都让昂贵的主力大模型去读完整历史。


2. 论文的基本想法:用小模型替主模型筛记忆

MemSifter 的核心思路是:把“从历史中筛选记忆”的工作,从主力 working LLM 中卸载出来,交给一个专门训练的小型 proxy model。

也就是说,系统中有两个角色:

角色 作用
Memory Proxy / MemSifter 阅读历史记忆和当前任务,推理哪些 session 最有用,并输出排序
Working LLM 只接收被筛选出的 top-k 记忆片段,然后完成最终回答

这样做的目的不是让小模型替代大模型完成任务,而是让小模型先完成“上下文整理”和“证据筛选”。主力 LLM 不再需要每次读取完整历史,只需要读取 MemSifter 挑出的少量关键 session。

论文中的整体流程可以概括为:

  1. 历史交互被存储为多个 session。
  2. 当前任务到来后,MemSifter 读取当前任务和候选历史 session。
  3. MemSifter 先生成一段 reasoning,分析哪些历史内容与当前任务有关。
  4. MemSifter 输出一个 session 排序列表。
  5. 系统取排名靠前的 session,拼接给 working LLM。
  6. working LLM 基于当前任务和这些检索出的记忆生成最终答案。

image

【Figure 1。该图上半部分展示 MemSifter 的 RL 训练流程,下半部分展示推理时由 MemSifter 先筛选记忆、再交给 working agent 的流程。】


3. 问题定义:记忆不是静态文档,而是历史交互

论文把历史记忆表示为一系列 session。每个 session 又由若干 interaction turns 构成。形式上可以理解为:

H = {s1, s2, ..., sN}

每个 si 是一个历史 session,
每个 session 包含多轮用户、助手、工具或环境交互。

当前任务记作 q。如果让 working LLM 直接读取完整历史 H,在长周期任务中会产生过高的上下文成本,甚至超出上下文窗口。因此系统引入一个 memory proxy P,从完整历史中选出相关片段 M_rel,再让 working LLM 生成最终回答。

这一定义有一个重要含义:这里的“相关性”不是传统 RAG 中的文档语义相关性,而是历史交互对于当前任务的实际帮助程度。某段历史可能和当前 query 表面上不太相似,但它可能包含完成任务所必需的约束、偏好、事实或中间推理结果。

这也是论文后面提出 outcome-driven reward 的原因。


4. Memory Proxy Reasoning:Think-and-Rank

MemSifter 的推理过程被论文称为 Think-and-Rank

4.1 历史切分与格式化

系统首先把历史交互切分成 session。对于已有 session 边界的 benchmark,论文保留原本边界;对于 deep research 轨迹,则把每次搜索或推理步骤视为一个 session。

然后,每个 session 会被包装成带有编号的格式,例如:

<session 27>
...
</session>

这样 proxy model 输出排序时,可以直接引用 session id。

4.2 超长历史下的粗筛

如果完整历史超过 proxy model 的上下文窗口,例如超过 128K tokens,论文会先使用轻量 embedding 模型做一轮 coarse filtering。这个步骤根据 query-session 的余弦相似度排序,在 token budget 内保留 top sessions。

需要注意的是,coarse filtering 只是为了让候选内容能进入 proxy model 的上下文,不是最终检索结果。真正的排序仍然由 MemSifter 完成。

论文在附录中报告了 coarse filtering 的召回情况。例如 LoCoMo-32K、LongMemEval-128K、PersonaMem-128K、ZH4O-128K 等设置中召回率为 100%;LongMemEval-1M 为 94.88%,PerM-V2-128K 为 96.50%。

4.3 Think-and-Rank 输出格式

在正式检索时,MemSifter 会读取:

  • 当前任务;
  • 当前聊天上下文;
  • 历史 session 列表。

然后它先在 <think>...</think> 中生成推理过程,再在 <ranking>...</ranking> 中输出 session id 排序。

示意格式如下:

<think>
根据当前任务,我需要查找与用户某个过往计划、偏好或工具结果相关的历史 session。
session 27 包含最直接的信息,session 13 提供补充上下文,session 34 ...
</think>

<ranking>
27,13,34,5, ...
</ranking>

论文中的 prompt 明确要求 proxy model:

  1. 根据历史交互和当前上下文判断相关性;
  2. 按 topic consistency、user need continuity、detail overlap、session completeness 等因素排序;
  3. 输出固定数量的 top sessions;
  4. 不允许创造或修改 session id;
  5. 必须先思考再输出 ranking。

image

【Figure 2。该图展示了 memory proxy 的 prompt,包括输入定义、相关性判断标准、输出格式和 brief repeat 要求。】


5. 为什么不能只优化检索指标?

传统检索模型通常优化 Recall、Precision、NDCG 等指标,或者使用人工标注的 query-document relevance label。但是在 LLM memory 场景下,这种做法并不完全合适。

论文指出原因有两点。

第一,检索模块是辅助 working LLM 的模块,因此它应该根据最终任务表现来评价,而不只是根据静态相关性评价。

一段 memory 是否有用,最终取决于它是否帮助 working LLM 答对问题、完成任务或生成更好的输出。语义相似的片段未必有用;语义上不那么相似的片段,反而可能包含关键证据。

第二,长期记忆任务很难获得细粒度排序标注。

在复杂历史交互和 deep research 任务中,很难人工标出完整 top-k 排名。即使知道某些片段有帮助,也不容易给出精确顺序。因此,仅靠监督学习训练排序器会受到标注稀缺和信号稀疏的限制。

因此,MemSifter 的训练目标不是“预测人类标注的相关性”,而是“选出的记忆能不能提高 working LLM 的最终表现”。


6. Task-Outcome-Oriented Reward:用最终任务结果训练检索器

MemSifter 的核心训练机制是一个面向任务结果的强化学习 reward。这个 reward 主要由两个部分组成:

  1. Marginal Utility Reward;
  2. Rank-Sensitive Reward。

6.1 Marginal Utility Reward:看记忆带来了多少增益

如果 working LLM 在没有记忆的情况下就能答对问题,那么检索器不应该因为任务成功而得到过高奖励。否则模型会把 working LLM 自身参数知识带来的成功误认为是记忆检索的贡献。

因此论文采用了类似 ablation 的思想:

  • s0:working LLM 不使用任何检索记忆时的得分;
  • sk:working LLM 使用 top-k 检索记忆后的得分;
  • sk - s0:检索记忆带来的真实增益。

这样 reward 关注的是记忆的边际贡献,而不是任务本身的绝对得分。

论文进一步使用 progressive evaluation,不只看一个 top-k,而是看多个逐渐增大的 k。例如使用 Fibonacci sampling:

K = {1, 2, 3, 5, 8, ...}

这样可以观察当更多 memory session 被加入上下文时,working LLM 的表现如何变化。相邻两个 k 之间的得分差,表示新增这一批 memory session 带来的边际贡献。

6.2 为什么用 Fibonacci sampling?

如果对 ranking 中每一个位置都调用一次 working LLM 评估,训练成本会非常高。论文因此使用 Fibonacci 序列进行稀疏采样。

例如,不必分别评估 top-1、top-2、top-3、top-4、top-5、top-6、top-7、top-8、top-9、top-10、top-11,而是评估 top-1、top-2、top-3、top-5、top-8 等位置。

这样可以在捕捉排序前部关键变化的同时减少 working LLM 调用次数。附录中报告,Fibonacci sampling 将每次 rollout 的调用数从 11 次减少到 7 次,节省 36.4%。

6.3 Rank-Sensitive Reward:越靠前越重要

只知道“这批 memory 有用”还不够,因为检索排序本身也很重要。排在前面的记忆更可能进入有限上下文,也更直接影响 working LLM 的任务处理。

因此,论文引入类似 DCG 的衰减权重:越靠前的 memory gain 权重越大,越靠后的 gain 权重越小。

可以用文字形式理解最终 reward:

R_ans = -s0 + sum_n w_n * s_kn

其中:

  • s0 是无记忆 baseline;
  • s_kn 是使用 top-k_n 记忆时的任务得分;
  • w_n 是随排名衰减的权重;
  • 早期位置的权重更大,后期位置的权重更小。

这个设计鼓励 proxy model 把最关键的证据放在排序最前面,而不是只要 top-k 中包含有用信息即可。

image

【Figure 3。该图展示了 marginal utility reward 的 progressive evaluation,以及 rank-sensitive reward 的衰减权重。】


7. 优化流程:课程学习、冷启动和模型平均

单纯用 outcome reward 做强化学习会不稳定。论文因此加入了几个训练技巧。

7.1 Dynamic Curriculum Construction

论文在每轮训练前动态构造训练集。它定义了一个 anchor score tau,经验值为 0.2,用来寻找模型当前“刚好有能力但还没有掌握”的样本。

直观理解是:

  • 太简单的样本,模型已经能做好,继续训练收益不大;
  • 太难的样本,模型几乎没有有效学习信号;
  • 处在中间难度区间的样本,更适合当前阶段训练。

这种课程学习策略让训练数据随着模型能力变化而更新,避免模型长期停留在过易或过难的样本上。

7.2 Hybrid Reward with Cold Start

虽然最终目标是 outcome-oriented reward,但训练初期模型可能连基本输出格式都不稳定。因此论文在 warm-up 阶段使用少量已有 memory ranking annotations,计算基于 DCG 的检索质量 reward。

总 reward 可以理解为:

R = alpha * R_ans + beta * R_ret

其中:

  • R_ans 是任务结果导向 reward;
  • R_ret 是基于检索标注的辅助 reward;
  • beta 在第一轮较高,随后逐渐退火到 0。

也就是说,监督信号只用于冷启动,帮助 proxy model 学会基本相关性和输出格式。后续训练则转向纯 outcome-oriented optimization。

7.3 Stabilization via Model Averaging

强化学习训练容易波动。论文在每轮迭代结束后选取验证集表现最好的若干 checkpoint,对可训练参数做算术平均,再用合并后的模型初始化下一轮训练。

这个过程用于平滑优化波动,整合多个 checkpoint 中学到的能力。


8. 实验设置

论文在 8 个 LLM memory benchmark 上评估 MemSifter,其中包括个人长期记忆任务和 deep research 任务。

8.1 数据集

数据集 主要考察内容
LoCoMo 超长对话记忆,包含事实和时间关系理解
LongMemEval 连续 chatbot 交互中的长期记忆能力
PersonaMem 从长历史中理解用户 persona
PerM-V2 大规模用户场景中的隐式偏好推断
ZH4O / PerLTQA 语义记忆和情节记忆混合的长期记忆问答
HotpotQA 多跳推理
WebWalker 遍历网站子页面并抽取多层信息
WebDancer 自主多步 deep research 轨迹

论文统一使用 end-to-end generation F1 作为主要指标,因为所有方法最终都会从检索出的 memory context 中生成自由形式答案。PersonaMem 还额外报告多选题准确率。检索质量使用 NDCG@1 和 NDCG@5,效率使用输入/输出 token 和延迟衡量。

8.2 Baseline

论文比较了五类 baseline:

类别 方法
Embedding-based retrieval BGE-M3, EmbeddingGemma
LLM memory frameworks Mem0, Nemori, MemAgent, Mem-alpha
Graph retrieval HippoRAG, A-MEM
Generative rerankers Rearank, ReasonRank
Long-context LLMs Qwen3-30B, DeepSeek-V3.2

其中 MemSifter 使用 Qwen3-4B-Thinking 作为 base model,训练三轮。训练时采用 128K long input window、16K format output window、4K buffer window,batch size 为 32,每个样本的 GRPO sampling 次数为 6。RL 训练实验运行在 8-GPU H200 机器上,working LLM 调用外部 Qwen3-30B-A3B-Instruct API。


9. 主要结果

论文主实验用两个 working LLM 评估:

  1. DeepSeek V3.2;
  2. Qwen3-30B-A3B-Instruct。

MemSifter 的 proxy 是用 Qwen3-30B-A3B-Instruct 反馈训练的,然后在两个 working LLM 上测试。这也检验了它是否能迁移到不同 working LLM。

下面摘取论文 Table 1 中 MemSifter 在主要设置下的 F1 结果:

Working LLM LoCoMo 32K LongMemEval 128K LongMemEval 1M PersonaMem 32K PersonaMem 128K PerM-V2 128K ZH4O 128K HotpotQA 128K WebWalker 128K WebDancer 128K
DeepSeek V3.2 + MemSifter 41.79 35.38 33.32 23.70 21.14 23.57 48.13 24.95 26.11 38.21
Qwen3-30B-A3B-Ins + MemSifter 46.39 47.26 49.58 26.45 23.75 22.81 50.91 22.71 27.44 35.10

论文对结果的解释主要有四点。

第一,相比 embedding retrieval,MemSifter 提供了更干净的上下文。embedding 方法容易捕捉表面语义相似内容,但不一定能找到真正帮助任务推理的历史记忆。

第二,相比 generative reranker,MemSifter 的优势在于 reward 直接对齐最终任务表现。论文强调:semantic relevance 不等于 task utility。MemSifter 不是只学“看起来相关”,而是学“哪些记忆能让 working LLM 完成任务”。

第三,相比图结构、复杂 memory pipeline,MemSifter 不需要在索引阶段构建复杂结构,而是把推理能力集中到 inference-time proxy reasoning 中。

第四,相比直接把完整历史交给 long-context LLM,MemSifter 可以减少主力模型处理长上下文的成本,同时在多个任务上保持或超过 long-context baseline 的效果。


10. 检索质量分析

为了验证 end-to-end 提升是否来自更好的 memory retrieval,论文在有 gold labels 的 benchmark 上评估 NDCG@1 和 NDCG@5。

论文 Table 2 中,MemSifter 在多个数据集上取得最高或接近最高的检索质量。例如:

方法 LoCoMo 32K NDCG@1 LoCoMo 32K NDCG@5 LongMemEval 128K NDCG@1 LongMemEval 128K NDCG@5 PersonaMem 128K NDCG@1 PersonaMem 128K NDCG@5
BGE-M3 36.25 58.13 56.00 87.90 28.25 52.34
GemmaEmb 39.64 70.76 60.51 89.64 37.07 54.72
ReaRank 43.18 59.13 62.70 88.50 33.86 55.74
ReasonRank 47.64 64.94 60.81 88.18 30.59 55.18
MemSifter 70.00 78.11 67.33 89.67 43.50 61.70

这些结果支持论文的一个主张:MemSifter 的 end-to-end 任务收益,来自于更准确地过滤噪声和更好地把关键证据排在前面。


11. 消融实验

论文用 DeepSeek V3.2 作为 working LLM 做消融实验,主要移除以下组件:

消融项 含义
w/o Outcome Reward 不使用基于最终任务表现的 RL reward,只保留检索指标监督
w/o Marginal Utility 不减去 no-memory baseline,直接使用 top-k 记忆下的绝对任务得分
w/o Reward Shaping 不使用 rank-sensitive 权重,而是对不同 top-k 得分做简单平均
w/o Thinking 移除 <think>,让 proxy 直接输出 <ranking>

摘取论文 Table 3 中部分结果:

方法 LoCoMo 32K LongMemEval 1M PersonaMem 128K PerM-V2 128K ZH4O 128K HotpotQA 128K WebDancer 128K WebWalker 128K
MemSifter 41.79 33.32 21.14 23.57 48.13 24.95 26.11 38.21
w/o Outcome Reward 30.59 28.67 15.27 18.26 40.05 21.33 20.03 30.16
w/o Marginal Utility 38.62 32.67 18.66 21.03 46.74 23.60 24.70 35.96
w/o Reward Shaping 40.68 33.26 19.89 22.42 47.30 24.87 25.12 37.53
w/o Thinking 35.34 29.81 16.14 19.07 43.36 20.69 21.31 32.28

结果显示:

  1. 去掉 outcome reward 下降最大,说明仅优化静态检索相关性不足以服务最终任务。
  2. 去掉 marginal utility 后性能下降,说明 no-memory baseline 对信用分配有帮助。
  3. 去掉 rank-sensitive reward shaping 后也会下降,说明排序位置确实重要。
  4. 去掉 thinking 后下降明显,说明显式 reasoning-before-retrieval 对记忆筛选有帮助。

12. 训练动态与课程学习分析

论文还比较了 MemSifter 和 Rearank 的训练曲线。Rearank 更依赖静态 relevance label,而 MemSifter 使用任务结果导向 reward。

image

【Figure 4。该图展示 LoCoMo 和 LongMemEval 上的训练曲线,比较 MemSifter 与 Rearank。】

论文观察到两个现象:

第一,MemSifter 收敛更快,并达到更高的最终表现。作者将其归因于 task-outcome-oriented reward 更直接对齐 working LLM 的最终任务成功。

第二,动态课程学习让 MemSifter 在多个阶段继续提升,而 baseline 在一定训练步数后出现平台或退化。论文认为,随着模型能力变化不断刷新训练数据,可以缓解过拟合并提高训练上限。


13. 效率分析

MemSifter 并不是比 embedding 检索更快。它是一个生成式 proxy model,因此会比轻量 embedding 有更高延迟。但是它的目标是:在接近 reason-then-rerank 成本的情况下获得更好的任务效果,并显著低于让大型 long-context LLM 直接读取完整历史的成本。

论文在 WebDancer 128K 上的推理成本如下:

方法 参数量 输入 token 输出 token 延迟
BGE 0.2B 128K 61.08 1015.05ms
ReaRank 7B 128K 1531.41 7657.05ms
ReasonRank 7B 128K 1664.48 8322.40ms
MemSifter 4B 128K 1557.01 3982.53ms
DeepSeek-V3.2 632B 128K 712.48 49873.60ms
DeepSeek-V3.2 632B 2K 705.61 759.89ms

这个表说明了 MemSifter 的主要 trade-off:

  • 相比 embedding,MemSifter 更慢,但检索质量和最终任务表现更好;
  • 相比 generative reranker,MemSifter 延迟更低或相近,任务表现更强;
  • 相比让 632B long-context LLM 直接处理 128K 历史,MemSifter 的延迟低很多;
  • 最终 working LLM 只需要读取筛选后的较短上下文,而不是完整历史。

14. top-k 敏感性

附录还分析了 inference-time top-k 的影响。以 DeepSeek V3.2 相关设置为例,论文报告:

Top-k LoCoMo 32K F1 LoCoMo Tok. LongMemEval 1M F1 LongMemEval Tok. WebDancer 128K F1 WebDancer Tok.
3 40.02 2.4K 30.38 6.5K 36.64 6.9K
5 41.17 4.0K 31.81 10.9K 37.10 11.6K
10 41.79 8.0K 33.32 21.8K 38.21 23.1K
15 41.46 12.0K 32.95 32.7K 37.87 34.7K

在这三个任务上,top-10 是论文报告中表现最好的设置。继续增加到 top-15 后,引入更多 token 但 F1 没有继续提升,说明检索系统不是简单地塞入越多记忆越好,而是需要控制上下文噪声和成本。


15. Deep Research 数据构造

论文还专门构造了 deep research 场景,用来评估记忆系统能否处理复杂、多步信息搜索任务。

构造方式基于 MiroVerse 数据集中的搜索轨迹和推理痕迹,并进行了两类增强:

  1. Noise Injection via Semantic Distractors
    向原始搜索轨迹中注入语义相关但事实无关或误导性的近似搜索结果。这样可以测试模型是否能基于逻辑一致性做精确区分,而不是依赖关键词匹配。

  2. Context Extension
    拼接多个搜索迭代和中间推理步骤,形成更长上下文。

这个设置使任务变成一种 needle-in-a-haystack 式的检索增强生成压力测试:模型需要从大量嘈杂的搜索日志和推理链中筛出真正有用的证据。


16. 论文中的边界与后续方向

论文没有单独设置 limitations 章节,但从实验和附录可以看到一些适用边界。

第一,MemSifter 的训练并不是免费的。附录报告训练使用 1 个 8×H200 节点,约 96 node-hours,训练 3 轮,working LLM 调用约 200K 次,输入 token 约 250M,输出 token 约 42M,API 成本约 RMB 292,即约 40 美元。这个成本对研究实验而言可控,但在更大规模系统中仍需要考虑训练和反馈成本。

第二,MemSifter 推理时比 embedding 检索更慢。它的优势在于在可接受延迟下提高检索质量,而不是追求最低延迟。

第三,检索质量分析依赖 gold ranking labels,因此论文只在有标注的 benchmark 上报告 NDCG@1 和 NDCG@5。Deep Research 相关任务由于缺乏 ground-truth ranking annotations,没有纳入这部分 intrinsic retrieval evaluation。

第四,论文当前主要关注文本历史和工具/搜索轨迹。结论中提到,未来工作将把 outcome-driven optimization 扩展到 LLM memory consolidation 和 multi-modal histories。


17. 总结

MemSifter 解决的是长期 LLM 系统中的一个关键问题:历史记忆越来越长,但每次都让主力大模型读取完整历史代价太高;简单 embedding 检索虽然便宜,却不一定能找出真正帮助任务的记忆。

论文的核心方案是:

  1. 用一个小型 proxy model 专门负责 memory retrieval;
  2. proxy model 通过 Think-and-Rank 先推理再排序;
  3. 检索器不只优化语义相关性,而是通过 working LLM 的最终任务表现获得 reward;
  4. reward 同时考虑无记忆 baseline 带来的 marginal utility,以及排序位置带来的 rank sensitivity;
  5. 通过课程学习、冷启动监督和模型平均提高 RL 训练稳定性。

因此,MemSifter 的关键贡献不是提出一种新的记忆存储格式,而是重新定义了长期记忆检索的优化目标:检索出的记忆是否真正提升了 working LLM 的最终任务表现。

从论文实验看,这种 outcome-driven proxy reasoning 在多个长期记忆 benchmark 和 deep research 任务上都带来了更好的 end-to-end F1、检索 NDCG 和相对更低的长上下文处理成本。


参考

  1. Jiejun Tan, Zhicheng Dou, Liancheng Zhang, Yuyang Hu, Yiruo Cheng, Ji-Rong Wen. MemSifter: Offloading LLM Memory Retrieval via Outcome-Driven Proxy Reasoning. arXiv:2603.03379v2.
    https://arxiv.org/abs/2603.03379

  2. MemSifter GitHub repository.
    https://github.com/plageon/MemSifter

posted @ 2026-06-23 17:20  YourF4u1t  阅读(21)  评论(0)    收藏  举报