文章目录
- 前言
- 零、论文基本信息
- 一、背景与问题
-
- [1. 长期记忆为什么会无限增长](#1. 长期记忆为什么会无限增长)
-
- [1.1 存储成本持续增长](#1.1 存储成本持续增长)
- [1.2 检索噪声增加](#1.2 检索噪声增加)
- [2. 什么是存储预算约束下的记忆管理](#2. 什么是存储预算约束下的记忆管理)
- [3. 为什么这是查询无关压缩](#3. 为什么这是查询无关压缩)
- 二、相关工作
-
- [1. Agent 长期记忆](#1. Agent 长期记忆)
-
- [1.1 外部记忆与多会话交互](#1.1 外部记忆与多会话交互)
- [2. 记忆和上下文压缩](#2. 记忆和上下文压缩)
-
- [2.1 写入前的对话摘要](#2.1 写入前的对话摘要)
- [2.2 推理时上下文压缩](#2.2 推理时上下文压缩)
- [2.3 基于结构的图剪枝](#2.3 基于结构的图剪枝)
- [3. MemRefine 的定位](#3. MemRefine 的定位)
- [三、MemRefine 方法](#三、MemRefine 方法)
-
- [1. 方法总览](#1. 方法总览)
- [2. 问题形式化](#2. 问题形式化)
- [3. 存储预算目标](#3. 存储预算目标)
- [4. 为什么不能直接优化该目标](#4. 为什么不能直接优化该目标)
- 四、为什么使用成对判断
-
- [1. 单条记忆重要性评分的问题](#1. 单条记忆重要性评分的问题)
- [2. 三类事实关系](#2. 三类事实关系)
-
- [2.1 冗余关系](#2.1 冗余关系)
- [2.2 互补关系](#2.2 互补关系)
- [2.3 独立关系](#2.3 独立关系)
- [3. 方法流程图](#3. 方法流程图)
- [五、MemRefine 核心流程](#五、MemRefine 核心流程)
-
- [1. 候选记忆对选择](#1. 候选记忆对选择)
- [2. LLM Judge](#2. LLM Judge)
- [3. DELETE 操作](#3. DELETE 操作)
- [4. MERGE 操作](#4. MERGE 操作)
- [5. PRESERVE 操作](#5. PRESERVE 操作)
- [6. 终止条件](#6. 终止条件)
- [7. 完整算法](#7. 完整算法)
- [六、如何接入已有 Agent 记忆框架](#六、如何接入已有 Agent 记忆框架)
- 七、实验设置
-
- [1. 数据集](#1. 数据集)
-
- [1.1 LoCoMo](#1.1 LoCoMo)
- [1.2 3x LoCoMo-style](#1.2 3x LoCoMo-style)
- [1.3 10x LoCoMo-style](#1.3 10x LoCoMo-style)
- [1.4 LongMemEvalS](#1.4 LongMemEvalS)
- [2. 记忆框架](#2. 记忆框架)
-
- [2.1 A-MEM 风格图记忆](#2.1 A-MEM 风格图记忆)
- [2.2 Mem0](#2.2 Mem0)
- [3. 存储预算](#3. 存储预算)
- [4. 对比方法](#4. 对比方法)
-
- [4.1 Base Memory](#4.1 Base Memory)
- [4.2 RuleSim](#4.2 RuleSim)
- [4.3 RulePR](#4.3 RulePR)
- [4.4 仅保留基线](#4.4 仅保留基线)
- [5. 评价指标](#5. 评价指标)
- [6. 实现细节](#6. 实现细节)
- 八、实验结果与分析
-
- [1. 标准 LoCoMo](#1. 标准 LoCoMo)
-
- [1.1 A-MEM 风格图记忆](#1.1 A-MEM 风格图记忆)
- [1.2 Mem0](#1.2 Mem0)
- [2. LongMemEvalS](#2. LongMemEvalS)
- [3. 不同问题类型受到的影响](#3. 不同问题类型受到的影响)
-
- [3.1 A-MEM 风格图记忆](#3.1 A-MEM 风格图记忆)
- [3.2 Mem0](#3.2 Mem0)
- [4. 与规则方法对比](#4. 与规则方法对比)
- [5. 为什么 PageRank 不够](#5. 为什么 PageRank 不够)
- [6. 不同压缩模型](#6. 不同压缩模型)
-
- [A-MEM 风格图记忆](#A-MEM 风格图记忆)
- Mem0
- [7. 扩展到更长对话](#7. 扩展到更长对话)
- 九、局限性与未来方向
-
- [1. LLM 判断可能出错](#1. LLM 判断可能出错)
- [2. 删除和合并缺少默认可逆性](#2. 删除和合并缺少默认可逆性)
- [3. 候选对计算和 LLM 调用成本](#3. 候选对计算和 LLM 调用成本)
- [4. 存储大小定义有限](#4. 存储大小定义有限)
- [5. 局部成对判断不能保证全局最优](#5. 局部成对判断不能保证全局最优)
- [6. 事实保留与硬预算存在冲突](#6. 事实保留与硬预算存在冲突)
- [7. 实验范围有限](#7. 实验范围有限)
- [8. 缺少重复实验](#8. 缺少重复实验)
- 十、我的理解和启发
-
- [1. MemRefine 更像记忆库的垃圾回收器](#1. MemRefine 更像记忆库的垃圾回收器)
- [2. 记忆压缩应该使用两阶段决策](#2. 记忆压缩应该使用两阶段决策)
- [3. 不同预算应该使用不同策略](#3. 不同预算应该使用不同策略)
- [4. 合并记忆必须保留来源](#4. 合并记忆必须保留来源)
- [5. 记忆压缩和检索应该联合评估](#5. 记忆压缩和检索应该联合评估)
- [6. 与其他论文的联系](#6. 与其他论文的联系)
- 十一、总结
- 参考资料
前言
长期运行的 Agent 会不断积累记忆。
这些记忆可能包括:
- 用户偏好;
- 历史任务;
- 环境配置;
- 工具调用结果;
- 成功和失败经验;
- 多轮对话中的人物、事件和关系。
现有研究通常关注两个问题:
- 如何从交互中提取记忆;
- 如何在未来任务中召回记忆。
但是,当 Agent 从几次交互扩展到数月甚至数年的运行后,还会出现第三个问题:
已经构建好的记忆库越来越大,应该如何把它压缩到一个固定预算之内?
记忆并不是越多越好。
大量重复或低价值条目不仅增加存储成本,还会影响检索。例如,关于同一事实的多个相似版本可能同时进入 Top-K,挤掉真正需要的其他证据。
在移动设备、本地 Agent 或边缘设备中,存储容量还可能是一个无法突破的硬约束。
一种直观方案是直接删除相似记忆:
text
相似度高
↓
认为内容重复
↓
删除其中一条
但语义相似不等于事实重复。
例如:
text
记忆 A:Jon 的舞蹈团队去年赢得了一场比赛。
记忆 B:Jon 正在准备下个月的另一场比赛。
两条记忆都包含 Jon、舞蹈和比赛,Embedding 相似度可能很高,但它们分别描述过去成就和未来计划,任何一条都不应该被删除。
反过来,两条用词不同的记忆也可能表达同一个事实。
因此,MemRefine 将相似度和压缩决策拆开:
- 相似度只负责找出值得比较的候选记忆;
- LLM 根据事实内容决定删除、合并还是保留;
- 系统重复执行这一过程,直到达到目标存储预算。
这篇论文关注的不是如何创建一种新的记忆结构,而是提供一个可以插入现有记忆框架的后处理模块:
text
记忆构建
↓
MemRefine 压缩
↓
记忆检索
↓
Agent 回答或执行任务
它研究的是长期记忆系统中一个容易被忽略的"反问题":
不只是研究如何把记忆写进去,还要研究如何安全地把记忆库缩小。
零、论文基本信息
- 论文名称:MemRefine: LLM-Guided Compression for Long-Term Agent Memory
- 发表平台:arXiv,2026
- 代码仓库:论文暂未提供官方代码仓库
- 作者信息:Minjae Kim、Jinheon Baek、Soyeong Jeong、Sung Ju Hwang;作者来自 Korea University、KAIST 和 DeepAuto.ai
一、背景与问题
1. 长期记忆为什么会无限增长
长期 Agent 通常采用以下流程:
text
用户交互
↓
提取事实、事件或经验
↓
写入外部记忆
↓
持续积累
↓
根据未来问题检索
如果系统只关心记忆写入和召回,而没有独立的维护阶段,那么记忆库大小会随着交互次数近似单调增长。
长期运行后,记忆库中可能同时存在:
- 完全重复的事实;
- 同一事实的不同表达;
- 内容互补但被拆散的记录;
- 已经被新信息覆盖的旧事实;
- 问候和感谢等低价值内容;
- 多次任务执行产生的相似过程;
- 大量只有局部区别的历史版本。
这些内容会带来两个直接问题。
1.1 存储成本持续增长
在云端系统中,这意味着更高的数据库和索引成本。
在本地设备中,存储预算可能是硬约束。例如,一个端侧个人助理不可能无限保存所有历史交互和对应的向量索引。
1.2 检索噪声增加
如果某个事实在记忆库中重复出现五次,那么五个相似条目可能同时占据 Top-K。
最终检索结果可能变成:
text
Top-1:事实 A 的表达 1
Top-2:事实 A 的表达 2
Top-3:事实 A 的表达 3
Top-4:事实 A 的表达 4
Top-5:事实 A 的表达 5
系统虽然召回了相关内容,却没有空间容纳回答问题所需的其他互补证据。
因此,压缩长期记忆不仅是为了节省空间,也可能改善检索结果的信息密度。
2. 什么是存储预算约束下的记忆管理
MemRefine 提出 Storage-Budgeted Memory Management,即存储预算约束下的记忆管理。
它的输入不是原始对话,而是已经由某个记忆框架构建好的记忆库。
输入包括:
text
已有记忆库 M0
目标存储比例 ρ
输出为:
text
压缩后的记忆库 M'
要求满足:
text
M' 的大小不超过 M0 的 ρ 倍
例如:
| 预算比例 | 含义 |
|---|---|
| 70% | 最多保留原记忆库 70% 的大小 |
| 50% | 将记忆库压缩到原大小的一半 |
| 30% | 只允许保留原记忆库 30% 的大小 |
这里容易产生一个表述误区:
"30% 预算"表示保留 30%,也就是压缩掉约 70%;不是只压缩 30%。
3. 为什么这是查询无关压缩
MemRefine 压缩记忆时,并不知道未来用户会提出什么问题。
它不能像推理时上下文压缩那样,根据当前问题删除无关内容。
例如,当前没有人询问用户去年去过哪里,不代表旅行记录以后不会有用。
因此,MemRefine 面临的是 Query-Agnostic Compression:
在未知未来问题的情况下,尽量只删除已经被其他记忆覆盖的内容,避免删除可能独立回答某个问题的事实。
这使问题比普通摘要更困难。
二、相关工作
1. Agent 长期记忆
1.1 外部记忆与多会话交互
长期记忆系统允许 Agent 在不同会话之间保存信息。
代表性路线包括:
- MemoryBank:保存长期用户记忆,并引入记忆衰减;
- MemGPT:通过类似操作系统的方式管理上下文和外部存储;
- Mem0:提取、更新和检索事实级记忆;
- A-MEM:将记忆组织成具有属性和动态链接的结构化笔记;
- LightMem:通过多阶段记忆处理降低长期运行成本。
这些方法主要研究:
text
新信息如何写入
旧信息如何更新
当前问题如何召回记忆
MemRefine 关注的是它们的下游维护问题:
text
记忆库已经建好
↓
如何在不修改原框架的前提下压缩
2. 记忆和上下文压缩
现有压缩方法大致可以分成三类。
2.1 写入前的对话摘要
系统先将一段对话压缩成摘要,再写入长期记忆。
这种方法压缩的是:
text
原始对话历史
而不是:
text
记忆框架已经构建好的记忆库
它不能直接处理已经存在的大型记忆存储。
2.2 推理时上下文压缩
LLMLingua、LongLLMLingua、RECOMP 等方法根据当前查询,压缩输入模型的 Prompt 或检索结果。
它们解决的是:
当前这次推理应该向模型提供哪些 Token?
MemRefine 解决的是:
持久化记忆库本身应该长期保存哪些内容?
两者发生在不同阶段。
text
MemRefine:
压缩长期存储。
Context Compression:
压缩单次推理输入。
2.3 基于结构的图剪枝
对于图记忆,可以根据以下信号删除节点:
- PageRank;
- 节点中心性;
- 连接数量;
- 图结构重要性。
但是,图中心性不一定代表事实价值。
一个位于图中心的节点可能只是频繁出现的普通信息;一个边缘节点却可能保存了某个未来问题的唯一答案。
因此,MemRefine 认为:
图结构和相似度适合发现候选,但不能单独决定某条事实是否可以删除。
3. MemRefine 的定位
| 方法 | 压缩对象 | 是否利用当前问题 | 发生阶段 |
|---|---|---|---|
| 会话摘要 | 原始对话 | 否 | 记忆构建前 |
| 上下文压缩 | Prompt 或检索证据 | 是 | 推理阶段 |
| 图剪枝 | 图节点和边 | 否 | 记忆维护阶段 |
| MemRefine | 已构建的记忆库 | 否 | 构建后、检索前 |
MemRefine 的核心区别是:
- 面向已经构建的记忆库;
- 具有明确存储预算;
- 与未来查询无关;
- 同时支持图和非图记忆;
- 使用 LLM 判断事实关系;
- 不修改宿主框架的构建和检索流程。
三、MemRefine 方法
1. 方法总览
为了理解论文解决的问题,可以先看 Figure 1。

图源:论文 Figure 1。
传统 Agent 记忆会随着长期交互持续增长;MemRefine 通过删除和合并将已经构建好的图或非图记忆压缩到目标预算内。
整体流程如下:
text
已有记忆库
↓
计算记忆条目之间的语义相似度
↓
选择尚未判断的最相似记忆对
↓
LLM 判断两条记忆的事实关系
├─ DELETE:删除冗余记忆
├─ MERGE:合并互补记忆
└─ PRESERVE:保留两条记忆
↓
更新记忆库和 Embedding
↓
是否达到存储预算?
├─ 否:继续选择下一对
└─ 是:输出压缩后的记忆库
2. 问题形式化
设初始记忆库为:
M 0 = { m i } i = 1 n M_0=\{m_i\}_{i=1}^{n} M0={mi}i=1n
每条记忆 m i m_i mi 至少包含:
- 文本内容;
- Embedding。
根据宿主框架不同,还可能包含:
- 时间戳;
- 元数据;
- 图连接;
- 标签;
- 其他结构字段。
对于查询 q q q,宿主记忆框架首先从记忆库 M M M 中检索上下文:
c = Ret ( q ; M ) c=\operatorname{Ret}(q;M) c=Ret(q;M)
然后由 LLM 生成答案:
a = LLM ( q , c ) a=\operatorname{LLM}(q,c) a=LLM(q,c)
下游效果记为:
U ( q , M ) ∈ 0 , 1 U(q,M)\in0,1 U(q,M)∈0,1
其中, U U U 可以是 F1、Exact Match 或其他任务指标。
3. 存储预算目标
设 F ( M 0 ) \mathcal{F}(M_0) F(M0) 表示通过删除和合并等编辑操作可以从 M 0 M_0 M0 得到的所有记忆库。
目标预算比例为:
ρ ∈ ( 0 , 1 ] \rho\in(0,1] ρ∈(0,1]
论文将目标形式化为:
max M ′ ∈ F ( M 0 ) min q ∈ Q U ( q , M ′ ) s.t. size ( M ′ ) ≤ ρ ⋅ size ( M 0 ) \max_{M'\in\mathcal{F}(M_0)}\min_{q\in\mathcal{Q}}U(q,M')\quad\text{s.t.}\quad\operatorname{size}(M')\leq\rho\cdot\operatorname{size}(M_0) M′∈F(M0)maxq∈QminU(q,M′)s.t.size(M′)≤ρ⋅size(M0)
其中:
- M ′ M' M′ 表示压缩后的记忆库;
- Q \mathcal{Q} Q 表示所有可能的未来查询;
- 内层最小化表示关注最不利的未来查询;
- 外层最大化要求压缩后的记忆库尽量保留对所有查询有用的证据;
- 约束项要求记忆大小不超过目标预算。
直观来说,系统不能只保留高频问题需要的内容,而应该尽量避免删除某个罕见问题的唯一证据。
4. 为什么不能直接优化该目标
这个目标在实际中无法直接计算,原因包括:
- 压缩时不知道未来查询集合 Q \mathcal{Q} Q;
- 每尝试一种压缩结果,都需要运行完整检索和问答流程;
- 删除和合并的组合数量会随记忆规模快速增长;
- 很难提前知道某条记忆未来是否会成为唯一证据。
因此,MemRefine 使用一个局部替代目标:
对语义相关的两条记忆判断它们是事实重复、事实互补,还是事实独立。
只有在事实可以由其他记忆覆盖时,才执行删除或合并。
四、为什么使用成对判断
1. 单条记忆重要性评分的问题
一种直接方案是为每条记忆计算重要性分数,然后删除低分内容。
可以使用的信号包括:
- 新近程度;
- Embedding 范数;
- 出现频率;
- 图中心性;
- LLM 重要性评分。
但是,一条记忆的价值通常是相对的。
例如:
text
记忆 A:用户的项目使用 Python。
记忆 B:用户的项目主要使用 Python 开发。
如果 B 已经存在,A 可以删除。
但如果只有 A,它就是不可替代的事实。
反过来:
text
记忆 A:用户的项目使用 Python。
记忆 B:用户的项目使用 FastAPI。
两条记忆虽然主题相近,但信息互补,应该同时保留或者合并。
因此,记忆是否可删除取决于其他记忆是否已经覆盖它,而不是它自身的绝对分数。
2. 三类事实关系
对于候选记忆对 ( u , v ) (u,v) (u,v),MemRefine 将其分为三种关系。
2.1 冗余关系
一条记忆的事实已经被另一条完整覆盖。
例如:
text
A:Jon 因为喜欢舞蹈,准备开一家舞蹈工作室。
B:Jon 从小学习舞蹈,希望通过自己的工作室教授其他人。
如果 B 已经包含 A 的核心事实,同时提供更丰富信息,可以删除 A。
对应操作:
text
DELETE
2.2 互补关系
两条记忆都包含对方没有的事实,但又适合合并成一条紧凑记忆。
例如:
text
A:Jon 正在扩大舞蹈工作室的社交媒体推广,并提供工作坊。
B:Jon 的工作室正在与学校合作举办评审比赛。
合并结果可以是:
text
Jon 经营一家舞蹈工作室,正在扩大社交媒体推广、
提供工作坊,并与学校合作举办评审比赛。
对应操作:
text
MERGE
2.3 独立关系
两条记忆虽然主题相似,但描述不同事实。
例如:
text
A:Jon 的舞蹈团队去年赢得了一场本地比赛。
B:Jon 正在准备下个月的另一场比赛。
它们分别描述过去成就和未来计划,不能删除或强行合并。
对应操作:
text
PRESERVE
3. 方法流程图

图源:论文 Figure 2。
MemRefine 先根据语义相似度提出候选记忆对,再由 LLM 根据事实内容选择 Delete、Merge 或 Preserve。
这张图体现了论文最重要的设计:
相似度是候选生成器,不是压缩决策器。
五、MemRefine 核心流程
1. 候选记忆对选择
对于每条记忆,系统计算 Embedding。
在每轮迭代中,选择尚未处理的最相似记忆对:
$ ( u , v ) ← arg max ( u , v ) ∉ S cos ( e u , e v ) (u,v)\leftarrow\arg\max_{(u,v)\notin S}\cos(e_u,e_v) (u,v)←arg(u,v)∈/Smaxcos(eu,ev)
其中:
- e u e_u eu 和 e v e_v ev 分别是记忆 u u u 和 v v v 的向量;
- cos ( e u , e v ) \cos(e_u,e_v) cos(eu,ev) 表示余弦相似度;
- S S S 保存已经被判断为
PRESERVE的记忆对。
如果一对记忆已经被判断为应该同时保留,就不再重复交给 LLM,避免无效调用。
相似度较高的记忆更可能存在:
- 重复;
- 局部事实重叠;
- 同一主题下的互补信息。
因此,先处理高相似记忆对,可以优先发现最容易压缩的部分。
2. LLM Judge
候选记忆对会被发送给 Judge LLM。
Judge 返回结构化结果:
text
action:
DELETE / MERGE / PRESERVE
target:
删除 A 或删除 B
merge_instruction:
合并时必须保留哪些事实
reason:
判断理由
Judge 被要求根据事实价值判断,而不是根据表面措辞判断。
重点保留的内容包括:
- 人名;
- 时间;
- 地点;
- 事件;
- 用户偏好;
- 计划;
- 个人经历;
- 人物关系;
- 观点和明确状态。
低价值内容包括:
- 普通问候;
- 通用感谢;
- 没有具体事实的寒暄;
- 不携带信息的情绪表达。
3. DELETE 操作
如果 Judge 判断一条记忆被另一条完全覆盖,就删除指定目标。
对于普通记忆库:
text
删除目标记忆
对于图记忆:
text
删除目标节点
↓
删除悬空关系边
删除操作适合完全冗余的记忆,不负责整合互补事实。
4. MERGE 操作
如果两条记忆分别携带不同事实,且可以合并成更紧凑的内容,Judge 会生成合并指令。
随后由另一个 Merge LLM 生成新记忆:
m ← Merge ( u , v , instruction ) m\leftarrow\operatorname{Merge}(u,v,\text{instruction}) m←Merge(u,v,instruction)
新记忆需要:
- 保留两条记忆中的所有独立事实;
- 删除重复措辞;
- 删除没有事实价值的内容;
- 保持人物归属;
- 尽量简洁。
合并完成后:
text
删除 u 和 v
↓
加入新记忆 m
↓
重新计算 m 的 Embedding
对于图记忆,新节点还会继承两条原节点的关系边并集,同时删除:
- 重复边;
- 指向自身的边。
重新计算 Embedding 很重要,因为新记忆内容已经变化,后续候选对选择应该根据新内容进行。
5. PRESERVE 操作
如果两条记忆分别表达不可替代的事实,就保持不变。
同时将该记忆对加入缓存 S S S:
S ← S ∪ { ( u , v ) } S\leftarrow S\cup\{(u,v)\} S←S∪{(u,v)}
后续迭代不会再次处理该组合。
6. 终止条件
首先根据预算比例计算目标大小:
B = ρ ⋅ size ( M 0 ) B=\rho\cdot\operatorname{size}(M_0) B=ρ⋅size(M0)
算法在以下条件之一满足时停止:
- 当前记忆库大小已经不超过 B B B;
- 已经没有尚未判断的候选记忆对;
- 剩余候选全部被判断为应该保留。
第二种情况意味着系统可能提前退出。
论文的原则是:
如果继续压缩必然删除没有冗余备份的事实,那么事实保留优先于机械满足预算。
这一设计也揭示了一个潜在矛盾:
- 论文任务强调固定存储预算;
- 算法又允许为了保留事实而提前退出。
实验中 MemRefine 能够达到设定预算,但在更缺少冗余的真实记忆库中,硬预算和事实完整性之间仍然可能冲突。
7. 完整算法
text
输入:
- 初始记忆库 M0
- 存储预算比例 ρ
初始化:
- B = ρ × size(M0)
- M' = M0
- S = 空集合
循环:
1. 从 M' 中选择尚未判断的最相似记忆对 (u, v)
2. 如果没有候选记忆对,则结束
3. LLM Judge 判断操作
DELETE:
- 删除指定目标
- 图结构中删除悬空边
MERGE:
- 合并 u 和 v
- 保留独立事实
- 继承关系边
- 重新计算 Embedding
PRESERVE:
- 保留 u 和 v
- 将 (u, v) 加入 S
4. 检查是否达到预算
5. 未达到则继续
输出:
- 压缩后的记忆库 M'
六、如何接入已有 Agent 记忆框架
MemRefine 是一个离线、构建后的记忆维护模块。
text
宿主框架创建记忆
↓
MemRefine 定期压缩
↓
宿主框架照常检索
它不会修改:
- 原来的记忆提取方式;
- 原来的写入策略;
- 原来的查询检索器;
- 原来的答案生成流程。
对于图结构记忆,MemRefine 维护节点和边。
对于非图结构记忆,它直接处理文本条目和 Embedding。
所有 Judge 和 Merge 调用都发生在记忆维护阶段,而不是用户查询阶段。
因此,它不会直接增加每次问答的检索轮数和生成延迟,但会增加离线维护成本。
七、实验设置
1. 数据集
1.1 LoCoMo
论文使用 LoCoMo 的 10 个样本,共包含 1986 个问题。
问题覆盖五个类别:
- 单跳事实回忆;
- 多跳推理;
- 时间推理;
- 开放式问题;
- 反事实问题。
这些任务可以检验压缩后是否仍然保留:
- 局部事实;
- 分散在多个位置的证据;
- 事件顺序;
- 较大范围的对话信息。
1.2 3x LoCoMo-style
为了测试更长历史,论文构造了约三倍规模的 LoCoMo 风格数据。
数据包括:
text
样本数:5
总 Session:400
总对话轮次:8000
问答数量:2720
平均每个样本包含:
text
80 个 Session
1600 轮用户---助手交互
1.3 10x LoCoMo-style
更大规模的压力测试包括:
text
样本数:5
总 Session:1350
总对话轮次:27000
问答数量:9180
平均每个样本包含:
text
270 个 Session
5400 轮用户---助手交互
3x 和 10x 数据由模型合成,因此主要用于可控压力测试,不能完全替代真实用户的长期交互日志。
1.4 LongMemEvalS
论文还选择 LongMemEvalS 中的 60 个问题,每种类型 10 个:
- Single-user;
- Single-assistant;
- Single-preference;
- Multi-session;
- Temporal;
- Knowledge-update。
它用于验证结果是否只对 LoCoMo 有效。
2. 记忆框架
2.1 A-MEM 风格图记忆
论文使用一种简化的 A-MEM 风格图表示,保留:
- 记忆文本;
- Embedding;
- 节点之间的链接。
实验没有使用完整 A-MEM 的所有字段,而是移除了辅助上下文、类别、标签和检索次数等字段。
作者认为这些辅助字段在当前检索设置中没有带来有效证据,反而可能增加噪声。
因此,实验中的结果应准确理解为:
MemRefine 在 A-MEM 风格的事实图记忆上有效,而不是完整复现并压缩原始 A-MEM 的全部记忆结构。
2.2 Mem0
Mem0 会在写入阶段对原始对话执行事实提取和更新,得到已经经过处理的记忆条目。
相比 A-MEM 风格图记忆,Mem0 本身已经做过一定程度的:
- 过滤;
- 去重;
- 更新;
- 合并。
因此,它留给后处理压缩的冗余空间可能更少。
3. 存储预算
实验分别将记忆库压缩到初始大小的:
text
70%
60%
50%
40%
30%
这覆盖了从轻度压缩到激进压缩的完整范围。
4. 对比方法
4.1 Base Memory
未经过压缩的原始记忆库,用于衡量性能保留程度。
4.2 RuleSim
使用相同的候选对选择流程,但不调用 LLM Judge。
系统根据固定相似度阈值决定:
- 删除;
- 合并。
它用于验证"只看相似度是否已经足够"。
4.3 RulePR
在相似度规则基础上加入 PageRank。
图中心性更高的节点会被优先保留;如果删除仍然无法达到目标预算,再执行图结构上的合并。
它用于验证"图中心性是否可以替代 LLM 的事实判断"。
4.4 仅保留基线
附录还比较了:
- 根据 PageRank 保留固定比例节点;
- 随机保留固定比例节点。
这两种方法不执行事实级合并。
5. 评价指标
在 LoCoMo 及其扩展版本上,论文使用:
- Token-level F1;
- Exact Match,简称 EM。
在 LongMemEvalS 上使用:
- Accuracy。
此外,论文记录实际存储比例,验证压缩结果是否满足目标预算。
6. 实现细节
候选记忆向量由以下模型生成:
text
all-MiniLM-L6-v2
候选对根据余弦相似度排序。
宿主框架检索阶段保持原设置:
text
Top-K = 10
默认 Judge 和 Merge 模型为:
text
GPT-5-mini
论文还使用开源模型进行对比:
text
Qwen3-8B
每条记忆送入 Judge 和 Merge 模型前,最多保留前 2000 个字符。
LongMemEvalS 使用 GPT-4o-mini 作为自动评审模型。
由于 API 调用成本较高,每个设置只运行一次,因此论文没有报告:
- 置信区间;
- 标准差;
- 误差条。
八、实验结果与分析
1. 标准 LoCoMo
1.1 A-MEM 风格图记忆
| 存储预算 | F1 | EM |
|---|---|---|
| 100% | 0.4013 | 0.1712 |
| 70% | 0.4014 | 0.1690 |
| 60% | 0.3977 | 0.1715 |
| 50% | 0.3902 | 0.1628 |
| 40% | 0.3844 | 0.1615 |
| 30% | 0.3628 | 0.1474 |
压缩到 70% 时,F1 与未压缩记忆基本相同。
压缩到 50% 时:
text
F1:0.4013 → 0.3902
在删除约一半存储的情况下,仍保留了约 97.2% 的基础 F1。
即使压缩到 30%,F1 仍为 0.3628,没有出现断崖式下降。
1.2 Mem0
| 存储预算 | F1 | EM |
|---|---|---|
| 100% | 0.2827 | 0.1098 |
| 70% | 0.2888 | 0.1177 |
| 60% | 0.2773 | 0.1095 |
| 50% | 0.2761 | 0.1132 |
| 40% | 0.2685 | 0.1102 |
| 30% | 0.2510 | 0.0994 |
Mem0 在 70% 预算下反而略有提升。
这不代表压缩必然提高性能,而是说明删除重复和低价值记忆后,Top-K 中可能出现更多有用证据。
不过,Mem0 在紧预算下下降得更明显,说明它原本已经在写入阶段完成了较多整理,可安全删除的冗余空间小于 A-MEM 风格图记忆。
2. LongMemEvalS
| 框架 | Base | 70% | 60% | 50% | 40% | 30% |
|---|---|---|---|---|---|---|
| A-MEM graph | 0.5833 | 0.6000 | 0.6000 | 0.6167 | 0.5833 | 0.5500 |
| Mem0 | 0.5167 | 0.4833 | 0.5167 | 0.4833 | 0.4500 | 0.4000 |
A-MEM 风格记忆在 50% 预算时,从 0.5833 提高到 0.6167。
Mem0 只有在 60% 预算时维持基础准确率,预算继续缩小时开始下降。
需要注意,LongMemEvalS 实验只有 60 个问题,每类 10 个,因此一个问题就会造成约 1.67 个百分点的总体变化。
这里的轻微提升可能包含样本波动,不能过度解读。
3. 不同问题类型受到的影响
为了观察压缩影响,论文 Figure 3 展示了各类别相对于未压缩记忆的 F1 变化。

图源:论文 Figure 3。
红色表示压缩后 F1 提高,蓝色表示下降。压缩效果与问题类型、宿主记忆表示都有明显关系。
3.1 A-MEM 风格图记忆
单跳和时间问题在多个预算下反而提高。
例如,60% 预算下:
text
Single-hop:+0.047
Temporal:+0.093
这说明去除重复节点后,局部事实更容易进入 Top-K。
但是,多跳、开放式和反事实问题在紧预算下更敏感。
30% 预算时:
text
Multi-hop:-0.039
Open-ended:-0.034
Counterfactual:-0.108
这些任务需要更广泛的证据覆盖。压缩越激进,删除某条边缘证据的风险越高。
3.2 Mem0
Mem0 的类别变化与 A-MEM 不完全一致。
例如,反事实问题在多个预算下有所提高,而开放式问题在紧预算下明显下降。
这说明:
压缩效果不仅由压缩器决定,也由宿主记忆框架已经生成了什么样的记忆决定。
同一个压缩算法不能脱离宿主记忆表示单独评价。
4. 与规则方法对比
在 A-MEM 风格图记忆上,30% 预算时:
| 方法 | F1 |
|---|---|
| MemRefine | 0.3628 |
| RuleSim | 0.3482 |
| RulePR | 0.3306 |
当预算较宽松时,规则方法与 MemRefine 比较接近,某些中等预算下甚至略高。
例如,50% 预算时:
text
MemRefine:0.3902
RuleSim:0.3989
RulePR:0.3850
因此,不能简单地说 LLM 方法在所有预算下都最好。
更准确的实验结论是:
当压缩主要处理明显重复内容时,固定相似度规则已经具有竞争力;当预算越来越紧、系统必须处理事实互补和主题相似但内容不同的记忆时,LLM 判断优势更加明显。
5. 为什么 PageRank 不够
PageRank 衡量的是图结构中心性,不是事实不可替代性。
附录中的仅保留实验显示,在 70% 存储预算下:
| 方法 | F1 |
|---|---|
| MemRefine | 0.4014 |
| PageRank 保留 | 0.3111 |
| 随机保留 | 0.3085 |
PageRank 只比随机保留略好,明显低于带合并和事实判断的 MemRefine。
这说明记忆压缩不是简单的节点选择问题。
如果只保留某些节点而不合并互补事实,就会损失大量信息。
6. 不同压缩模型
论文比较了 GPT-5-mini 和 Qwen3-8B。
A-MEM 风格图记忆
| 模型 | 70% | 60% | 50% | 40% | 30% |
|---|---|---|---|---|---|
| GPT-5-mini | 0.4014 | 0.3977 | 0.3902 | 0.3844 | 0.3628 |
| Qwen3-8B | 0.4006 | 0.3893 | 0.3796 | 0.3529 | 0.3430 |
Mem0
| 模型 | 70% | 60% | 50% | 40% | 30% |
|---|---|---|---|---|---|
| GPT-5-mini | 0.2888 | 0.2773 | 0.2761 | 0.2685 | 0.2510 |
| Qwen3-8B | 0.2880 | 0.2718 | 0.2623 | 0.2390 | 0.2076 |
在 70% 预算下,两种模型表现接近。
随着预算收紧,GPT-5-mini 的优势逐渐扩大。
原因是轻度压缩主要处理明显重复记忆,而激进压缩需要进行更精细的事实判断:
- 是重复还是互补;
- 哪条信息更加完整;
- 合并时哪些细节不能丢;
- 相似主题下是否描述了不同事件。
这也给实际部署提供了一个思路:
日常轻度压缩可以使用较小模型,只有在预算压力较大时才调用更强 Judge。
7. 扩展到更长对话
在 3x 和 10x LoCoMo 风格数据上,性能随着预算收紧而平滑下降,没有突然崩溃。
例如 A-MEM 风格记忆:
| 数据规模 | Base F1 | 70% | 60% | 50% | 30% |
|---|---|---|---|---|---|
| 3x | 0.2344 | 0.2307 | 0.2324 | 0.2163 | 0.1900 |
| 10x | 0.2053 | 0.2033 | 0.2006 | 0.1916 | 0.1660 |
10x 数据在 70% 预算时,F1 只下降约 1%。
但压缩到 30% 时,F1 下降约 19.1%。
这说明 MemRefine 可以用于更长历史,但并不存在"任意压缩都不影响效果"。
真正可安全删除的比例仍然取决于:
- 记忆库冗余程度;
- 宿主框架是否已经做过去重;
- 问题需要多少分散证据;
- Judge 的事实判断能力;
- 目标预算是否过于激进。
九、局限性与未来方向
1. LLM 判断可能出错
Judge 可能将互补事实误判为重复,导致永久删除。
Merge LLM 也可能:
- 遗漏时间;
- 混淆人物;
- 删除限定条件;
- 将两件不同事件合成一件;
- 生成原记忆中不存在的关系。
压缩错误会直接写入持久化记忆,因此风险高于一次普通生成错误。
2. 删除和合并缺少默认可逆性
论文算法会直接修改记忆库。
实际系统更适合采用:
- 软删除;
- 压缩前快照;
- 操作日志;
- 合并来源 ID;
- 版本号;
- 人工审核;
- 一键回滚。
否则,一次错误删除可能永久丢失用户信息。
论文在伦理讨论中也建议结合软删除和审计日志。
3. 候选对计算和 LLM 调用成本
如果记忆库有 n n n 条记忆,直接计算所有两两相似度可能产生接近 O ( n 2 ) O(n^2) O(n2) 的候选规模。
此外,每次压缩操作可能需要:
- Judge 调用;
- Merge 调用;
- 新 Embedding 计算;
- 图关系更新。
论文强调这些成本发生在离线阶段,但没有详细报告:
- 压缩总 Token;
- LLM 调用次数;
- 压缩耗时;
- 单位存储节省成本;
- 不同记忆规模下的计算复杂度。
因此,它减少了长期存储和检索噪声,却不一定降低总系统成本。
4. 存储大小定义有限
论文通过将记忆条目序列化为 JSON,计算文件大小。
这能够提供统一比较,但不完全等价于生产环境中的实际占用,例如:
- 向量索引开销;
- 数据库索引;
- 图数据库边存储;
- 元数据页;
- 缓存;
- 副本;
- 日志;
- 对象存储压缩。
因此,实验中的 50% 存储预算应理解为序列化记忆表示的 50%,不一定等于系统总内存或磁盘成本下降 50%。
5. 局部成对判断不能保证全局最优
论文形式化目标是面向所有未来问题的全局最坏情况优化。
实际算法只对当前最相似的记忆对做局部判断。
这是一种可计算的近似,但不能保证:
- 最终压缩结果全局最优;
- 合并顺序不会影响后续结果;
- 多条记忆共同形成的冗余能被发现;
- 跨三个以上条目的事实关系能被正确处理。
不同操作顺序可能产生不同的最终记忆库。
6. 事实保留与硬预算存在冲突
算法允许在没有可压缩候选时提前停止。
这意味着,如果记忆库本身冗余很少,系统可能无法同时满足:
- 严格存储预算;
- 不删除独立事实。
对真正资源受限的端侧 Agent 来说,预算可能无法突破。此时系统还需要额外策略,例如:
- 将低优先级记忆转移到冷存储;
- 允许查询后按需加载;
- 使用任务或领域重要性;
- 引入用户定义的保留策略;
- 对不可压缩事实进行更强编码。
7. 实验范围有限
论文只测试了:
- 简化的 A-MEM 风格图记忆;
- Mem0;
- 长期对话问答任务。
还没有验证:
- 完整 A-MEM;
- 文件式主题记忆;
- 多模态记忆;
- 技能记忆;
- 工具调用经验;
- 软件工程 Agent;
- 多 Agent 共享记忆;
- 真实用户数月运行日志。
8. 缺少重复实验
每种设置只进行一次压缩和评估,没有置信区间或误差条。
但 MemRefine 中包含多个非确定性环节:
- Judge 判断;
- Merge 生成;
- 自动评审;
- 合成数据;
- 记忆构建。
因此,部分小幅提升可能来自随机波动。
十、我的理解和启发
1. MemRefine 更像记忆库的垃圾回收器
我认为 MemRefine 最适合被理解为 Agent 记忆系统中的 Garbage Collector。
text
记忆框架:
负责持续创建和更新记忆。
MemRefine:
定期清理冗余、合并碎片并控制容量。
检索器:
从压缩后的记忆库中找证据。
它不取代 Mem0、A-MEM 或其他记忆框架,而是为它们增加一个后处理维护阶段。
2. 记忆压缩应该使用两阶段决策
MemRefine 的"相似度提候选,LLM 做决策"非常适合工程实现。
text
第一阶段:便宜的向量模型
↓
筛选少量高相似候选对
↓
第二阶段:较贵的 LLM
↓
判断删除、合并或保留
这样既避免对所有记忆调用 LLM,也避免仅依靠相似度进行危险删除。
3. 不同预算应该使用不同策略
可以为系统设置多级存储水位:
text
记忆使用率 < 60%
→ 不压缩
60%~75%
→ 只删除高置信度重复项
75%~90%
→ 允许合并互补事实
> 90%
→ 使用更强 Judge,执行激进压缩或迁移冷存储
论文结果也说明:
- 宽松预算下,小模型和规则已经比较有效;
- 预算越紧,越需要强模型进行事实级判断。
4. 合并记忆必须保留来源
论文重点关注事实保留,但在实际项目中,合并后的记忆还应该记录:
text
merged_from
source_message_ids
created_time
compression_model
judge_reason
confidence
previous_versions
否则,未来无法知道一条复合记忆来自哪些原始交互。
5. 记忆压缩和检索应该联合评估
单看压缩率无法判断方法是否有效。
需要同时监控:
| 指标 | 含义 |
|---|---|
| 存储压缩率 | 记忆库缩小多少 |
| 事实保留率 | 独立事实是否仍然存在 |
| 检索覆盖率 | 相关证据能否被召回 |
| Top-K 多样性 | 是否减少重复候选 |
| 下游任务效果 | Agent 最终是否正确 |
| 错误删除率 | 被删除事实是否仍有替代 |
| 合并完整率 | 合并后是否保留全部事实 |
| 压缩成本 | Judge、Merge 和 Embedding 成本 |
MemRefine 的结果表明,减少记忆数量有时反而能提高问答效果,因为它改善了 Top-K 的信息密度。
6. 与其他论文的联系
| 方法 | 主要问题 | 与 MemRefine 的关系 |
|---|---|---|
| Mem0 | 事实如何写入、更新和删除 | MemRefine 可压缩 Mem0 已构建的记忆 |
| A-MEM | 记忆如何关联和演化 | MemRefine 可压缩其图式事实节点 |
| LightMem | 如何降低记忆处理成本 | 主要优化构建流程,MemRefine 优化构建后的存储 |
| Infini Memory | 如何维护主题文档 | 可以在文档或条目过多时增加预算压缩 |
| H-Mem | 如何组织时间层级和实体关系 | MemRefine 可作为混合索引后的清理层 |
| MemRefine | 如何在固定预算下压缩已有记忆 | 重点是后构建、查询无关压缩 |
一个更加完整的 Agent 记忆生命周期可以表示为:
text
交互信息
↓
记忆写入判断
↓
事实提取和结构化
↓
记忆更新与冲突处理
↓
主题、图或层次化组织
↓
MemRefine 定期预算压缩
↓
按需检索
↓
任务执行
↓
审计和用户删除
十一、总结
MemRefine 提出了一种面向长期 Agent 的后构建记忆压缩框架。
它解决的问题是:
如何将已经构建好的长期记忆库压缩到固定存储预算,同时尽量保留对未知未来问题有用的事实?
核心方法包括:
- 将存储预算管理形式化为查询无关的压缩问题;
- 不为单条记忆独立计算重要性;
- 根据 Embedding 相似度选择候选记忆对;
- 让 LLM 根据事实内容做最终判断;
- 对冗余记忆执行删除;
- 对互补记忆执行合并;
- 对独立事实执行保留;
- 合并后重新计算 Embedding;
- 对图记忆维护节点关系;
- 重复处理直到达到预算或没有安全操作。
实验说明,在标准 LoCoMo 上:
- A-MEM 风格图记忆压缩到 70% 后,F1 与未压缩基本一致;
- 压缩到 50% 时仍保留约 97.2% 的基础 F1;
- Mem0 在 70% 预算下甚至略有提升;
- 更紧预算下,效果逐渐下降,但没有突然崩溃。
实验也表明:
- 相似度规则在宽松预算下已经具有竞争力;
- 当预算收紧时,LLM 的事实判断优势更加明显;
- PageRank 不能可靠代表事实价值;
- 单跳和时间问题可能受益于去重;
- 多跳、开放式和反事实问题对激进压缩更敏感;
- 宿主记忆框架决定了还有多少冗余可以安全删除。
MemRefine 的局限也比较明显:
- LLM 可能错误删除或合并事实;
- 压缩操作默认不可逆;
- 成对判断不能保证全局最优;
- 离线压缩成本没有充分报告;
- 实验只覆盖两种记忆表示;
- 每个设置只运行一次;
- 严格预算与事实完整性可能发生冲突。
对实际 Agent 开发而言,这篇论文最值得借鉴的不是直接使用某个模型做压缩,而是三个设计原则:
第一,记忆库需要独立于写入和检索的维护阶段。
第二,相似度适合寻找压缩候选,但不适合直接决定删除。
第三,记忆压缩必须围绕事实是否被其他记忆覆盖来判断。
长期记忆系统不仅需要回答"什么值得记住",还必须持续回答:
text
什么已经重复?
什么可以合并?
什么仍然不可替代?
在有限预算下应该保留到什么程度?
从这个角度看,MemRefine 将 Agent 记忆研究从"不断增长的外部存储"推进到了"具有容量上限和垃圾回收机制的长期系统"。
参考资料
- Minjae Kim, Jinheon Baek, Soyeong Jeong, Sung Ju Hwang. MemRefine: LLM-Guided Compression for Long-Term Agent Memory. arXiv, 2026.