跳到主要内容Zep:时间知识图谱驱动的智能体记忆架构 | 极客日志编程语言AI算法
Zep:时间知识图谱驱动的智能体记忆架构
Zep 提出基于时间感知知识图谱的智能体记忆架构,通过 Graphiti 引擎动态维护实体、事实及时间线。相比传统 RAG 和 MemGPT,Zep 在 LongMemEval 基准上准确率提升 18.5%,响应延迟降低 90%,Token 消耗压缩至 1.6k。核心创新包括三层图谱结构(情节、语义、社区)和双时间模型(事务时间与有效时间),解决了动态对话记忆中的过时知识、实体混淆及时序混乱问题。实验显示其在偏好问题和跨会话关联上优势明显,但在单会话助手内容细节保留上存在局限。适合长对话且需时间推理的企业级智能体场景。
锁机制1 浏览 Zep 提出了一种基于时间感知知识图谱的智能体记忆架构,通过 Graphiti 引擎动态维护对话和业务数据中的实体、事实及其时间线。在 LongMemEval 基准上实现了 18.5% 的准确率提升,同时将响应延迟降低了 90%,上下文 token 消耗从 115k 压缩到 1.6k。
📖 问题背景:为什么 RAG 还不够?
现有架构存在根本缺陷。基于 Transformer 的大语言模型有两个天然短板:
- 上下文窗口有限:即便是 GPT-4 Turbo 的 128k 上下文,也装不下几个月的对话历史。
- 知识截止日期:预训练数据有时效性,模型不知道你昨天发生了什么。
RAG(检索增强生成)是目前最流行的补救方案,但对动态演化的对话记忆效果不佳。
RAG 在动态场景下的三大痛点
| 问题类型 | 具体表现 | 根本原因 |
|---|
| 知识过时 | 用户说"我上周换了新工作",但检索出的仍是旧公司信息 | 传统 RAG 无法追踪事实的时间有效性 |
| 实体混淆 | '小王'、'王经理'、"老王"被当成三个不同的人 | 缺乏实体解析(Entity Resolution)机制 |
| 关系丢失 | 知道张三和李四都是用户的朋友,但不知道他们俩也是朋友 | 向量检索只能捕捉语义相似性,无法建模关系 |
| 时序混乱 | 分不清"上周的会议"和"去年的会议" | 文档块丢失了原始的时间上下文 |
MemGPT:记忆管理的先行者
MemGPT 是第一个系统性解决 LLM 记忆问题的工作。它的核心洞察非常精妙:把 LLM 类比成操作系统,用虚拟内存的思路管理上下文窗口。
- 核心记忆(Main Context):当前对话窗口,相当于 CPU 缓存。
- 归档记忆(Archival Memory):历史对话和外部知识,相当于硬盘。
- 召回记忆(Recall Memory):最近的对话历史,相当于内存。
当上下文窗口不够用时,LLM 可以通过 function call 主动"调页"——把不重要的信息写入归档,把需要的信息从归档读取出来。这个设计让 MemGPT 在 Deep Memory Retrieval 基准上达到了 93.4% 的准确率。
但 MemGPT 有个根本局限:它本质上还是在做文本检索,只是检索策略更智能了。它无法建模实体之间的关系,也无法追踪事实随时间的演变。
Zep 的核心洞察
Zep 的作者们意识到:与其把记忆当成"文档检索"问题,不如把它当成"知识图谱构建"问题。
- 实体:人物(张三)、地点(北京)、组织(腾讯)、概念(机器学习)
- 关系:朋友、同事、喜欢、讨厌、居住在、就职于
- 时间:过去('三年前')、现在('目前')、将来('下周')
如果能把这些结构化信息提取出来,存进知识图谱,检索时就能回答"张三上个月推荐的那家餐厅叫什么"这种复杂问题。
🧠 核心方法:Graphiti——时间感知的知识图谱引擎
Zep 的核心是 Graphiti,一个专为 LLM 智能体设计的时间感知知识图谱引擎。它的记忆系统是一个动态知识图谱 $\mathcal{G}=(\mathcal{N}, \mathcal{E}, \phi)$,其中 $\mathcal{N}$ 是节点集合,$\mathcal{E}$ 是边集合,$\phi:\mathcal{E}\to\mathcal{N}\times\mathcal{N}$ 是关联函数。
这个图谱由三层子图构成,形成一个从原始数据到高层抽象的层次结构:
- 情节子图(Episode Subgraph):存储未经加工的输入数据。
- 语义实体子图(Semantic Entity Subgraph):存储从情节中提取的结构化知识。
- 社区子图(Community Subgraph):通过社区检测算法把紧密相连的实体聚类成群组。
第一层:情节子图(Episode Subgraph)
情节子图是"原始记忆"层,存储未经加工的输入数据。每条消息、每段文本、每个 JSON 对象都作为一个情节节点(Episode Node)保存下来。
- 非损失存储:后续的实体/关系提取可能有遗漏或错误,保留原始数据可以随时回溯。
- 引用溯源:当 LLM 给出一个回答时,可以追溯到原始对话,提供引用和出处。
- 审计合规:企业场景需要保留完整的交互记录。
- 内容:原始文本/JSON
- 发言者:消息的来源(用户、助手、系统)
- 参考时间戳 $t_{ref}$:消息发送的时间点
$t_{ref}$ 非常重要。当用户说"我下周四有个会议"时,系统需要知道"现在"是什么时候,才能正确解析"下周四"的具体日期。
第二层:语义实体子图(Semantic Entity Subgraph)
语义实体子图是"概念记忆"层,存储从情节中提取的结构化知识。它包含两类元素:
实体节点(Entity Nodes):代表对话中提到的人物、地点、组织、概念等。每个实体节点包含:
- 名称:实体的规范名称(如"张三")
- 摘要:对实体的简短描述(如"AI 研究员,曾就职于腾讯")
- 嵌入向量:用于语义检索的 1024 维向量
事实边(Fact Edges):代表实体之间的关系。每条边包含:
- 关系类型:如
WORKS_FOR、IS_FRIENDS_WITH、RECOMMENDS
- 事实描述:关系的详细说明
- 四个时间戳:这是 Zep 的核心创新
实体提取与消歧
实体提取是个经典的 NLP 问题,但在对话场景下有特殊挑战:同一个人可能有多种称呼。用户可能在不同时候说"我老板"、'王总'、'老王',这三个指的可能是同一个人。
Zep 的解决方案是混合检索 + LLM 消歧的两阶段流程:
Stage 1: 实体提取 (LLM) -> ["我老板", "王总", "餐厅"]
Stage 2: 候选检索 (Vector + Full-text)
Stage 3: LLM 消歧判断 -> {"is_duplicate": true, "merged_name": "王总 (王经理)"}
这个设计的好处是:向量检索和全文检索各有所长,两者结合能提高召回率;最终用 LLM 做高精度判断,避免误合并。
双时间模型:Zep 的杀手锏
这是 Graphiti 最核心的创新。传统知识图谱是"静态快照"——它告诉你张三是李四的同事,但不告诉你什么时候开始、什么时候结束。
Zep 为每条事实边维护四个时间戳,形成两条独立的时间线:
| 时间线 | 时间戳 | 语义 | 用途 |
|---|
| 事务时间线 T' | t_created', t_expired' | 系统视角 | 数据库审计 |
| 有效时间线 T | t_valid, t_invalid | 现实世界视角 | 时间推理 |
用户在 2024 年 1 月 15 日说:'我上周从腾讯离职了,现在在 OpenAI 工作。'
- 新边:用户 ─[工作于]─▶ OpenAI
- t'_created = 2024-01-15 (系统记录时间)
- t_valid = 2024-01-08 (事实生效时间)
- 旧边:用户 ─[工作于]─▶ 腾讯
- t'_expired = 2024-01-15 (系统现在标记失效)
- t_invalid = 2024-01-07 (事实失效)
这个双时间模型借鉴自数据库领域的 Temporal Database 理论,已经有几十年的研究历史。Zep 的贡献是把它引入 LLM 智能体记忆场景。
社区子图是"全局理解"层,通过社区检测算法把紧密相连的实体聚类成群组。
- 全局查询:当用户问"最近我们讨论了哪些话题"时,需要一个高层视角。
- 上下文补充:检索单个实体时,可以顺带提供它所属社区的背景信息。
GraphRAG 使用 Leiden 算法做社区检测,但 Zep 选择了标签传播算法(Label Propagation),原因是支持增量更新,计算开销更小。
🔍 记忆检索:三步走的检索管道
有了知识图谱,下一步是如何高效检索。Zep 的检索系统接受文本查询,返回格式化的上下文。
整个过程分三步:$f(\alpha) = \chi(\rho(\varphi(\alpha))) = \beta$
- 搜索(Search,φ):追求高召回。
- 重排序(Rerank,ρ):提高精确率。
- 构造(Construct,χ):格式化输出。
Step 1: 搜索(Search,φ)
| 搜索方法 | 符号 | 捕捉的相似性 | 实现基础 |
|---|
| 余弦语义相似度 | φ_cos | 语义相似 | 向量数据库 |
| BM25 全文搜索 | φ_bm25 | 词汇相似 | Lucene |
| 广度优先遍历 | φ_bfs | 上下文相似 | 图遍历 |
Step 2: 重排序(Rerank,ρ)
| 重排器 | 原理 | 优点 |
|---|
| RRF | 融合多个排序列表的倒数排名 | 简单高效 |
| MMR | 最大边际相关性 | 避免冗余 |
| Cross-encoder | 用 LLM 对每个候选打分 | 最高精度 |
Step 3: 构造(Construct,χ)
最后一步是把检索到的节点和边格式化成 LLM 可读的文本。Zep 使用的模板如下:
<FACTS>
- 张三推荐了海底捞 (2024-01-15 - present)
</FACTS>
<ENTITIES>
- 张三:AI 研究员,腾讯员工
</ENTITIES>
- 事实带时间范围:这让 LLM 能正确回答时间敏感问题。
- 实体带摘要:摘要提供了实体的背景信息。
🧪 实验评估
论文在两个基准上评估了 Zep:DMR(Deep Memory Retrieval)和 LongMemEval。
DMR 基准:小试牛刀
Deep Memory Retrieval 是 MemGPT 团队提出的基准,包含 500 段多会话对话。
| 记忆方法 | 模型 | 准确率 |
|---|
| Recursive Summarization | GPT-4-turbo | 35.3% |
| MemGPT | GPT-4-turbo | 93.4% |
| Zep | GPT-4-turbo | 94.8% |
Zep 在两个模型上都取得了最佳成绩,但领先幅度很小。作者的自我批评非常诚实:DMR 这个基准太简单了。
LongMemEval 基准:真正的考验
LongMemEval 是一个更具挑战性的基准,对话平均长度达到 115,000 tokens。
| 记忆方法 | 模型 | 准确率 | 延迟 | 上下文 Tokens |
|---|
| Full-context | GPT-4o-mini | 55.4% | 31.3s | 115k |
| Zep | GPT-4o-mini | 63.8% | 3.20s | 1.6k |
| Full-context | GPT-4o | 60.2% | 28.9s | 115k |
| Zep | GPT-4o | 71.2% | 2.58s | 1.6k |
- 准确率提升 15.2%~18.5%:说明知识图谱能更精准地提取关键信息。
- 延迟降低 90%:从 ~30 秒降到 ~3 秒,对用户体验至关重要。
- Token 消耗降低 98%:从 115k 降到 1.6k,直接影响 API 成本。
实验结果分析
- 偏好问题(+184%):这类问题需要理解用户的喜好偏向。
- 时间推理(+38.4%):双时间模型的直接收益。
- 多会话(+30.7%):跨会话信息整合是知识图谱的强项。
- 单会话助手问题(-17.7%):助手回复往往包含详细的步骤说明、代码片段,这些内容在提取成知识图谱时会丢失细节。
💡 技术亮点与局限
三大亮点
- 双时间模型的务实引入:设计了从自然语言中提取时间信息的 prompt,实现了基于 LLM 的冲突检测和边失效机制。
- 工程导向的系统设计:选择标签传播而非 Leiden,为了支持增量更新;限制实体/边去重的搜索范围。
- 层次化的图谱结构:从情节到实体到社区的三层结构,对应了人类记忆的心理学模型。
三大局限
- 单会话助手问题的性能下降:并非所有信息都适合图结构,长篇代码、详细步骤在"压缩"成三元组时会丢失关键细节。
- 缺少与其他 GraphRAG 方法的对比:未对比 GraphRAG、LightRAG 等近期的图增强 RAG 工作。
- 图构建成本的黑箱:提取实体、关系、时间都需要 LLM 调用,高频对话场景可能成为瓶颈。
🔮 深度思考与启发
记忆的本质是什么?
这篇论文让我重新思考"AI 记忆"的本质。传统 RAG 把记忆当成"信息检索"问题。但人类的记忆远不止于此:我们会关联信息、更新信息、抽象信息。知识图谱天然支持这些操作。
时间感知是被低估的方向
大多数 RAG 研究都在卷相关性排序。但现实世界的信息天然带时间属性。Zep 的双时间模型提供了一个不错的框架,但还有很多可以探索的方向,如时间衰减、时间聚合。
结构化 vs 非结构化的权衡
理想的系统可能是混合架构:用知识图谱存储结构化信息,用原始文档存储非结构化信息,检索时结合两者。
🔧 工程落地建议
如果你正在考虑为自己的智能体产品引入记忆功能,这里是一些实践建议:
场景评估
| 场景特征 | 推荐方案 |
|---|
| 短对话(< 100 条消息) | Full-context,简单直接 |
| 中等对话(100-1000 条消息) | MemGPT 或简单 RAG |
| 长对话 + 需要时间推理 | Zep/Graphiti 类方案 |
| 长对话 + 需要跨会话关联 | Zep/Graphiti 类方案 |
成本优化策略
- 分层处理:不是每条消息都值得完整处理。
- 延迟构建:图构建可以异步进行,不必阻塞用户响应。
- 模型选择:用 GPT-4o-mini 而非 GPT-4o 做图构建。
- 批量处理:如果消息来得快,可以攒一批一起处理。
📝 总结
Zep 展示了时间感知知识图谱在智能体记忆领域的巨大潜力。通过三层图谱结构和双时间模型,它在处理长对话、复杂时间推理、知识更新、跨会话关联等企业级任务时表现出色。
在 LongMemEval 基准上,Zep 实现了准确率提升 18.5%,延迟降低 90%,Token 消耗降低 98%。对于正在构建智能体产品的团队,Zep 提供了一个比纯文本检索更强大的记忆框架。是否采用取决于你的场景特征:如果对话很长、需要时间推理、有跨会话关联需求,值得一试。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online