乐于分享
好东西不私藏

AI记忆正在进化(下):技术实现与框架选型完全指南

AI记忆正在进化(下):技术实现与框架选型完全指南

上一篇讲完 Active Memory 是什么、为什么 AI 的记忆正在进化,有读者留言问:那如果我自己要给 Agent 加记忆,代码层面到底在做什么?

别把它想复杂。本质上就四步:提取、存储、去重、检索。先把这条链路搞清楚,再看框架怎么选。

一次对话,记忆系统在后台做了什么

先从一个最简单的场景开始想:你告诉 AI"我不喜欢废话,直接给结论"。如果有一套记忆系统在工作,这句话的完整生命周期大概是这样的:

提取(Extraction):对话结束后,LLM 扫一遍刚才的对话,判断哪些内容值得保存。"不喜欢废话"这类偏好被识别为重要信息,提炼成一条结构化条目,比如 {"type":"preference","content":"喜欢简洁回答,直接给结论"}

向量化(Embedding):这条记忆被转化为向量,存入向量数据库(比如 Qdrant、Pinecone、pgvector)。简单理解,就是把一句话压成一串数字表示,后续靠相似度匹配来检索

去重合并(Deduplication):如果之前已经有类似条目,系统会判断是更新、合并还是保持原条目不变

检索注入(Retrieval):下次对话开始时,系统根据当前问题做语义检索,把最相关的记忆条目塞进系统提示,让 AI 带着这些上下文来回答

你把这四步串起来,基本就得到一套能用的记忆系统了。

和传统 RAG 最大的区别:RAG 是查文档,记忆系统是查"你这个人"。RAG 检索的是外部知识库,记忆系统检索的是从你过去对话里蒸馏出来的、关于你的结构化事实。

Mem0 的技术原理:向量 + 图谱双路径

如果只想先看一个最典型的样本,Mem0 基本绕不过去。GitHub 超 5 万 star,背后有 2400 万美元融资,是独立记忆框架里目前最受关注的一个。

Mem0 的核心是两条存储路径并行:

Mem0(向量路):把记忆提炼成事实条目,向量化后存入向量数据库,按语义相似度检索。适合存储"用户喜欢简洁"这类离散事实

Mem0g(图谱路):把记忆中的实体和关系存成知识图谱(公开实现中使用 Neo4j),保留条目之间的关联。比如"用户在北京工作""用户在一家互联网公司"这两条记忆,在图谱里会连在一起,检索时能把关联信息一起拉出来

两条路各自解决的问题不一样:

场景向量路(Mem0)图谱路(Mem0g)
离散偏好✅ 擅长一般
关系推理一般✅ 擅长
部署复杂度低(只需向量库)高(需要 Neo4j)
检索延迟p95 约 1.4 秒稍高(图遍历)

Mem0 在自家发布的 LOCOMO benchmark 评测中,LLM 评判得分 66.9%,对比 OpenAI 原生记忆的 52.9%,相对提升约 26%;同时每轮 token 消耗约 1.8K,对比把全上下文塞进去的 26K,节省约 90%。不过先泼个冷水,这组数据出自 Mem0 自家论文,外部复现一直有争议,只能当参考。

Letta:把记忆做成操作系统的内存管理

Letta(原来叫 MemGPT)和前面几家不太一样,它不是把记忆当外挂,而是把记忆管理直接塞进了 Agent 行为里。它的核心问题是:上下文窗口有限,但 Agent 的生命周期可以无限长,怎么办?

答案是借鉴操作系统:把上下文窗口当 RAM,把外部数据库当磁盘,让 Agent 自己控制"页面置换"——主动决定把哪些记忆换进来、把哪些暂存出去。翻成人话,就是让 Agent 学会"需要时再翻出来",不用把所有东西一直记在眼前。

Letta 的架构可以粗略理解为三层:

Core Memory(核心记忆):始终在上下文窗口里,容量有限。存用户的基本情况、当前任务状态。Agent 可以通过 function call 直接读写

Archival Memory(归档记忆):外部向量数据库,容量无限。历史对话、积累经验都在这里,按需检索进入上下文

外部知识接入层:文档、代码库等,RAG 负责这层

最关键的是,记忆操作是 Agent 推理的一部分,不是外部钩子。Agent 在对话中就可以主动调用"存档""检索""更新记忆"的函数,记忆管理本身成了推理的一环。这让 Letta 特别适合需要超长生命周期的 Agent,比如长期陪伴类应用或者跑数周的自主任务。

Zep:企业级,强调时序和因果

Zep 的定位是企业级对话记忆,它在技术上有一个比较有意思的选择:用的是时序知识图谱(Graphiti)

普通知识图谱存的是"A 和 B 有关联",但没有时间信息。Zep 的图谱里每条关系都带时间窗口,知道这个关系从什么时候开始,到什么时候还有效。这对业务场景非常有用:

• 用户上个月说"最近在用 MacBook Pro",这个月又换成了 Windows——图谱能处理"旧事实已失效"的情况

• 查询时可以指定时间范围,只拿"最近有效"的记忆,不会把过时信息混进来

此外,Zep 还内置了对话渐进式摘要,长对话会自动压缩成摘要,旧细节慢慢淡出,关键事实保留。面向企业,Zep 提供 BYOC / 私有云部署选项,适合有数据安全合规要求的场景。

如果只想快点上线,先看 Mem0;如果真在做长期运行的 Agent,Letta 更对路;如果是企业场景,Zep 更像正经工程方案。

LangChain 和 LlamaIndex:框架内置的记忆模块

如果你已经在用 LangChain 或 LlamaIndex,不一定要引入额外的记忆框架,两者都有内置的记忆模块。

LangChain Memory 提供多种策略可以直接切换:

• ConversationBufferMemory:直接保留全部对话历史(简单但 token 消耗大)

• ConversationSummaryMemory:自动摘要历史,节省 token

• EntityMemory:专门追踪对话中出现的实体(人名、地点、项目等)

• VectorStoreRetrieverMemory:向量化存储历史,语义检索最相关片段塞回上下文

值得注意的是,这些传统 Memory 类在 LangChain 新版本里已逐步转为 legacy 模块,新版推荐的是基于 stateful agent 的记忆机制。如果你是新项目,最好看官方最新文档。

LlamaIndex 的优势在于"文档 + 对话"混合记忆。它的记忆模块和数据索引引擎是同一套,Agent 既能记住对话,也能同时在你给它的文档库里检索,两者语义是打通的。这对需要在私有知识库上做个性化问答的场景很实用。

但如果记忆本身就是你产品体验的核心,这两套多半不够,最好直接上专门方案。

MemOS:把记忆当成可调度资源

前面几家都偏工程实践,如果再往前看一步,研究圈对"记忆"的想法其实已经开始变了。

MemOS 来自国内研究团队,2025 年在 arXiv 上发表,目前处于研究原型阶段。它把记忆分成三种形态,参照论文术语:

激活记忆(Activation Memory):当前上下文窗口里的内容,速度最快但容量最小,类似 CPU 寄存器

明文记忆(Plaintext Memory):向量库、知识图谱等外部存储,按需加载,类似内存。这是大多数框架主要做的那层

参数记忆(Parametric Memory):通过微调直接沉淀进模型权重,不占上下文但也没法动态更新,类似只读磁盘

(说明一下:这个类比只是帮助理解三种形态的访问速度和可修改性,不是严格一一对应。)

最有意思的想法是:用户反复提到的偏好,可以从明文记忆"蒸馏"进参数记忆,下次加载模型就自带,不需要每次检索。这有点像人的肌肉记忆——用得多了,就内化了。

MemOS 还引入了 MemScheduler,负责记忆的调度与加载策略,设计目标之一是降低运行时开销。

这东西还早,离你下周接进产品还有距离。但它至少把问题想得更完整——不只是"多存点、快点查",而是把记忆当成一种可在三种形态之间流转的系统资源来管。

那我该用哪个?选型建议

直接给结论。

场景 1:快速验证,想先把记忆功能跑起来

→ 用 Mem0。pip install mem0ai,文档清晰,三步接入,开源版免费。

场景 2:Agent 需要长期独立运行,自己管理记忆

→ 用 Letta。Agent 可以主动读写记忆,适合长生命周期的自主 Agent。

场景 3:企业级,需要对话历史的时序管理和合规部署

→ 用 Zep。时序知识图谱、渐进式摘要、BYOC 私有云部署,企业场景更成熟。

场景 4:已经在用 LangChain / LlamaIndex,不想引入新依赖

→ 用框架内置的 Memory 模块。ConversationSummaryMemory 是个不错的起点,但记得看新版文档,老 API 有 legacy 倾向。

场景 5:文档问答 + 个性化记忆要打通

→ 用 LlamaIndex。文档索引和对话记忆是同一套检索引擎,天然融合。

框架核心优势适合场景上手难度
Mem0快速接入,向量+图谱双路个人偏好,快速验证
LettaAgent 自主记忆管理长期自主 Agent⭐⭐⭐
Zep时序知识图谱,企业合规企业对话,客服系统⭐⭐
LangChain Memory多策略可切换,生态完整LangChain 项目内⭐⭐
LlamaIndex文档+对话记忆融合知识库问答+个性化⭐⭐

说到这儿,也别觉得记忆已经做明白了

真正难的几个坑,现在还没人填平:

记忆的遗忘策略:什么样的记忆该衰减、该删除?目前大多数系统是手动管理或者简单按时间删,没有像人一样"自然遗忘不重要的、保留重要的"的机制。

记忆的准确性:AI 从对话里提取记忆时,有时候会提取错,或者把两件事混在一起。记忆一旦写错,后续对话里 AI 就带着这个"误解"在跑,用户往往不知道。

跨平台的记忆标准:你在 ChatGPT 攒的记忆,搬到 Claude 只是"导入",不是同一套格式。目前没有统一的记忆交换标准,各家各做各的。

多 Agent 共享记忆:一个企业里有多个 Agent 在跑,怎么让它们共享一部分关于用户的记忆,又不互相污染?这个问题目前基本没有成熟方案。

记忆这个方向,现在的感觉有点像 2022 年的向量数据库:大家都知道很重要,工具链也在快速成熟,但最佳实践还在形成中。现在进场,踩坑是必须的,但也是最好学东西的时候。

小结

把这两篇合起来看,AI 的记忆进化路线大概是这样的:

• 早期:把对话历史塞进上下文,被动记忆

• 现在:主动提取关键信息、结构化存储、按需检索注入,Active Memory

• 未来:记忆在激活态、明文存储、模型权重三种形态间流转,记忆成为可调度的系统资源

技术层面,现在可以动手的方案已经足够多。更大的问题其实是产品侧的:你的用户愿不愿意让 AI 记住他?记什么、忘什么,他能不能控制?记忆系统做出来,用户信不信任它?

所以最后拼的不只是检索和存储,而是产品规则、用户控制权和信任设计。


如果这篇文章对你有帮助,点个赞、转发给朋友,是最直接的支持。