2026 AI 记忆框架横评:Mem0 / Zep / LangMem / TiMem,选哪个?
最近帮几个 AI 产品做技术选型,把目前主流的四个记忆框架都系统用了一遍,把踩过的坑整理成这篇文章。
先说结论:没有最好的,只有最适合场景的。但每个框架的能力边界差距很大,选错了后期迁移成本很高。
为什么 context window 不够用?
做 AI 应用最开始都会这么干:把历史对话直接塞进 prompt。短期能跑,但走不远,原因有三:
- 成本爆炸:聊几百轮之后,每次调用 LLM 要带几万 token 历史记录
-
- 注意力衰减:context 太长,模型对早期内容的关注度显著下降
-
- 跨会话失效:用户第二天来,什么上下文都没了
专门的记忆层就是用来解决这三个问题的。
Mem0:入门首选,但有天花板
Mem0 是目前使用量最大的 AI 记忆方案,设计哲学很简单:把对话里的事实用 LLM 抽取出来,向量化存储,查询时按语义相似度返回。
from mem0 import MemoryClient
client = MemoryClient(api_key="your_key")
client.add("用户叫李明,后端工程师,主要用 Go", user_id="alice")
results = client.search("用户的技术背景", user_id="alice")
v1.0 之后支持 memory export,API 也更新到了 v2,整体生态比较成熟。接入 5 分钟能跑起来。
但 Mem0 有一个根本性的局限:它是扁平的。所有记忆存在同一个层面,没有时序概念。「用户上周说了什么」「这个月状态有什么变化」,它答不上来——因为索引完全基于语义相似度,没有「什么时候」的概念。
适合:快速原型、简单偏好记忆、短对话场景。
Zep:图谱结构,时序感知更强
Zep 把记忆组织成情节图谱,对话里的实体、关系、事件都变成图上的节点,每个节点带时间戳。时序类问题处理明显好于 Mem0。
from zep_cloud.client import Zep
client = Zep(api_key="your_key")
client.memory.add(
session_id="session_001",
messages=[{"role": "user", "content": "我上个月从互联网换到了金融行业"}]
)
result = client.memory.search(session_id="session_001", text="用户的职业变化")
```
在第三方 LoCoMo 基准评测中 Zep 拿到了 78.94%,社区活跃,文档完善。
缺点是没有自动的层级归纳——聊了三个月之后,所有片段还是平铺在图上,不会自动总结出「用户这个季度的整体状态」。
**适合**:中等周期(周~月级别)的场景,时序感知需求强。
---
## LangMem:LangChain 生态的原生选择
如果你已经在用 LangChain/LangGraph 搭 Agent,LangMem 是摩擦最低的选项。它把记忆分为工作记忆(当前会话)和长期存储(跨会话),深度集成 LangGraph 的状态管理。
```python
from langmem import create_memory_manager
manager = create_memory_manager(model="openai/gpt-4o")
await manager.ainvoke({"messages": conversation_history})
```
第三方评测 78.05%,记忆管理逻辑透明,方便调试。
但强依赖 LangChain 生态,如果你不用 LangChain,接入价值不大;长期记忆层仍是语义检索,时序能力也有限。
**适合**:已经在用 LangChain/LangGraph 技术栈的项目。
---
## TiMem:五层时序记忆树,长期场景综合最强
TiMem 来自论文《TiMem: Temporal-Hierarchical Memory Consolidation for Long-Horizon Conversational Agents》(arXiv:2601.02845),理论基础是认知神经科学里的**互补学习系统理论(CLS)**——模拟人脑把短期记忆逐步巩固成长期记忆的机制。
核心是**时序记忆树(TMT)**,五层结构,每层由 LLM 自动向上归纳:
1. **L1 原始对话片段**:保留完整原始对话,毫秒级写入
2. **L2 会话摘要**:单次对话结束后自动提炼关键信息
3. **L3 每日总结**:跨多个会话归纳当日整体情况
4. **L4 每周总结**:提取中期规律和变化趋势
5. **L5 人物画像**:全生命周期的稳定用户描述,持续更新
查询时根据问题复杂度自动选层:简单问题查 L1/L2 精确召回,复杂问题查 L4/L5 全面理解,不需要手动指定。
```python
import asyncio
import uuid
from timem import AsyncMemory
memory = AsyncMemory(api_key="YOUR_KEY", base_url="https://api.timem.cloud")
async def main():
await memory.add(
messages=[
{"role": "user", "content": "我最近在学 Rust,打算转做系统编程"},
{"role": "assistant", "content": "学 Rust 是个好方向!"}
],
user_id="alice",
session_id=str(uuid.uuid4()),
)
results = await memory.search(
query="用户最近的学习方向",
user_id="alice",
limit=5,
)
for r in results:
print(f"[L{r['layer']}] {r['content']}")
asyncio.run(main())
```
返回结果里的 `layer` 字段告诉你这条记忆来自哪一层,方便理解召回逻辑。
**官方论文数据**:
| 基准 | TiMem | MemOS(次强) | 领先幅度 |
|------|-------|------------|--------|
| LoCoMo | 75.30% | 69.24% | +6.06% |
| LongMemEval-S | 76.88% | 68.68% | +8.20% |
Token 消耗上,分层召回比直接检索减少了 **52.20%**,长期运行成本优势明显。
缺点:接入比 Mem0 略复杂(需要管理 `session_id`);社区规模比 Mem0/Zep 小,文档还在持续完善。
**适合**:长期陪伴型 AI、个性化助手、需要跨月记忆、时序推理要求高的场景。
---
## 怎么选?
| 需求 | 推荐 |
|------|------|
| 快速原型,5 分钟接入 | Mem0 |
| 已在用 LangChain/LangGraph | LangMem |
| 时序感知,中等周期 | Zep |
| 长期陪伴 / 用户画像 / 跨月记忆 | TiMem |
核心逻辑:**对话周期越长、时序需求越强,越应该用 TiMem;场景越简单,Mem0 够了。**
---
如果你对 TiMem 感兴趣,欢迎到 GitHub 看看:
https://github.com/timem-ai/tiimem
给个 Star,是我们持续开源的最大动力。
在线体验:https://playground.timem.cloud
技术文档:https://docs.timem.cloud