A-MEM:把卡片盒笔记法搬进 AI 记忆
不预设固定的记忆结构,让每条记忆自己生成标签、自己寻找邻居、自己更新旧笔记。拆解 A-MEM 的 Zettelkasten 式自组织机制。
不预设固定的记忆结构,让每条记忆自己生成标签、自己寻找邻居、自己更新旧笔记。拆解 A-MEM 的 Zettelkasten 式自组织机制。
论文:A-MEM — Agentic Memory for LLM Agents(arXiv 2502.12110,2025-02-17)
机构:Rutgers University 与 Ant Group / AIOS Foundation
主流记忆系统都在做同一件事:先把结构定好,再往里塞内容。要么预先设计好图 schema,要么预先切好固定长度的 chunk。
A-MEM 提出了一个反过来的思路:结构不该由工程师先验规定,而应该由记忆自己长出来。它的灵感来自社会学界的笔记方法——Zettelkasten(卡片盒笔记法)。
要点速览:三步机制——新记忆自动生成结构化笔记、按语义相似度建立链接、回头更新旧记忆的语境表示。适合长期陪伴场景;代价是写入重、链接网络会膨胀、存在语义漂移风险。两大启发:写入时带语境,允许旧记忆被反向更新。
德国社会学家卢曼用这套方法写出了数十本著作,其核心只有三条:
卢曼的卡片盒里,价值不在于某张卡片,而在于卡片之间的链接网络。A-MEM 直接把这套原则搬到了记忆系统上。
当一条新记忆进入系统时,A-MEM 执行三个动作:
第 1 步:生成结构化笔记
不止存原文,而是为每条记忆生成一组结构化属性——上下文描述(这条记忆是在什么情境下产生的)、关键词、标签。这一步让记忆自带检索入口,而不是只能靠原文做向量匹配。
第 2 步:动态链接
拿新记忆去和已有记忆算相似度,找出相关条目并建立链接。这一步是「自链接」原则的工程化:链接关系不是预先定义的边类型,而是从语义相似度中涌现出来的。
第 3 步:记忆演化
这是 A-MEM 与常规方案最不同的地方:当新记忆与原有关联的历史记忆建立链接后,系统会回头更新那些历史记忆的上下文表示。
换句话说,旧记忆不是只读的。新信息会让旧记忆获得新的语境——「用户提到喜欢 Python」这条记忆,在之后出现「用户抱怨 Python 性能」时会更新自己的上下文描述,从而在未来的检索中被更准确地召回。
传统记忆系统的隐含假设是:记忆写入后就固化了,检索时再动态组合。
A-MEM 假设的是:记忆的价值随语境变化,所以记忆本身应该可演化。
这个假设在长期陪伴类场景中确实更符合直觉:同一条事实在不同时间点的意义是不同的,把所有理解都推迟到检索时再做,等于让模型每次都从零开始理解。让记忆在写入时就带上当时能获得的最佳语境,可以显著降低检索时的推理负担。
论文在六个基础模型上做了对比实验,A-MEM 优于当时的 SOTA 基线,说明「自组织 + 演化」在长对话记忆任务上确实有效。
但要客观看待它的适用边界:
即使你不打算用 A-MEM,它的两个设计思路也值得借鉴:
这两点与「事实失效」(temporal invalidation)是同一类问题的两种解法:A-MEM 用更新上下文的方式处理,双时间模型用标记失效的方式处理。
本文基于论文原文整理。论文中的实验规模与基线版本均以其发表时点为准,与当前各引擎的最新版本不具备直接可比性。