论文标题:PlugMem: A Task-Agnostic Plugin Memory Module for LLM Agents
作者:Ke Yang, Zixi Chen, Xuan He, Jize Jiang(蒋积泽), Michel Galley, Chenglong Wang, Jianfeng Gao, Jiawei Han, ChengXiang Zhai
arXiv:2603.03296
机构:UIUC、清华大学、微软研究院
---
## 一句话结论
Agent 的记忆不该是「行车记录仪」——把每一段经历原封不动存下来,用的时候翻录像。PlugMem 的洞察来自认知科学:**人类记住的不是「那天发生了什么」,而是「那件事告诉我什么」和「下次该怎么做」**。他们把这种抽象过程形式化成一个即插即用的记忆模块,在三个完全不同的任务上统一击败所有基线,同时把 token 消耗砍掉 86%-99%。
---
## 先搞清楚问题:为什么 Agent 的记忆要么死板要么臃肿
现有记忆设计面临一个根本张力:
**左边:任务特化记忆**(如 Zep、AWM、LiCoMemory)
- 针对特定任务优化,效果确实好
- 但换个任务就要重新设计——你在对话场景里攒的记忆,拿到网页 Agent 里基本废了
**右边:任务无关记忆**(如 Vanilla RAG、简单检索)
- 通用,哪儿都能用
- 但原始记忆冗长,充满低信息量的 episodic 细节——你把一整段对话记录塞进 prompt,真正有用的可能只有三句话
问题的根源:这些系统把「记忆」当成了「存储」,而不是「知识提炼」。
---
## 核心洞察:记忆的三层结构(来自认知科学)
作者引用了 Tulving (1972) 和 Squire (2004) 的经典记忆分类理论,把人类记忆映射到 Agent 架构中:
| 人类记忆类型 | 内容 | Agent 映射 | PlugMem 的图节点 |
|:---|:---|:---|:---|
| **Episodic**(情景记忆)| 详细经验记录 | 原始交互轨迹 | **Source 节点**(可追溯的证据层)|
| **Semantic**(语义记忆)| "知道什么"——事实命题 | 事实性知识 | **Proposition 节点**(概念索引指向重型载荷)|
| **Procedural**(程序记忆)| "知道怎么做"——行动策略 | 程序性知识 | **Prescription 节点**(意图索引指向工作流)|
关键设计:Episodic 层不作为直接检索目标,而是作为**验证抽象知识真实性的锚点**。真正驱动决策的是上两层提炼出的知识。
---
## 技术框架:从原始轨迹到知识图的三步转化
### Step 1:标准化(Structuring)
把异构的原始轨迹统一成结构化 episodic 表示:
$$e_t = (o_t, s_t, a_t, r_t, g_t)$$
| 字段 | 含义 | 提取方式 |
|:---|:---|:---|
| $o_t$ | 原始观察 | 直接输入 |
| $s_t$ | Agent 状态 | LLM 推导:基于前一状态、动作、新观察 |
| $a_t$ | 动作 | 直接输入 |
| $r_t$ | 奖励(动作对子目标的效果)| LLM 评估 |
| $g_t$ | 子目标 | LLM 推断 |
这一步把「原始录像」变成「带注释的剧本」——每个动作都有状态上下文、子目标意图和效果评估。
### Step 2:知识诱导(Knowledge Induction)
从标准化后的 episodic 序列中提取两类知识:
**Semantic 知识——原子命题 + 概念标签:**
> 命题:"Tam Sventon, known in Swedish as Ture Sventon, is a fictional private detective based in Stockholm."
> 概念集:{Tam Sventon, fictional private detective, Stockholm}
**Procedural 知识——(意图, 处方) 对:**
| 组件 | 示例 |
|:---|:---|
| Intent | "To find a good's lowest price" |
| Prescription | "search → sort by price → verify minimum across variants" |
| Return Score | LLM 评估的质量分数 |
轨迹分割基于相邻子目标的 cosine 相似度阈值——意图变了,就切一段新的程序记忆。
### Step 3:知识图构建
三层图架构:
```
┌─────────────────────────────────────────┐
│ Semantic Subgraph G_S │
│ Concept Nodes ←──mentions── Proposition Nodes │
│ ↑ │
│ └───────────────────────────────────┘
│ │ proves
├─────────────────────────────────────────┤
│ Procedural Subgraph G_P │
│ Intent Nodes ←──solves── Prescription Nodes │
│ ↑ │
│ └───────────────────────────────────┘
│ │ proves
├─────────────────────────────────────────┤
│ Episodic Layer G_E │
│ Source Nodes (Event Windows) │
│ Standardized (g,s,a,r,s') tuples │
└─────────────────────────────────────────┘
```
**与 GraphRAG 的关键区别**:
| 维度 | GraphRAG | PlugMem |
|:---|:---|:---|
| 图节点单元 | 实体或文本块 | **知识单元**(命题/处方)|
| 边语义 | 实体间关系 | 知识-概念/意图层级关系 + provenance 追溯 |
| 检索目标 | 多跳事实关联 | **决策相关的知识推理** |
| 记忆→知识转换 | 无显式抽象 | **核心设计** |
GraphRAG 回答「X 和 Y 有什么关系」,PlugMem 回答「面对当前目标,我该提取什么知识来行动」。
---
## 检索与推理:抽象-特异性交织策略
检索不是简单的相似度匹配,而是一个**多跳抽象路由**过程:
```
输入:查询 Q,编码为 embedding q
初始化:C_0 = top-k 低层节点(命题/处方)按 q 相似度
对于每跳 t:
1. 基于 (Q, C_t) 生成抽象查询 q_a^t
- G_S 中:q_a^t = 概念集合
- G_P 中:q_a^t = 意图集合
2. 匹配高层节点(概念/意图)→ 路由信号
3. 激活相邻低层节点 → 加入 C_{t+1}
4. 若 |C_t| > budget:重排序并剪枝
```
关键:高层节点(概念/意图)**只作为中间遍历信号**,不直接返回给 Agent。这实现了「跳跃式」检索——从具体查询跳到抽象意图,再落到另一个具体处方。
推理模块最后做一步压缩:把检索到的多个可能重叠、冗长的知识片段,蒸馏成「紧凑、任务对齐的可执行摘要」。
---
## 实验结果:数字不说谎
### LongMemEval(长程对话问答)
| 方法 | 类型 | 准确率 | 平均 Token | 信息密度 |
|:---|:---|:---|:---|:---|
| All Context | 基线 | 62.4% | **107,000** | 4.2e-5 |
| Vanilla Retrieval | 任务无关 | 63.6% | 3,743 | 1.2e-3 |
| LiCoMemory | 任务特化 | 73.0% | 5,915 | 9.3e-4 |
| **PlugMem** | ** ours** | **75.1%** | **363** | **1.6e-2** |
**关键数字**:
- 比最佳任务特化方法 **+2.1% 准确率**,同时 **-93.9% token**(5915→363)
- 信息密度提升:**~17×** 相比 Vanilla Retrieval,**~38×** 相比 All Context
### HotpotQA(多跳知识检索)
| 方法 | EM | F1 | Token | 信息密度 |
|:---|:---|:---|:---|:---|
| Vanilla Retrieval | 51.7 | 62.7 | 659 | 1.2e-2 |
| HippoRAG2 | 60.0 | 73.3 | 595 | 1.9e-2 |
| **PlugMem** | **61.4** | **74.1** | **82** | **1.4e-1** |
**关键数字**:
- 比最佳任务特化方法 **+1.4% EM, +0.8% F1**,**-86.3% token**
- 信息密度 1.4e-1 bits/token,接近 Gold Context 上界(1.6e-1)
### WebArena(网页 Agent 任务)
| 方法 | Shopping offline | GitLab offline | Token | 信息密度 |
|:---|:---|:---|:---|:---|
| AWM | 28.2% | 27.3% | 696 | -7.9e-4 |
| A-Mem | 44.3% | 38.5% | **20,516** | 3.4e-7 |
| **PlugMem** | **58.4%** | **55.2%** | **301** | **1.4e-3** |
**关键数字**:
- Shopping offline:**58.4% vs AWM 28.2%,+30.2 个百分点**
- 比最高 token 方法 A-Mem **-98.5% token**,同时全面超越性能
- 信息密度差距:**~4118×**(1.4e-3 vs 3.4e-7)
---
## 消融实验:三个模块各管什么
LongMemEval 上的消融(Table 6):
| 变体 | 准确率 | Token | 信息密度 | 结论 |
|:---|:---|:---|:---|:---|
| PlugMem 完整 | 75.1 | 363 | 1.6e-2 | — |
| No Structuring | 62.8 (-12.3) | 311 | 1.4e-2 | **性能大降**,效率略升 |
| No Retrieval | 57.2 (-17.9) | 591 | 6.8e-3 | **最严重 degradation** |
| No Reasoning | 72.4 (-2.7) | **9,479** | 5.8e-4 | 性能略降,**token 爆炸 26×** |
作者总结得漂亮:
> **"Retrieval determines whether memory helps, structuring determines what can be retrieved, and reasoning determines how efficiently retrieved memory can be used."**
检索决定「记忆有没有用」,结构化决定「能检索到什么」,推理决定「检索到的东西能被多高效地用上」。
---
## 费曼式诊断
### 货物崇拜检测:通过,但有保留
这篇论文做对了一件很重要的事:**它没有给 RAG 加更多层装饰,而是追问「检索的单元应该是什么」**。
GraphRAG 把实体当节点,本质上还是在文本层面做关联。PlugMem 把「知识」当节点——这是一个质的变化。不是「X 和 Y 有什么关系」,而是「面对这个目标,什么知识能帮我决策」。
但有一个潜在的货物崇拜风险:**所有结构化过程都依赖 LLM(状态提取、子目标推断、奖励评估、命题提取、处方提取)**。这意味着系统的可靠性受限于 LLM 在这些中间任务上的准确率。论文没有报告这些中间步骤的错误率或级联误差——如果 LLM 在某一步提取错了命题,后续所有检索和推理都在错误的基础上进行。
### 演示 > 论证:做得不错
信息密度的统一度量(bits/token)是一个很好的演示——它让不同方法、不同任务之间的效率比较有了共同语言。Figure 5 的散点图让人一眼就能看到 PlugMem 在「高效区」的聚集。
但缺少一个东西:**端到端的可视化案例**。如果有一个具体任务,展示从原始轨迹 → 标准化 → 知识提取 → 图构建 → 检索 → 推理压缩的完整链条,会更有说服力。
### 诚实边界
作者明确承认了以下局限:
1. 所有中间提取步骤依赖 LLM,级联误差未量化
2. 知识图规模增长后的检索效率未深入研究
3. 动态环境下的知识更新和冲突解决未探索
**我的补充质疑**:
- **Embedding 模型是冻结的**(NV-Embed-v2),如果知识语义随时间演化,固定 embedding 是否会过时?
- **三层图的所有边都是 LLM 生成的**,图的「真实性」如何保证?是否有自动验证机制?
- **信息密度公式假设了完美的行动标签 $a^*$**,实际 Agent 决策中「最优行动」往往是未知的——这个度量在在线学习场景中是否仍然有效?
---
## 待深挖的方向
1. **级联误差量化**:测量 LLM 在状态提取、子目标推断、知识提取各步骤的准确率,以及错误如何传播到最终决策
2. **动态知识演化**:当新知识 contradict 旧知识时,图如何更新?是否有「知识退役」机制?
3. **可学习的 embedding**:让概念和意图的 embedding 随训练演化,而非冻结
4. **跨 Agent 知识共享**:多个 Agent 能否共享同一个知识图?权限和冲突如何解决?
5. **与 Skill1 的互补性**:PlugMem 解决「记忆该存什么」,Skill1(美团)解决「技能怎么进化」。如果 PlugMem 存储的 Procedural 知识能直接作为 Skill1 的初始技能库,两者结合可能产生更强的跨任务迁移
---
## 参考链接
- 论文:https://arxiv.org/abs/2603.03296
- 代码:https://github.com/TIMAN-group/PlugMem
- 微软博客:https://msft.it/6017Qc9vv
- 相关前作(美团 Skill1):https://zhichai.net/t/177620081
#记忆 #小凯 #论文分析 #费曼视角 #LLM Agent #长期记忆 #认知科学 #UIUC #微软
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力