← 返回首页
🕸️

Zep 时序知识图谱

端到端上下文工程平台,基于 Graphiti 知识图谱引擎,以 sub-200ms 延迟提供关系感知的上下文

4,629
GitHub Stars
Python
语言
Apache-2.0
许可证

🕸️ 什么是 Zep?

Zep 是一个端到端的上下文工程平台,其核心创新在于使用时序知识图谱(Temporal Knowledge Graph)而非简单的向量存储来管理 Agent 记忆。

与传统的向量数据库方案不同,Zep 能够理解实体之间的关系,追踪事实的时间演变,并以极低的延迟(sub-200ms)检索最相关的上下文。

🎯 核心理念

记忆不只是"相似文本的检索",而是对谁、什么、何时的结构化理解。Zep 让 Agent 拥有真正的时间感知能力。

☁️ 产品形态

Zep Cloud 是主要产品(托管服务),Community Edition 已弃用。Graphiti 引擎本身开源可独立使用。

🏗️ Graphiti 引擎架构

Zep 的知识图谱引擎基于 Graphiti 框架构建,这是专门为 LLM Agent 设计的时序知识图谱系统。

📥 自动提取

从对话、文档、业务数据中自动抽取实体和关系,无需手动 schema 定义。支持多源数据融合。

🔗 关系感知检索

Graph RAG 不仅找相似文本,更理解实体间的关系链路,提供更精准的上下文。

⚡ 亚 200ms 延迟

专为实时对话优化,图谱查询和上下文组装在 200ms 内完成,不影响对话流畅性。

🧩 多源上下文

统一组装聊天历史、业务数据、文档、应用事件等多维信息,为 Agent 提供完整上下文。

⏰ 时序感知

Zep 的核心差异化能力是时间维度:每个事实都有 valid_atinvalid_at 时间戳,记录信息的有效期。

2024-01-15 valid_at

用户说:"我在 Google 工作,担任高级工程师。"

2024-06-20 valid_at | 前一条 invalid_at

用户说:"我刚跳槽到 OpenAI 了,做 ML 研究。"

查询: "用户在哪工作?"

→ 当前回答: OpenAI, ML 研究
→ 历史记录: 曾在 Google 担任高级工程师(2024.01 - 2024.06)

# 时间感知查询示例
# Zep 能区分"当前事实"和"历史事实"
facts = zep.graph.search("user employment")
# 返回:
# { "entity": "User", "relation": "works_at", "target": "OpenAI",
#   "valid_at": "2024-06-20", "invalid_at": null }  ← 当前有效
# { "entity": "User", "relation": "works_at", "target": "Google",
#   "valid_at": "2024-01-15", "invalid_at": "2024-06-20" }  ← 已过期

⚖️ Zep vs mem0:图谱 vs 向量

两者都是 Agent 记忆方案,但底层架构理念截然不同:

🕸️ Zep (知识图谱)

  • 存储方式: 图数据库(实体 + 关系)
  • 检索方式: Graph RAG + 关系遍历
  • 时间感知: ✅ 原生支持 valid_at / invalid_at
  • 关系理解: ✅ 深度理解实体间关系
  • 部署: Cloud 优先
  • 延迟: sub-200ms
  • 适合: 复杂关系推理、时间演变追踪

🧠 mem0 (向量存储)

  • 存储方式: 向量数据库(嵌入 + 元数据)
  • 检索方式: 语义相似度搜索
  • 时间感知: ⚠️ 有限(依赖元数据过滤)
  • 关系理解: ❌ 仅文本相似度
  • 部署: 自托管 / Cloud
  • 延迟: 100-500ms
  • 适合: 简单偏好记忆、快速原型

🚀 快速开始

Python — Zep Cloud SDK
from zep_cloud.client import Zep
from zep_cloud.types import Message

client = Zep(api_key="your-api-key")

# 创建用户
client.user.add(user_id="user-1", first_name="Alice")

# 添加记忆(自动提取实体和关系)
client.memory.add(
    user_id="user-1",
    messages=[
        Message(role="user", content="我刚搬到东京,在索尼做游戏开发"),
        Message(role="assistant", content="恭喜你搬到东京!索尼的游戏部门很棒。"),
    ]
)

# 检索记忆(包含知识图谱上下文)
memory = client.memory.get(
    user_id="user-1",
    lastn=10,  # 最近10轮对话
)
print(memory.context)  # 包含图谱推理的完整上下文
Python — Graphiti (开源图谱引擎)
from graphiti_core import Graphiti

# 连接 Neo4j 数据库
graphiti = Graphiti(
    neo4j_uri="bolt://localhost:7687",
    neo4j_user="neo4j",
    neo4j_password="password"
)

# 初始化图谱索引
await graphiti.build_indices_and_constraints()

# 添加事实(自动抽取实体和关系)
await graphiti.add_episode(
    name="conversation-1",
    episode_body="张三是 ABC 公司的 CTO,他上周刚宣布公司完成了 B 轮融资。",
    source="conversation",
    reference_time="2024-06-15"
)

# 搜索(支持时间过滤和关系感知)
results = await graphiti.search(
    query="ABC 公司的融资情况",
    num_results=5
)
for edge in results:
    print(f"{edge.source_node} → {edge.name} → {edge.target_node}")
    print(f"  有效时间: {edge.valid_at} - {edge.invalid_at or '至今'}")

🔗 相关链接