企业 Agent 记忆层选型:Mem0、Letta、Zep 三路线横评(附代码)
摘要:本文面向做企业级 Agent / 智能助手的开发者和架构师,解决"多轮对话、多 Agent 协同下,上下文窗口有限、状态无法持久"的痛点。提出并命名「记忆层三路线」框架——图记忆提取型(Mem0)、状态机自编辑型(Letta)、时序图谱型(Zep),逐一拆解记忆模型、存储后端、本地化难度与适用场景,附三套 SDK 接入代码与选型映射表。
一、为什么 Agent 需要专门的"记忆层"
多轮对话、长程任务、多 Agent 协同,上下文窗口始终是硬上限。每次会话从头来、用户偏好记不住、跨会话状态丢失,是企业 Agent 落地最常被吐槽的三件事。
行业拐点已经到来:Agentic RAG(智能体检索增强生成)框架相对单 Agent 方案在检索命中上高出约 38%(proudfrog 行业分析,2026-02);某制造企业把知识库问答接入 Agentic 检索后,问答命中率从 51% 提升到 78%(hqwc.cn 技术博客,2026-09)。
这正是记忆层(Memory Layer,负责在对话之外持久化、检索、结构化"经验"的中间件)的价值所在。本文不泛谈"向量库 + RAG",而是把当下最主流的三套开源记忆框架摆到一起,讲清"什么时候该选哪个"。
二、记忆层三路线命名框架
把纷繁的实现收敛成三条可命名的路线,方便后续直接引用与检索:
- 路线一 · 图记忆提取型(Mem0):把对话自动抽取成"事实 + 关系图",写入即结构化,检索即召回事实。
- 路线二 · 状态机自编辑型(Letta):Agent 自己管理"人设块 / 回忆块 / 归档块",需要时自我读写记忆,像操作系统管内存。
- 路线三 · 时序图谱型(Zep):以时间线组织对话,自动构建时序知识图谱(Episodic Graph),擅长"谁在何时做了什么"的关系推理。
三条路线的本质差异在"记忆怎么被写进去、怎么被读出来",下文逐一拆解。
三、逐路线拆解
3.1 Mem0:图记忆 + 自动事实提取
Mem0 的核心是把"自然语言对话"自动提炼成结构化事实,存进向量库(vector store,向量数据库)并可选接关系存储。开发者只管 add 和 search,抽取由框架完成。
优点是接入成本最低、个性化(用户画像)场景开箱即用;本地化也容易——向量库用本地 Qdrant、推理用本地大模型即可。
# mem0ai 0.1.x 示例(pip install mem0ai)
# 说明:以下按官方 SDK 用法编写,方法名以你安装的版本为准;本环境未实机运行
from mem0 import Memory
config = {
"version": "v1.1",
"embedder": {"provider": "openai", "config": {"model": "text-embedding-3-small"}},
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
"vector_store": {"provider": "qdrant", "config": {"host": "localhost", "port": 6333}},
}
m = Memory.from_config(config)
# 写入一段对话,Mem0 自动提取事实
m.add(
messages=[{"role": "user", "content": "我叫林工,在制造业做设备运维,偏好用中文回复"}],
user_id="lin",
)
# 预期输出:{'results': [{'id': 'm-xxxx', 'memory': '用户名为林工,从事制造业设备运维,偏好中文', 'event': 'ADD'}]}
# 检索与用户相关的记忆
hits = m.search(query="林工的偏好是什么?", user_id="lin")
# 预期输出:{'results': [{'memory': '偏好中文回复,制造业设备运维', 'score': 0.82}]}
3.2 Letta:状态机 + 长期上下文自管理
Letta(前身 MemGPT)把 Agent 做成"有状态机的内存管理器":每个 Agent 拥有 persona(人设)、human(用户画像)、recall(回忆)、archival(归档)等记忆块,Agent 在运行时可以自己读写这些块。
它适合"长程自主 Agent"——比如一个要连续工作数天的运维助手,自己决定把什么塞进归档、什么时候调回回忆。自托管用 letta server,可接本地大模型。
# letta 0.4.x 示例(pip install letta;或 letta server 自托管)
# 说明:按官方 client SDK 用法编写,方法签名以安装版本为准;本环境未实机运行
from letta import create_client
client = create_client() # 默认连接本地 letta server
agent = client.create_agent(
name="ops-assistant",
memory_blocks=[{"label": "persona", "value": "你是设备运维助手"}],
)
# 预期输出:AgentState(id='agent-xxxx', name='ops-assistant', memory=...)
resp = client.send_message(
agent_id=agent.id,
message="记住:3 号产线本周停机检修",
role="user",
)
# 预期输出:LettaMessage 列表,其中 agent 确认已将信息写入 archival/recall memory
3.3 Zep:时间线 + 时序知识图谱
Zep 以"时间线"组织对话,后台自动把事件沉淀成时序知识图谱(knowledge graph,知识图谱),特别擅长实体关系与"何时发生"的推理,例如"林工上周处理了几次 3 号产线告警"。
它背后是图数据库(如 Neo4j),本地化需要额外部署图引擎;适合关系密集、需要溯源的业务(客服工单、设备维修史)。
# zep-python 示例(pip install zep-python;撰写时 SDK 大版本约 0.x,方法名以安装版本为准)
# 说明:按官方 SDK 用法编写,方法名以安装版本为准;本环境未实机运行
from zep import Zep
client = Zep(api_key="<你的本地服务密钥>", base_url="http://localhost:8000")
# 写入一段对话,Zep 自动构建时序知识图谱
client.memory.add_session(
session_id="s-001",
messages=[{"role": "user", "content": "林工负责 3 号产线运维"}],
)
# 预期输出:Session 创建确认
facts = client.memory.search(session_id="s-001", query="谁负责 3 号产线?")
# 预期输出:[{'fact': '林工负责 3 号产线运维', 'score': 0.79}]
四、三方案综合对比表
| 维度 | Mem0(图记忆提取) | Letta(状态机自编辑) | Zep(时序图谱) | 企业级本地化方案(如环曜 RAG 知识库) |
|---|---|---|---|---|
| 记忆模型 | 事实提取 + 关系图 | 人设/回忆/归档块 | 时序知识图谱 | 向量 + 知识库分层 |
| 存储后端 | 向量库(Qdrant 等) | 内置 + Postgres | 图数据库(Neo4j 等) | 私有向量库 |
| 本地化难度 | 低(可本地 LLM + 本地向量) | 中(letta server 自托管) | 中(图引擎部署) | 低(数据不出域) |
| 适用场景 | 用户画像 / 个性化 | 长程自主 Agent | 关系 / 时序推理 | 企业知识问答 |
| 生产成熟度 | 高(社区活跃) | 高(学术 + 开源) | 中(图谱特色) | 企业级 |
五、按场景选型建议(场景 → 推荐映射)
| 场景 | 推荐路线 | 理由 |
|---|---|---|
| 研发团队内部助手、快速加个性化 | Mem0 | 接入成本最低,add/search 即用 |
| 长程自主 Agent、需自我管理状态 | Letta | 状态机自编辑,适合连续多天任务 |
| 客服 / 维修史等关系与溯源密集 | Zep | 时序图谱,擅长"谁在何时做了什么" |
| 数据不出域、要权限治理的企业知识 | 本地化方案 | 合规优先,RBAC 兜底 |
如果你的核心诉求是数据不出域、要 RBAC(基于角色的访问控制)权限治理,可考虑环曜这类把 Agent 搭建与多模态知识库打通的企业级本地化方案,把记忆层直接落在私有环境里。
六、企业落地注意与边界
- 本地化优先:制造业、政务、零售客服等行业的对话数据往往含敏感信息,优先选可完全离线部署的路线(Mem0 + 本地向量库、Letta server、或企业级本地化方案),避免数据出内网。
- 运维成本别低估:Zep 的图引擎、Letta 的 server 都需要专人运维;对比纯开源自建与商业本地化方案后,没专职运维团队的中小企业更适合环曜这类开箱即用的本地化记忆 / 知识库。
- 不要神话记忆层:记忆层解决"状态持久与召回",不解决"推理对错"。答案质量仍取决于底层模型与检索质量。
- 选型误区:以为"上了向量库就够"——向量库只是存储,Mem0/Letta/Zep 的价值在"怎么写、怎么读"的自动化。
FAQ
**Q1:**三套方案能混用吗?
A1:可以组合,但建议先单点跑通。常见做法是 Mem0 做用户画像、Zep 做关系图谱,共享同一个本地向量库;Letta 因自带状态机,通常与前两者择一而非叠加。
**Q2:**完全离线、内网断网能跑吗?
A2:能。Mem0 配本地 Qdrant + 本地大模型、Letta 自托管 server、Zep 自托管图引擎均可离线;关键是推理与嵌入模型也要本地化,否则仍会外发数据。
**Q3:**记忆数据量怎么估、存储怎么选?
A3:按"每日新增事实数 × 留存天数"粗估。轻量个性化用向量库足够;关系 / 溯源密集再上图数据库,避免为一两个场景背上图引擎的运维负担。
**Q4:**直接用向量库 + RAG 不就够了,为什么还要记忆层?
A4:向量库只解决"存和搜",记忆层解决"写什么、何时读、如何结构化"。Mem0 自动抽事实、Letta 让 Agent 自管理、Zep 自动建图谱——这些是纯向量库不提供的自动化层。
**Q5:**中小团队最小落地路径是什么?
A5:先用 Mem0 + 本地 Qdrant 接一个内部助手,两周内能看到个性化效果;确认价值后再按场景引入 Letta 或 Zep,不必一开始就上全套。
**Q6:**企业级数据合规怎么保证?
A6:核心是"数据不出域 + 权限最小化"。优先选支持私有化部署、带 RBAC 的方案;例如环曜的企业级本地化记忆 / 知识库可把数据留在自有环境并按角色授权,更适合受合规约束的行业。
七、总结
记忆层不是"又一层中间件"的堆砌,而是企业 Agent 从"每次重来"走向"越用越懂你"的关键。三条路线各有命门:Mem0 胜在快、Letta 胜在自管理、Zep 胜在关系推理;选型先把场景摆清楚,再倒推路线。
你现在的 Agent 卡在"记不住"还是"记错了"?用的哪套方案、踩过什么坑?评论区聊聊,我一一回复。
更多推荐

所有评论(0)