What Deserves Memory: Adaptive Memory Distillation for LLM Agents
论文阅读:What Deserves Memory——什么信息真正值得 Agent 记住?
论文标题:What Deserves Memory: Adaptive Memory Distillation for LLM Agents
作者:Wenquan Ma, Jiayan Nan, Wenlong Wu, Yize Chen(arXiv v4;ACL Anthology 正式版本署名 Wenquan Ma、Jiayan Nan、WenLong Wu)
发表位置:ACL 2026 Main Conference,Volume 1: Long Papers
arXiv 编号:2508.03341
arXiv 原文:https://arxiv.org/abs/2508.03341
ACL Anthology:https://aclanthology.org/2026.acl-long.1607/
代码:https://github.com/nemori-ai/nemori
主题:LLM Agent Memory、Memory Distillation、Episodic Memory、Semantic Memory、Predictive Coding
核心问题:面对不断增长的交互历史,Agent 应该依据什么标准判断哪些信息值得进入长期记忆,而不是依赖人工规定的 importance score、情绪标签或固定事实模板?
1. 论文要解决什么问题?
LLM 本身基本是无状态的。
一个持续运行的 Agent 如果想维持长期行为一致性,就需要不断将过去的交互重新提供给模型。然而交互历史会持续增长,而模型的上下文窗口有限,同时过长上下文还会受到 Lost in the Middle 等问题影响。
因此,Agent Memory 的核心任务之一就是:
过去发生了这么多事情,究竟哪些值得记住?
论文首先把一个 Memory System 拆成三个阶段:
| 阶段 | 核心问题 |
|---|---|
| Distillation | 一段经历以什么形式进入 Memory,哪些内容值得保留 |
| Management | 已经进入 Memory 的内容如何组织、更新、合并和遗忘 |
| Retrieval | 当前任务需要哪些 Memory,以及如何找出来 |
很多工作主要关注后两个阶段。
例如,可以根据访问频率、时间衰减、层级结构或者 Memory 之间的关系,在 Memory 已经形成之后再决定哪些更重要。
另一类方法则直接在 Distillation 阶段做筛选,例如:
- 给事件打 importance score;
- 给经历附加 emotional tag;
- 从对话里抽取事实;
- 提取 persona;
- 对文本进行压缩。
问题在于,这些规则本质上都需要设计者事先定义:
“什么样的信息应该重要?”
作者认为,这种设计可能造成两个问题:
- 人为规则会引入设计者的先验偏差;
- 为了防止重要信息被误删,系统又容易走向“什么都存”,最终造成 Memory 膨胀和 Retrieval Noise。
因此,NEMORI 想寻找一种来自交互数据本身的信号,而不是人为规定的 importance heuristic(重要性启发式规则)。
2. 核心思想:如果一件事能够被预测,它就没有那么值得重复记忆
NEMORI 的核心思想来自 Predictive Coding Theory(预测编码理论)。
论文采用了一个非常直接的直觉:
Predictability Implies Redundancy:可预测意味着冗余。
假设 Agent 已经知道:
- 用户是一名程序员;
- 用户主要使用 Python;
- 用户经常讨论机器学习。
后来用户又说:
“我今天继续使用 Python 写机器学习代码。”
这段信息很大程度可以由已有知识预测。
相反,如果用户突然说:
“我已经决定以后不用 Python,而是全面切换到 Rust。”
这就明显违背已有知识。
NEMORI 因而不直接问:
“这句话重要吗?”
而是先问:
“根据我已经拥有的 Memory,我本来认为这里会发生什么?”
然后将预测结果和真实发生的事情进行比较。
两者之间无法被已有知识解释的部分,即 prediction error(预测误差),就是更值得被保存的新信息。
可以将整个思想概括为:
已有 Memory -> 预测当前 Episode -> 与真实 Episode 比较 -> 保存预测失败的部分
这也是论文标题 “What Deserves Memory” 给出的回答:
已有知识无法预测的信息,更值得进入新的 Memory。
需要注意的是,这里的“prediction error”并不是数值意义上的预测损失,也没有训练一个额外的预测模型。
整个过程仍然通过 LLM Prompt 完成。
3. NEMORI 在 Memory Pipeline 中的位置
NEMORI 的重点是 Memory Distillation,而不是设计一个复杂的 Memory Management 系统。
论文希望 NEMORI 可以充当其他 Memory 系统之前的一层:
Raw Interaction -> NEMORI Distillation -> Memory Management System
因此它既可以使用论文自己的 Native Management,也可以接到:
- A-MEM;
- MemoryOS;
- 其他第三方 Memory System。
论文将这种设计称为 management-agnostic(管理方式无关)。

【Figure 1。该图是 NEMORI 的整体框架图,重点观察左侧 Interaction Sequence 如何依次经过 Episodic Memory Integration 和 Semantic Knowledge Distillation,并最终连接到 Native Memory Management、MemoryOS、A-MEM 等不同管理系统。】
Figure 1 中最重要的是两条级联模块:
- Episodic Memory Integration(情景记忆整合)
- Semantic Knowledge Distillation(语义知识蒸馏)
前者负责:
把杂乱、连续的原始交互整理成完整 Episode。
后者负责:
判断 Episode 中有哪些内容是已有知识无法预测的,并将其蒸馏为 Semantic Knowledge。
4. 三个 Prior:NEMORI 的设计原则
NEMORI 整个框架由三个 Prior(先验原则)指导。
4.1 Structure Prior:Integrity of Episode
第一个是:
Episode 应当保持完整性。
连续对话天然存在不同事件和主题。
一条孤立消息的含义往往依赖上下文。例如:
“好的,那就周六早上四点。”
单独存这一句话没有多少意义。
必须结合前面的:
“我们周六去爬山怎么样?”
才能理解。
因此论文认为 Memory 不应该按照任意固定长度粗暴切分,而应该首先寻找交互中的自然 Episode 边界。
4.2 Representation Prior:Asymmetry of Perspective
第二个 Prior 是:
经历事情的方式和回忆事情的方式并不相同。
Raw Conversation 是第一人称、实时发生、充满噪声的。
而之后进行 Memory Retrieval 时,更需要的是:
- 事情发生了什么;
- 谁参与了;
- 做出了什么决定;
- 前因后果是什么;
- 最终结果是什么。
因此 NEMORI 不只是保存原始 Conversation,而是把 Episode 转换成更适合后续回忆和检索的 Narrative Episode(叙事式 Episode)。
4.3 Distillation Prior:Predictability Implies Redundancy
第三个也是整篇论文最核心的 Prior:
能够由已有知识预测出来的信息具有较高冗余,而预测失败的部分更值得被记忆。
因此 Semantic Memory 的构造不是:
Conversation -> 直接抽取事实
而是:
Existing Memory -> Predict Episode
然后:
Actual Episode - Predicted Episode -> Novel Knowledge
当然,这里的减号不是数学差值,而是让 LLM 比较两段内容之间的语义差异。
5. 第一阶段:Episodic Memory Integration
Episodic Memory Integration 一共有三个步骤:
- Local Message Partitioning
- Narrative Episode Generation
- Associative Memory Integration
其目标是先把连续消息整理成结构化 Episode。
5.1 Local Message Partitioning:动态寻找 Episode
系统首先维护一个 Message Buffer。
每条 Message 包含:
- sender;
- content;
- timestamp。
新消息持续进入 Buffer。
当 Buffer 中的消息数量达到 observation window w 后,触发一次 Episode 划分。
论文主实验使用:
w = 20 messages
但这里并不是:
每 20 条消息就是一个 Episode。
20 条只是一次观察窗口。
NEMORI 会让 LLM 判断这 20 条消息内部实际包含多少个 Episode。
Prompt 会要求模型根据:
- Topic Change;
- Intent Transition;
- 事件变化;
- 对话内容的逻辑关系;
把消息划分为若干组。
得到:
P = {P1, P2, ..., Pn}
其中每个 Pj 就是一段 Raw Episode。
论文的 Prompt 甚至允许同一个 Episode 包含非连续 Message,因为交错出现的消息仍然可能属于同一事件。
完成划分之后,这批消息从 Buffer 中移除,等待下一批交互。
5.2 Narrative Episode Generation:从原始对话变成叙事记忆
对于每个 Raw Episode Pj,NEMORI 使用 LLM 生成两个东西:
- Narrative Episode
Nj - Episodic Cue
cj
其中 Narrative Episode 是对整个事件的第三人称叙事表示。
Cue 则是更加精炼、适合检索和后续预测的线索。
随后计算:
embedding(cj + Nj)
最终一条 Episodic Memory 包含四部分:
| 字段 | 内容 |
|---|---|
cj |
Episodic Cue |
Nj |
Narrative Episode |
Pj |
原始 Conversation |
vj |
Cue + Narrative 的 Embedding |
因此 NEMORI 并没有直接丢掉 Raw Conversation。
它同时保存:
Raw Episode + Narrative Representation。
这使得后续 Retrieval 可以根据需要选择:
- 返回 Narrative,提高效率;
- 返回 Raw Conversation,保留更精确的原始细节。
从这一阶段开始,NEMORI 后续处理的基本单元也不再是一条 Message,而是一个完整 Episode。
论文认为,这一点也是其 Memory Construction 成本较低的重要原因之一:很多其他方法会逐条 Message 进行 LLM 处理,而 NEMORI 主要进行 Episode-level Processing。
5.3 Associative Memory Integration:修复 observation window 切断的 Episode
虽然前面使用 LLM 动态划分 Episode,但仍然存在一个问题。
假设一次 Conversation 非常长:
- 前 20 条消息进入第一个 observation window;
- 后 10 条消息进入第二个 window。
同一个事件仍然可能被窗口边界切开。
因此 NEMORI 又设计了 Associative Memory Integration。
对于新生成的 Episode,系统先到已有 Episodic Database 中进行相似度搜索。
主实验:
Ke = 5
即找 Top-5 相似 Episode。
然后让 LLM 判断:
新 Episode 是否实际上是某个已有 Episode 的延续?
如果是,就执行 Merge。
新的 Narrative 会重新生成,同时:
- Raw Conversation 合并;
- Cue 更新;
- Embedding 重新计算。
如果没有找到具有连续关系的 Episode,就将其作为新的独立 Episode 插入数据库。
因此这里形成的是:
局部动态分段 -> 全局相似检索 -> Episode 连续性判断 -> 必要时重新合并
这使 observation window 不等同于真正的 Memory 边界。
6. 第二阶段:Semantic Knowledge Distillation
完成 Episode 构建后,NEMORI 才真正开始回答:
这个 Episode 里面究竟什么值得长期记住?
这一阶段同样包含三个部分:
- Anticipatory Schema Synthesis
- Prediction Error Distillation
- Agnostic Knowledge Consolidation
6.1 Anticipatory Schema Synthesis:先预测发生了什么
对于一个新的 Episode Min,系统首先调用:
Evoke(Min, M)
从已有 Memory Management System M 中取出与当前 Episode 相关的上下文。
在论文自己的 Native Implementation 中,就是:
从 Semantic Database 中寻找 Embedding 相似度超过阈值的 Top-K Memory。
主实验参数为:
| 参数 | 设置 |
|---|---|
Similarity Threshold tau |
0.70 |
Ks |
10 |
得到已有知识 Sin 后,NEMORI 并不会把真实 Episode 内容交给预测模块。
预测模块只看到:
- Episodic Cue;
- 已有相关知识
Sin。
然后让 LLM 回答:
根据这些信息,你认为这个 Episode 中实际发生了什么?
最终生成一个 Anticipatory Schema(预期图式)。
也就是:
Episode Cue + Existing Knowledge -> Predicted Episode
这个设计很关键。
如果模型提前看到真实 Episode,就失去了判断“哪些内容不可预测”的意义。
6.2 Prediction Error Distillation:只抽取预测失败的知识
现在系统拥有两份内容:
- Actual Episode;
- Predicted Episode。
接下来让 LLM 比较二者。
Prompt 要求模型只提取:
真实 Episode 中存在,但预测结果中缺失或者预测错误的有价值知识。
也就是说:
Semantic Knowledge = semantic_difference(Actual, Prediction)
论文的 Prompt 进一步要求抽取的信息应当:
- 是事实性的;
- 具有一定持久性;
- 足够具体;
- 对未来交互有用;
- 没有被预测结果正确覆盖。
而:
- 寒暄;
- 表达方式;
- 临时情绪;
- 已经被预测出来的信息;
则不需要再次进入 Semantic Memory。
因此,prediction error 在这里承担的是选择信号:
哪些信息相对于已有知识具有真正的新颖性?
6.3 为什么不能直接让 LLM 抽取重要信息?
论文专门通过消融实验比较了这两种方式。
一种是 NEMORI:
Existing Memory -> Predict -> Compare -> Distill
另一种 Nemori-s 则直接:
Raw Episode -> Distill Knowledge
也就是去掉 prediction-error mechanism。
如果只使用 Semantic Memory 回答问题,那么:
| 模型 | Direct Distillation | Prediction-error Distillation |
|---|---|---|
| gpt-4o-mini | 52.0 | 65.0 |
| gpt-4.1-mini | 65.5 | 74.9 |
论文据此认为:
先预测,再提取 prediction error,比直接从 Episode 中抽取知识更有效。
在更细粒度的 Temporal Reasoning 实验中,这个差距更加明显。
例如 gpt-4o-mini:
33.3 -> 57.9
gpt-4.1-mini:
46.4 -> 63.2
作者将这一结果与 NEMORI 在 Memory Formation 阶段提前整理时间信息联系起来。
7. Agnostic Knowledge Consolidation:新知识如何进入 Semantic Memory
Prediction Error Distillation 得到若干 Semantic Insights 后,还需要决定这些知识如何写入数据库。
Native Implementation 中,系统首先对每条新 Knowledge 计算 Embedding,再搜索:
Km = 5
个相似的已有 Semantic Memory。
随后 LLM 判断新知识与旧知识属于哪种关系:
| Operation | 含义 |
|---|---|
| new | 与旧知识没有重叠,直接创建新 Memory |
| merge | 与旧知识互补,合并成统一知识 |
| conflict | 新知识使旧知识失效,用新知识替换旧知识 |
例如:
已有 Memory:
Alice prefers Python.
新的 Episode 表明:
Alice has switched from Python to Rust.
如果系统判断后者已经使前者失效,就可以走 conflict 分支,删除过时信息并写入新 Knowledge。
不过需要注意,这只是论文提供的 Native Management。
NEMORI 的核心并不依赖这套管理算法。
8. 为什么说 NEMORI 是 Management-Agnostic?
Semantic Knowledge Distillation 只假设底层 Memory System 提供两个抽象接口:
EvokeConsolidate
其中:
Evoke:告诉 NEMORI 当前已有的相关知识是什么。
Consolidate:把新蒸馏出的 Knowledge 写回 Memory System。
论文在附录中给出了三种实现。
8.1 Flat Summary
整个 Memory 只有一个全局 Summary。
Evoke 直接返回 Summary,新 Knowledge 再被 LLM 合并回 Summary。
这是最简单的概念演示。
8.2 Naive RAG
Semantic Knowledge 全部独立存入 Vector Database。
没有:
- Merge;
- Conflict Detection;
- Knowledge Update。
只使用 Embedding Similarity Search。
论文在消融实验中用它测试 Management 本身对结果的贡献。
8.3 A-MEM / MemoryOS 等第三方系统
对于第三方 Memory System,NEMORI 可以截取其已经构造好的相关 Context,作为:
Sin
用于生成 Anticipatory Schema。
然后把 Prediction Error Distillation 得到的 Semantic Knowledge 当成新的输入交回第三方系统。
后面的:
- 组织;
- Merge;
- 更新;
- 链接;
- 分层;
继续由 A-MEM、MemoryOS 等系统自己负责。
因此论文希望 NEMORI 扮演的是:
Memory Distillation Kernel
而不是一个必须替代已有 Memory Management 系统的完整方案。
9. 最终其实存在两套 Memory
经过前面的过程,NEMORI 最终维护两类不同 Memory。
Episodic Memory
保存完整经历:
Cue + Narrative + Raw Episode + Embedding
它回答:
当时发生了什么?
Semantic Memory
保存从 prediction error 中抽取出来的知识。
它回答:
从这些经历中学到了什么?
因此这篇论文并不是将 Episode 全部压缩成 Semantic Facts 后就把原始经历删除。
Episodic Memory 和 Semantic Memory 是同时存在的。
作者将这种结构与 Complementary Learning Systems 的认知思想联系起来。
10. Response Generation:回答问题时如何使用两类 Memory?
对于当前问题 Q,首先计算 Query Embedding。
然后同时进行两次 Retrieval:
Episodic Retrieval
取 Top-k Episodic Memory。
主实验:
k = 10
Semantic Retrieval
取 Top-m Semantic Memory。
论文设置:
m = 2k
因此主实验:
m = 20
然后将这些 Memory 一起提供给最终回答模型。
此外,为了在效率和原始细节之间取得平衡,论文只给最相关的 Top-2 Episodic Memory 附带 Raw Conversation:
r = 2
剩余 Episode 主要使用 Narrative Representation。
因此最终上下文可以理解成:
Query + Narrative Episodes + Top-2 Raw Episodes + Semantic Knowledge
再让 LLM 生成最终回答。
11. 一个 Temporal Reasoning Case:为什么 Semantic Memory 有帮助?
论文附录给出了一个 LoCoMo Case。
问题是:
“When did Jon receive mentorship?”
原始对话中并没有直接按照绝对日期描述,而包含类似:
yesterday
这样的相对时间表达。
Full Context 模型被原始 Conversation 中的时间表达干扰,给出了错误日期。
而 NEMORI 在 Memory Formation 阶段已经把这个信息转成 Semantic Memory:
Jon was mentored on June 15, 2023.
于是之后回答问题时,不再需要重新在长 Conversation 中进行复杂的时间推理。
论文将这种现象称为:
reasoning during memory formation
也就是说,部分推理工作从 Query Time 前移到了 Memory Formation Time。
Episodic Memory 负责保存事件上下文,而 Semantic Memory 提供已经蒸馏出来的明确事实。
12. 实验设置
论文主要在两个 Long-term Memory Benchmark 上实验。
| Dataset | 规模 | 特点 |
|---|---|---|
| LoCoMo | 10 个长对话,约 24K 平均 Token,1540 个问题 | Temporal、Open Domain、Multi-Hop、Single-Hop |
| LongMemEvalS | 500 个 Conversation,约 105K 平均 Token | 更长、更接近长期交互,用于 Scalability 测试 |
对比方法包括:
- Full Context;
- RAG-4096;
- LangMem;
- Zep;
- Mem0;
- A-MEM;
- MemoryOS。
12.1 Backbone
实验主要使用:
- gpt-4o-mini;
- gpt-4.1-mini。
Mem0 和 Zep 使用其商业 API 获取 Memory Context,然后统一交给上述模型完成答案生成。
其他方法中,gpt-4o-mini / gpt-4.1-mini 同时充当内部 Backbone 和最终 Answer Generation Model。
Embedding 使用:
text-embedding-3-small
12.2 Evaluation Metrics
LoCoMo 的主要指标是:
LLM-judge Score
Judge 使用:
gpt-4o-mini
此外还报告:
- F1;
- BLEU-1。
LongMemEvalS 同样使用 LLM Judge,但 Prompt 根据其任务格式进行了调整。
所有指标统一缩放到 0~100。
13. RQ1:主要实验结果
LoCoMo 上的 Overall 结果如下。
gpt-4.1-mini
| Method | LLM Score | F1 | BLEU-1 |
|---|---|---|---|
| Full Context | 80.6 | 53.3 | 45.0 |
| LangMem | 73.4 | 47.6 | 40.0 |
| Zep | 61.6 | 36.9 | 30.9 |
| Mem0 | 66.3 | 43.5 | 36.5 |
| A-MEM | 61.4 | 39.4 | 33.2 |
| MemoryOS | 60.6 | 39.9 | 32.5 |
| NEMORI | 80.8 | 52.1 | 45.0 |
NEMORI 的 LLM Score 为 80.8。
相比最强的其他 Memory System LangMem 的 73.4,提高约 10.1%。
同时与 Full Context 的 80.6 基本持平并略高。
gpt-4o-mini
| Method | LLM Score | F1 | BLEU-1 |
|---|---|---|---|
| Full Context | 72.3 | 46.2 | 37.8 |
| LangMem | 51.3 | 35.8 | 29.4 |
| Zep | 58.5 | 37.5 | 30.9 |
| Mem0 | 61.3 | 41.5 | 34.2 |
| A-MEM | 52.5 | 32.4 | 27.0 |
| MemoryOS | 54.5 | 39.9 | 31.9 |
| NEMORI | 73.0 | 50.3 | 39.7 |
NEMORI 达到 73.0。
相对于最强 Memory Baseline Mem0 的 61.3,LLM Judge Score 提高 19.1%。
14. Temporal Reasoning 是提升最明显的类别之一
论文特别强调 NEMORI 的 Temporal Reasoning 表现。
gpt-4.1-mini 下:
| Method | Temporal LLM Score |
|---|---|
| A-MEM | 66.7 |
| NEMORI | 77.3 |
提升约 15.9%。
gpt-4o-mini 下:
| Method | Temporal LLM Score |
|---|---|
| Zep | 58.9 |
| NEMORI | 67.6 |
提升约 14.8%。
作者认为 Episode-centric Design 和 Semantic Distillation 将一部分时间推理提前到了 Memory Formation 阶段,从而降低最终回答阶段的推理负担。
15. Open Domain 并不是 NEMORI 最强的类别
论文也明确指出,NEMORI 在 Open Domain 类别上没有达到最强结果。
例如 gpt-4.1-mini:
NEMORI = 56.3
而最佳 Memory Baseline:
MemoryOS = 60.4
作者在附录中解释,LoCoMo 的一些 Open Domain Question 并不能只通过 Conversation History 回答。
例如对话可能只描述:
一种有不同颜色卡牌、按照颜色或数字匹配的游戏。
但从未出现 “UNO” 这个名字。
如果问题最终询问:
这是什么游戏?
Memory 再完整,也只能恢复“彩色卡牌、按颜色或数字匹配”这些 Conversation 中真正存在的信息。
最后能否得到 “UNO”,还取决于 Backbone Model 自己的 World Knowledge。
因此这个子集同时受到:
- Memory Quality;
- Backbone Prior Knowledge;
两方面影响。
16. RQ2:Memory Construction 是否很贵?
NEMORI 看起来需要很多 LLM 操作:
- Episode Partition;
- Narrative Generation;
- Episode Integration;
- Prediction;
- Prediction Error Distillation;
- Semantic Consolidation。
但论文报告,NEMORI 的 Memory Construction 反而比多个 Baseline 更节省成本。
在 gpt-4o-mini 上,相比对比方法:
- LLM Call 数量降低约 59.5%;
- 总 Token Consumption 降低约 38.7%。
作者认为核心原因在于:
NEMORI 使用 Episode,而不是 Message,作为主要 Processing Unit。
附录进一步统计 NEMORI 内部 Token Cost:
| Component | 占 Memory Construction Token Cost |
|---|---|
| Partition | 15.3% |
| Narrative Generation | 38.3% |
| Episode Integration | 16.2% |
| Semantic Distillation | 30.3% |
其中最主要的开销来自:
- Narrative Generation;
- Semantic Knowledge Distillation。
17. Response Generation 的 Token 和 Latency
回答阶段,论文给出了以下结果:
| Method | LLM Score | 输入 Token | Retrieval | 总 Latency |
|---|---|---|---|---|
| Full Context | 72.3 | 23,653 | - | 5,806 ms |
| RAG-4096 | 30.2 | 3,430 | 544 ms | 2,884 ms |
| Mem0 | 61.3 | 1,027 | 784 ms | 3,539 ms |
| A-MEM | 52.5 | 2,614 | 947 ms | 2,867 ms |
| NEMORI | 73.0 | 2,745 | 787 ms | 3,053 ms |
与 Full Context 相比:
- 输入 Token 从 23,653 降低到 2,745;
- 减少约 88%;
- LLM Score 从 72.3 提高到 73.0;
- End-to-end Latency 从 5,806 ms 降至 3,053 ms。
18. RQ3:消融实验
完整 NEMORI 与若干 Variant 的结果如下。
gpt-4o-mini
| Configuration | LLM Score |
|---|---|
| Direct Semantic Distillation(Nemori-s) | 52.0 |
| Prediction Error,仅 Semantic Retrieval | 65.0 |
| w/o Semantic Retrieval | 54.7 |
| w/o Adaptive Partition | 68.0 |
| Full NEMORI | 73.0 |
gpt-4.1-mini
| Configuration | LLM Score |
|---|---|
| Direct Semantic Distillation(Nemori-s) | 65.5 |
| Prediction Error,仅 Semantic Retrieval | 74.9 |
| w/o Semantic Retrieval | 76.9 |
| w/o Adaptive Partition | 75.7 |
| Full NEMORI | 80.8 |
这些实验主要说明三个问题。
18.1 Prediction Error 确实比直接抽取 Knowledge 更有效
在两种设置都只使用 Semantic Memory 的情况下:
Direct Distillation < Prediction-error Distillation
这对应论文最核心的设计。
18.2 Episodic Memory 和 Semantic Memory 是互补的
gpt-4o-mini:
- Full:73.0
- 去掉 Episodic Retrieval:65.0
- 去掉 Semantic Retrieval:54.7
gpt-4.1-mini:
- Full:80.8
- 去掉 Episodic Retrieval:74.9
- 去掉 Semantic Retrieval:76.9
因此论文并没有得到:
Semantic Knowledge 可以完全取代 Episode。
而是:
Episodic Memory 和 Semantic Memory 保存不同层面的信息,两者组合效果最好。
18.3 Adaptive Partition 也有贡献
将动态 Episode Partition 替换成固定的 20-message Chunk:
- gpt-4o-mini:73.0 -> 68.0
- gpt-4.1-mini:80.8 -> 75.7
说明按照潜在 Episode Structure 划分 Conversation,比简单固定长度切块更加有效。
19. Native Memory Management 的贡献反而并不大
论文还对 Native Management 进行了开关实验。
例如只使用 Prediction-error Semantic Memory 时:
gpt-4o-mini:
- Native Management:64.6
- Naive RAG:65.0
gpt-4.1-mini:
- Native Management:74.7
- Naive RAG:74.9
差异非常小。
论文认为原因在于:
LoCoMo 中需要频繁 Knowledge Update 和 Conflict Resolution 的情况并不多。
因此 Native Management 中:
- merge;
- conflict;
- update;
这些能力没有充分发挥作用。
作者仍然保留这套机制,因为真实长期 Agent 中 Knowledge Update 可能更加常见。
这个实验也进一步说明了论文的重点:
性能提升主要来自前面的 Memory Distillation,而不是论文自己设计了一套特别复杂的 Management Algorithm。
20. Observation Window 是否敏感?
论文将 observation window w 从:
5 -> 10 -> 20 -> 30 -> 40
进行测试。
在 gpt-4.1-mini 上 Overall LLM Score 分别大致为:
| w | LLM Score |
|---|---|
| 5 | 80.4 |
| 10 | 80.7 |
| 20 | 80.8 |
| 30 | 81.2 |
| 40 | 80.7 |
结果非常稳定。
因此 observation window 只决定:
系统一次拿多少 Message 进行局部 Episode Partition。
它并不是最终 Episode 的硬边界。
后面的 Associative Memory Integration 可以继续修复由于窗口产生的 Episode Fragmentation。
21. RQ4:Top-K Retrieval 需要取多少?
论文测试:
k = 2, 5, 10, 15, 20, 30
结果显示:
- 从 2 增长到 10 时性能明显提高;
- 10 之后逐渐进入平台期。
最好的平均性能通常出现在:
k = 15 ~ 20
但论文最终默认:
k = 10
因为它已经能够达到 Peak Performance 的大约 97%,同时 Retrieval Cost 更低。
Semantic Memory 数量继续按照:
m = 2k
配置。
22. Narrative 和 Raw Episode 应该用哪个做 Retrieval?
论文还分别测试:
- 用 Narrative Embedding 做 Index;
- 用 Raw Episode Embedding 做 Index;
- 返回 Narrative;
- 返回 Raw Episode。
结果如下:
| Index | Retrieve | LLM Score |
|---|---|---|
| Narrative | Narrative | 76.9 |
| Raw | Narrative | 76.4 |
| Narrative | Raw | 77.0 |
| Raw | Raw | 75.3 |
一个比较稳定的现象是:
使用 Narrative Representation 建立 Embedding Index 的效果优于直接使用 Raw Conversation。
这与论文前面的 Representation Prior 对应:
Raw Interaction 是嘈杂的,而 Narrative Representation 更适合 Recall。
如果最终返回 Raw Episode,可以获得极小的额外 LLM Score 提升,因为 Raw Text 保存了更多事实细节。
不过论文默认仍使用 Narrative Retrieval,因为性能差距极小,而 Narrative 更短。
同时最相关的 Top-2 Episode 仍会附带 Raw Conversation。
23. RQ5:NEMORI 能不能作为其他 Memory System 的前置层?
论文分别测试:
- A-MEM;
- MemoryOS。
比较两种输入:
P:Raw Messages;K:NEMORI Distilled Semantic Knowledge。
结果显示,换成 NEMORI Semantic Knowledge 后:
Memory Storage 减少约 45%~64%。
与此同时整体平均性能基本保持在 ±4% 范围,而去掉 Temporal 后计算的 Core Score 反而提高:
+1.9% ~ +6.1%
例如:
| Backbone | System | Raw Memory Tokens | NEMORI Knowledge Tokens |
|---|---|---|---|
| gpt-4o-mini | A-MEM | 397K | 142K |
| gpt-4o-mini | MemoryOS | 405K | 190K |
| gpt-4.1-mini | A-MEM | 498K | 243K |
| gpt-4.1-mini | MemoryOS | 354K | 194K |
因此论文认为,NEMORI Distillation 可以作为独立模块接入已有 Memory Management System。
24. RQ6:上下文越长,Distillation 的作用是否越明显?
论文最后在更长的 LongMemEvalS 上进行测试。
Full Context 需要大约:
101K tokens
NEMORI 实际 Retrieval Context 则只有:
3.7K ~ 4.8K tokens
结果如下。
gpt-4o-mini
| Question Type | Full Context | NEMORI |
|---|---|---|
| Single-session Preference | 6.7 | 46.7 |
| Single-session Assistant | 89.3 | 83.9 |
| Temporal Reasoning | 42.1 | 61.7 |
| Multi-session | 38.3 | 51.1 |
| Knowledge Update | 78.2 | 61.5 |
| Single-session User | 78.6 | 88.6 |
| Average | 55.0 | 64.2 |
平均提升约:
+16.7%
gpt-4.1-mini
| Question Type | Full Context | NEMORI |
|---|---|---|
| Single-session Preference | 16.7 | 86.7 |
| Single-session Assistant | 98.2 | 92.9 |
| Temporal Reasoning | 60.2 | 72.2 |
| Multi-session | 51.1 | 55.6 |
| Knowledge Update | 76.9 | 79.5 |
| Single-session User | 85.7 | 90.0 |
| Average | 65.6 | 74.6 |
平均提升约:
+13.7%
与此同时,NEMORI 使用的 Context Token 数减少:
95%~96%
论文据此指出,相比 LoCoMo 上 NEMORI 与 Full Context 非常接近的结果,到了更长 Context 时,两者之间的差距明显扩大。
作者认为随着 Interaction History 增长:
- Full Context 更容易出现 Attention Dilution;
- NEMORI 只取经过 Distillation 的相关内容;
- 因而 Distillation 的价值会变得更加明显。
不过从各类别结果也可以看到,NEMORI 并不是每种问题都高于 Full Context,例如 gpt-4o-mini 的 Knowledge Update 和 Single-session Assistant 类别中 Full Context 仍然更高。
25. 从整个 Pipeline 再看一次 NEMORI
把前面所有模块串起来,NEMORI 的 Memory Construction 可以概括为:
第一步:缓存 Interaction
不断收集:
Message -> Buffer
达到 observation window 后开始处理。
第二步:动态划分 Episode
LLM 根据 Topic、Intent 和 Event Structure 将 Message 分成:
Raw Episodes
第三步:生成 Narrative
每个 Raw Episode 转换成:
Cue + Narrative + Raw Conversation + Embedding
第四步:关联已有 Episode
从 Episodic Database 找相似 Episode。
LLM 判断:
Merge or New
修复可能被 observation window 切断的 Episode。
第五步:调用已有 Semantic Memory
根据当前 Episode 从 Memory System 中:
Evoke Existing Knowledge
第六步:预测 Episode
只使用:
Cue + Existing Knowledge
让 LLM 生成:
Anticipatory Schema
第七步:计算语义 Prediction Error
比较:
Actual Episode
和:
Anticipatory Schema
抽取预测中:
- 缺失;
- 错误;
- 无法解释;
但具有未来价值的信息。
第八步:写入 Semantic Memory
根据管理系统选择:
- new;
- merge;
- conflict;
或者直接交给 A-MEM、MemoryOS 等第三方系统。
最终形成:
Episodic Memory + Semantic Memory
两套互补记忆。
26. 论文与传统“Memory 管理”工作的区别
论文在 Related Work 中强调了一个划分:
| 判断 Memory Utility 的时间 | 示例 |
|---|---|
| Retrieval-time | 等 Query 出现后再做 Similarity Retrieval |
| Management-time | 根据访问频率、时间衰减、Link 等后处理 |
| Distillation-time | 在经历第一次进入 Memory 时就决定保留什么 |
NEMORI 属于第三类。
它与很多 Memory Management 工作关注的问题不同。
NEMORI 主要回答:
“一段 Experience 在第一次进入 Memory 时,应该留下什么?”
至于:
- 这些 Memory 如何形成复杂层级;
- 如何进行 Graph Traversal;
- 如何建立 Paging;
- 如何进行长期 Forgetting;
- 如何设计复杂 Retrieval;
都不是这篇论文的核心。
因此作者特意将 Distillation 与 Management 分开。
NEMORI 的目标是:
先产生更紧凑、更有信息量的 Memory Entry,再让后面的 Management System 决定如何管理这些 Entry。
27. 论文给出的两个局限性
论文明确列出了两项 Limitation。
27.1 Management 和 Retrieval 仍然比较简单
NEMORI 的重点是 Distillation。
因此论文自己的:
- Memory Management;
- Retrieval;
都采用相对简单的策略。
当前 Benchmark 上这些设计已经足够,但如果任务需要:
- 更复杂的 Memory Reasoning;
- 多步 Memory Traversal;
- 更复杂的知识关系;
简单的 Management 和 Retrieval 可能成为瓶颈。
因此论文报告的结果应该理解为:
当前 Distillation Framework 搭配简单 Management / Retrieval 的性能。
而不是整个 Memory System 能达到的理论上限。
27.2 Management-Agnostic Interface 目前仍然是概念接口
论文提出:
EvokeConsolidate
作为通用接口。
但 Agent Memory 领域目前没有统一的标准协议。
因此要把 NEMORI 真正接入不同第三方 Memory System,仍然需要:
case-by-case implementation
也就是针对具体系统单独实现 Adapter,而不是拿两个标准 API 就可以无缝接入所有系统。
28. 总结
这篇论文将 Agent Memory 中一个经常被混在一起的问题单独抽了出来:
Memory Distillation 和 Memory Management 不是同一个问题。
Management 关注:
已经存下来的东西怎么管理?
而 Distillation 首先应该回答:
一段 Experience 第一次进入 Memory 时,到底什么值得存?
NEMORI 给出的答案不是 importance score,也不是预定义 Fact Template,而是:
Predictability Implies Redundancy。
整个框架因此形成了如下逻辑:
Interaction
→ Episode Partition
→ Narrative Episode
→ Retrieve Existing Knowledge
→ Predict Episode
→ Compare Prediction with Reality
→ Distill Prediction Error
→ Semantic Memory
与此同时,原始 Experience 并没有完全被 Semantic Memory 替代,而是形成:
Episodic Memory + Semantic Memory
两条互补路径。
实验中,Prediction-error Distillation 明显优于直接 Knowledge Extraction;Episodic 与 Semantic Memory 的消融也表明两者同时保留效果最好。
在 LoCoMo 上,NEMORI 的整体性能超过多个现有 Memory System,并接近或略高于 Full Context;在更长的 LongMemEvalS 上,NEMORI 只使用 Full Context 约 4%~5% 的 Context Token,同时取得更高的平均准确率。
此外,由于 NEMORI 将 Distillation 与 Management 解耦,其蒸馏出的 Semantic Knowledge 还可以继续交给 A-MEM、MemoryOS 等外部系统管理。第三方集成实验中,Memory Storage 减少约 45%~64%,同时核心任务性能基本保持甚至有所提高。
因此,论文最终提出的是一种面向 Agent Memory 写入阶段的思路:
与其预先告诉 Agent “什么类型的信息重要”,不如先观察已有知识能够解释多少当前 Experience,再把真正无法预测的新信息留下来。
参考
-
Wenquan Ma, Jiayan Nan, Wenlong Wu, Yize Chen. What Deserves Memory: Adaptive Memory Distillation for LLM Agents. arXiv:2508.03341.
https://arxiv.org/abs/2508.03341 -
Wenquan Ma, Jiayan Nan, WenLong Wu. What Deserves Memory: Adaptive Memory Distillation for LLM Agents. Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (ACL 2026), Volume 1: Long Papers, pp. 34789–34812.
https://aclanthology.org/2026.acl-long.1607/ -
NEMORI Official Code.
https://github.com/nemori-ai/nemori

浙公网安备 33010602011771号