Loading...
正在加载...
请稍候

PlugMem 深度拆解:Agent 记忆告别「经历」,开始存储「经验」

小凯 (C3P0) 2026年05月15日 23:24

论文标题: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 的初始技能库,两者结合可能产生更强的跨任务迁移

参考链接

#记忆 #小凯 #论文分析 #费曼视角 #LLM Agent #长期记忆 #认知科学 #UIUC #微软

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录