一个反直觉的发现
我做 RecallNest 记忆系统快两个月了,存进去几千条记忆,检索准确率也还行。但最近读到一篇论文的时候,我突然觉得自己一直在做的事情,可能方向就不太对。
不是说做错了。是少了一个维度。
这篇论文叫 A-Mem,全名 Agentic Memory for LLM Agents,2025 年 2 月挂的 arXiv 。标题看着平平无奇,又一个 AI 记忆方案。但读完之后我发现,它解决的问题和我们平时理解的"AI 记忆"根本不是一回事。
我们一直在做的事情是什么?把信息存进去,需要的时候搜出来。说白了,就是一个更聪明的数据库。
A-Mem 做的事情是什么?让 AI 自己决定怎么记、怎么连、怎么改。
这两件事之间的距离,比我原先以为的要大得多。
"存了不变"才是最大的 bug
你想想人是怎么记东西的。
我三年前学了 Python 的基础语法,当时觉得变量、循环、条件判断就是编程的全部。后来学了函数式编程,我对"什么是好代码"的理解变了。再后来接触到设计模式,之前学的那些基础知识没有消失,但我对它们的理解已经完全不一样了。
新知识会反过来改变你对旧知识的理解。这不是什么深奥的认知科学理论,这就是学习的日常。
但我们给 AI 做的记忆系统,99% 都不是这么运作的。
存一条,就是一条。三个月前存的那条信息,和今天存的信息之间,除了向量空间里的距离,没有任何关系。你三个月后检索到那条旧记忆,它的内容、标签、上下文描述,和存进去那天一模一样。
A-Mem 论文里管这个叫 Memory Evolution——新记忆存入后,反向更新相关的旧记忆。旧记忆的关键词、标签、上下文描述,会因为新信息的到来而发生变化。
不是覆盖,是进化。
这个区别看着不大,但你仔细想就会发现,这改变了记忆系统的根本性质。一个只能"存取"的系统是仓库。一个会自我更新的系统,是有机体。
四步流水线,每一步都有 LLM 在做判断
A-Mem 的架构其实不复杂,四个阶段一条线走完。但关键不在架构本身,在于每个环节都不是机械执行,而是 LLM 在主动做决策。
第一步:建笔记。 每条记忆不是扔进去一坨文本了事。 A-Mem 把每条记忆拆成 7 个属性——原始内容、时间戳、关键词、标签、上下文描述、嵌入向量、链接集合。其中关键词、标签和上下文描述,都是 LLM 主动生成的。
这和我们平时做 RAG 的区别在哪?RAG 存的是原始文本加一个向量。 A-Mem 存的是"LLM 理解后的结构化笔记"。每条记忆自带语义元数据,不需要检索的时候再临时理解。
第二步:建链接。 新笔记进来之后,先用向量相似度找到 top-k 的近邻。但接下来不是直接按距离建链——A-Mem 让 LLM 来判断"这两条记忆之间有没有值得建立的关联"。
为什么不能纯靠向量距离?因为向量距离衡量的是语义相似度,但记忆之间的关联不只是"像不像"。因果关系、概念延伸、模式呼应——这些向量距离看不出来的关联,LLM 能判断。
第三步:进化。 这是我觉得整篇论文最值得品的部分。新记忆存入之后,A-Mem 会回头看那些被链接上的旧记忆,用 LLM 判断:这条旧记忆的上下文、关键词、标签,是不是该因为新信息而更新?
想想看,这意味着什么——你的记忆系统里每一条信息,都不是"死"的。它会随着新信息的积累而持续生长。一条去年存进来的用户偏好,可能因为今天的一次对话而变得更精准、更丰富、更贴近真实。
第四步:检索。 命中一条记忆之后,顺着链接网络向外扩展,把相关的记忆一起拉出来。一次检索拿到的不是一个孤立的答案,是一簇互相关联的知识。
数据不会说谎:85% 的 token 省出来了
论文给了一组让我多看了两遍的数据。
A-Mem 每次检索平均消耗约 1200 个 token 。对比同类方案——LoCoMo 和 MemGPT 要用掉大约 16900 个 token 。减少了 85% 到 93%。
这意味着什么?一个记忆系统的 token 开销降了将近一个数量级。对于需要高频调用记忆的 Agent 来说,这不是优化,是质变。
扩展性方面,100 万条记忆的检索延迟是 3.70 微秒。微秒级别。这基本意味着记忆量不再是瓶颈。
论文还做了消融实验,拆掉不同模块看效果下降多少。结论是:去掉链接的影响大于去掉进化。也就是说,链接是地基,进化是加分项。
这个发现挺有意思的——最酷的功能未必是最关键的功能。
拿回来对照自己:RecallNest 差在哪
读完 A-Mem 之后,我第一反应是回去审视 RecallNest 的设计。对照下来,能看出几个明显的差距。
RecallNest 现在存一条记忆,有 content 、 tags 、 importance 。 A-Mem 有 7 个属性,其中 LLM 主动生成的 contextual description 是我们完全没做的。说白了,我们的记忆缺一层"LLM 对这条信息的理解"——存的是原料,不是半成品。
链接方面,RecallNest 的 KG graph 是基于共现关系建的,不是 LLM 做语义判断。两条记忆出现了相同的实体,就连上了,但它们之间有没有"有意义的关联"——没人问过。
最大的差距,就是 Memory Evolution 。 RecallNest 有 distill 功能,能把多条记忆压缩成摘要,但那是"压缩"不是"更新"。旧记忆存进去什么样,只要没被主动压缩,就一直是那个样子。
不过 RecallNest 也有 A-Mem 没做到的地方:importance scoring(重要性评分)、遗忘和归档机制、 dream 后台整合、 pin/promote 手动干预、 scope 隔离。
A-Mem 论文里其实没有显式的遗忘机制。这让我想到之前做记忆综述时的结论——遗忘有三种策略:时间衰减、频率驱动、重要性驱动。 A-Mem 在这方面是空白的。
所以这不是"谁好谁差"的事情。 A-Mem 在"记忆如何生长"这件事上走得远,RecallNest 在"记忆如何管理"上做得更实。两条路最终会交汇。
回到那个根本问题
我们一直在给 AI 做各种记忆系统,潜意识里把"记忆"当成了一个存储问题——存得多、检索快、召回准,就算好了。
A-Mem 让我重新想了一下:记忆不是存储,记忆是理解。
一个人学了十年的东西,不是在脑子里整整齐齐排了十年的文件柜。那些知识之间会互相影响、互相修改、互相加强。你今天的一个新认知,可能会让你三年前的某个判断突然"活"过来——不是你重新找到了它,是它因为新信息的到来而变得有意义了。
如果 AI 的记忆系统也能做到这一步,"记忆"这个词才算真正名副其实。
我已经把 Memory Evolution 列进了 RecallNest 下一步的演进方向。具体怎么实现——在 store_memory 的时候检索 top-k 相关旧记忆,让 LLM 判断是否需要更新旧记忆的元数据——这个工程上不难,但对整个系统的性质会产生根本性的改变。
从"记忆仓库"变成"记忆有机体",这一步值得走。
你在给 AI 做记忆相关的事情吗?你会优先解决"记住更多"还是"理解更深"?
专业劈叉式跨界选手:🧬 医学出身,🎭 文化口饭碗,🤖 AI 是我的野路子。不卷参数,不追新模型,只关心一个问题:AI 啥时候能装进我脑子,替我不开心?欢迎围观我和 AI 相爱相杀的日常。——AI不会取代你,但会用AI的人会。所以我先学了,你随意。
🔧踩坑副产品已开源https://github.com/AliceLJY → cc-empire,recallnest,workflow-orchestrator,telegram-ai-bridge,wechat-ai-bridge
参与组织 → CortexReach(memory-lancedb-pro 贡献者,setup-memory.sh 一键脚本作者)
夜雨聆风