← 返回资料站  /  Continuous Learning
论文 记忆机制

A-MEM: Agentic Memory for LLM Agents

A-MEM:用卡片盒笔记法让 agent 记忆自组织、自演化
一句话Rutgers 提出的 LLM agent 记忆系统(NeurIPS 2025,引用 900+):借鉴 Zettelkasten 卡片盒笔记法,新记忆写入时由 LLM 生成结构化属性、自动与旧记忆建链,并触发旧记忆的 context/tags 更新(memory evolution);在 LoCoMo 多跳类问题上 GPT-4o-mini 的 F1 达 27.02(消融:两模块都去掉只有 9.65),但开源实现与论文有出入、检索代码有已知 bug。

这是什么

LLM agent 要利用历史经验就需要记忆系统,但当时的主流方案(MemGPT、MemoryBank 等)基本是"存进去、按相似度捞出来",记忆条目之间没有组织结构,操作方式也是写死的,不随任务变化。A-MEM 的出发点是:记忆库本身应该像人的笔记系统一样,随着新经验的到来不断重组。

具体借鉴的是 Zettelkasten(卡片盒笔记法):每条记忆是一张原子化卡片,卡片之间靠链接组成网络,相关卡片聚成"box"。A-MEM 把建卡、建链、更新旧卡这三步全部交给 LLM 来做决策,所以叫 agentic memory——记忆的组织方式不是预定义的 schema,而是模型根据内容自己长出来的。这是较早把"记忆库随经验动态重构"做成完整系统并在长对话基准上验证的工作,后来 Mem0、Zep 等一批 memory 系统的论文都拿它当 baseline。

论文 2025 年 2 月挂出,中了 NeurIPS 2025,S2 引用已 926 次。代码分两摊:agiresearch/A-mem(1.1k stars,pip 可装的记忆系统库)和 WujiangXu/AgenticMemory(949 stars,复现论文实验用);作者后来失去了 agiresearch 仓库的权限,持续维护的版本在 WujiangXu/A-mem-sys。

A-MEM 总体架构:左边 note construction(交互内容经 LLM 生成 keywords/tags/context 等属性成为一张卡片);中间 link generation(新卡片按 embedding 捞 top-k 旧记忆,LLM 判断建链,相关记忆聚成 box,一条记忆可属多个 box)和 memory evolution(LLM 决定是否改写被触及旧记忆的属性);右边检索时 query 向量匹配,命中记忆连同同 box 的关联记忆一起返回。
A-MEM 总体架构:左边 note construction(交互内容经 LLM 生成 keywords/tags/context 等属性成为一张卡片);中间 link generation(新卡片按 embedding 捞 top-k 旧记忆,LLM 判断建链,相关记忆聚成 box,一条记忆可属多个 box)和 memory evolution(LLM 决定是否改写被触及旧记忆的属性);右边检索时 query 向量匹配,命中记忆连同同 box 的关联记忆一起返回。

机制与做法

Note construction:每条记忆是一张 LLM 加工过的卡片

agent 与环境的每次交互被构造成一条 note:m_i = {原文 c_i, 时间戳 t_i, 关键词 K_i, 标签 G_i, 上下文描述 X_i, 嵌入 e_i, 链接集 L_i}。其中 keywords/tags/context 三项由 LLM 按模板从原文生成,不是人工填的;然后把 content+keywords+tags+context 拼起来过一遍 sentence encoder(all-MiniLM-L6-v2)得到稠密向量,存进 ChromaDB。这样每张卡片既有语义丰富的文本侧写,又有可以廉价做相似度检索的向量。

论文用来证明记忆结构化效果的 t-SNE 图:蓝色是 A-MEM 的记忆嵌入,红色是去掉建链和演化的 base 版本。论文声称蓝色"聚类更清晰",从图上看蓝色确实略更聚集,但差异不算悬殊——这类可视化证据看看就好,硬证据还是消融表。
论文用来证明记忆结构化效果的 t-SNE 图:蓝色是 A-MEM 的记忆嵌入,红色是去掉建链和演化的 base 版本。论文声称蓝色"聚类更清晰",从图上看蓝色确实略更聚集,但差异不算悬殊——这类可视化证据看看就好,硬证据还是消融表。

Link generation + memory evolution:写入即重组

新 note 入库时,先用向量相似度捞 top-k(默认 k=10)条最近的旧记忆做候选,再把新 note 和候选一起喂给 LLM,由它判断哪些该建链——链接不是纯 embedding 阈值,而是让 LLM 找因果、概念层面的关联。相关记忆通过相似的 contextual description 聚成 box,一条记忆可以同时属于多个 box。

关键的一步是 memory evolution:建完链后,对 top-k 里的每条旧记忆 m_j,LLM 决定要不要根据新记忆改写它的 context、keywords、tags,改完直接替换原记忆。也就是说旧记忆不是只读的,新经验会持续重写记忆库对旧经验的"理解"。消融显示这两个模块都有用:GPT-4o-mini 上多跳 F1 从 9.65(都去掉)→ 21.35(只有建链)→ 27.02(全量)。

检索与开销

查询时对 query 编码、余弦相似度取 top-k,命中的记忆连同同 box 的关联记忆一起进 prompt。论文报告每次 memory 操作约 1200 tokens,比 LoCoMo/MemGPT 全上下文方案(约 16.9k tokens)省 85-93%,单次操作成本低于 $0.0003;GPT-4o-mini 平均 5.4s,本地 Llama 3.2 1B 约 1.1s。扩到 100 万条记忆时检索延迟从 0.31μs 涨到 3.70μs(向量检索本身,不含 LLM 调用)。

关键结果

实证核查

有水分思路和消融是真的,NeurIPS 接收、被广泛引用当 baseline;但 pip 装的官方库长期与论文描述不一致(缺 LLM 建卡步骤、检索有低级 bug),仓库维护分裂,且整个 LoCoMo 赛道的评测口径本身争议很大,论文里的相对优势要打折看。
论文核心机制:每条 note 的 keywords/tags/context 由 LLM 生成(公式 2),这是建链和演化的基础。
官方 pip 库 agiresearch/A-mem 发布后很长时间里根本没有这一步 LLM 调用,用户发现属性无从生成(issue #10,2 人确认找不到)。作者回复承认,让大家去看另一个仓库 WujiangXu/AgenticMemory,并在后续评论中说自己已无 agiresearch 仓库权限、只维护 WujiangXu/A-mem-sys——也就是挂着 1.1k stars 的"官方库"实际处于半失控状态(另见 issue #16 'Is this project dead already?')。
README 声称 'Intelligent indexing and linking of memories via ChromaDB'、高质量语义检索。
截至 2025-12 仓库里挂着多个未修的检索正确性 bug:ChromaDB collection 建库没指定 cosine、默认用 L2 距离,与 all-MiniLM-L6-v2 的训练目标不匹配(issue #24);search 返回的 score 实际是 L2 距离、语义反了(issue #23);find_related_memories() 用结果的 rank 当 memory ID 用(issue #32)。均为 open 状态,无人回应。想用这套代码的同学建议直接看 A-mem-sys 或自己修。
"在六个基座模型上超过现有 SOTA baselines"(LoCoMo 基准)。
LoCoMo 赛道的横向对比口径公认混乱:Letta(MemGPT 原团队)2025-08 博客指出 Mem0 等发布的 LoCoMo 对比数字有争议(MemGPT 根本没有合理的 LoCoMo 数据回填方式,mem0 issue #3004 无回应),且一个只给 GPT-4o-mini 加文件系统 grep/搜索工具的朴素 agent 就能拿 74%,超过各家专门记忆系统——A-MEM 的相对优势在这种背景下参考价值有限。另外它自己的绝对分数也不高(GPT-4o-mini 多跳 F1 27.02;DialSim F1 只有 3.45,'35% 提升'是 2.55→3.45),issue #34 还质疑其 Adversarial 类的计分方向。
论文称 A-MEM 检索高效可扩展、每次操作 <$0.0003。
扩展性实验只测了向量检索那一段(0.31μs→3.70μs),没有计入每次写入的多次 LLM 调用——而这才是真实瓶颈:issue #21 用户抱怨"为什么速度这么慢",论文自己报的单次操作也要 5.4s(GPT-4o-mini)。成本数字按 gpt-4o-mini 价格算成立,但 memory evolution 会随记忆增长触发更多改写调用,长期成本论文未测。

与我们方向的关系

对 continual-learning 方向,A-MEM 的价值在于给出了"记忆库自身作为学习对象"的一个具体可跑的形态:知识不是只增不改的 append-only log,新经验会重写旧记忆的表征(memory evolution)。这与持续学习里 consolidation/知识重构的思路直接对应,而且消融给出了量化证据(演化模块在多跳上带来 21.35→27.02 的增益)。做 agent 记忆或经验复用的同学,note 的结构化属性设计(content/keywords/tags/context 分离、拼接后统一编码)和"embedding 粗筛 + LLM 精判"的建链两段式都可以直接借用。

教训同样值得记:一是评测——LoCoMo 上的横向数字不要直接引用,各家实现口径不一且已被 Letta 公开质疑,自己做 memory 相关实验时要么统一重跑 baseline,要么换更受控的基准;二是工程——LLM 驱动的记忆演化每次写入都要烧多次 LLM 调用,规模化后成本和延迟都不便宜,论文里的 μs 级扩展性只覆盖了向量检索这一小段。

阅读笔记

复现认准 WujiangXu/AgenticMemory(论文实验)和 WujiangXu/A-mem-sys(持续维护的系统库);agiresearch/A-mem 作者已无权限,bug 不会修。arXiv 版本迭代到 v8,DialSim 实验是后来加的。

材料清单

TeX 源码
已存档:Raw/a-mem/source/
代码仓库github.com/agiresearch/A-mem
1160★ · 最近推送 2025-12-12
复现代码(论文实验)github.com/WujiangXu/AgenticMemory
作者指定的结果复现仓库,949 stars
持续维护版github.com/WujiangXu/A-mem-sys
作者失去 agiresearch/A-mem 权限后的维护分支
OpenReviewopenreview.net/forum?id=FiM0M8gcct
NeurIPS 2025 评审记录
第三方评测视角www.letta.com/blog/benchmarking-ai-agent-memory/
Letta 对 LoCoMo 系记忆评测口径的质疑;文件系统 agent 拿 74%

同类条目