摘要:本文面向做企业级 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 卡在"记不住"还是"记错了"?用的哪套方案、踩过什么坑?评论区聊聊,我一一回复。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐