Graphiti:为 AI Agent 构建“会随时间变化”的知识图谱

最近在研究 Ontology、本体、知识图谱和 AI Agent 的时候,我发现了一个很值得关注的开源项目:
Graphiti。
GitHub:
https://github.com/getzep/graphiti
官方文档:
https://help.getzep.com/graphiti/
Graphiti 是 Zep 开源的一套 Temporal Knowledge Graph Framework,也就是时序知识图谱框架。它主要面向 AI Agent 场景,用来持续构建和查询会随时间变化的知识关系。
如果只看名字,你可能会觉得它就是一个普通的知识图谱项目。
但我觉得它真正有意思的地方是:
它不是只想告诉 AI“世界是什么样的”,而是还想告诉 AI“这个世界以前是什么样、现在又变成了什么样”。
这对于 Agent Memory 来说,非常重要。
一、为什么普通 RAG 不够用了?
现在我们做 AI 应用,最常见的架构基本就是:
用户问题
↓
Embedding
↓
Vector Database
↓
检索相关文档
↓
LLM
↓
回答
这就是典型的 RAG。
RAG 很好用。
但它有一个非常明显的问题:
它更擅长“找相关内容”,不太擅长理解动态关系。
比如用户告诉 AI:
2025 年:
我在 A 公司工作。
2026 年:
我离开 A 公司,加入了 B 公司。
如果直接把这两段话丢进向量数据库,那么数据库里面可能同时存在:
王仕宇 → worksFor → A 公司
王仕宇 → worksFor → B 公司
这时候 AI 就可能懵了。
到底在哪家公司?
如果继续往下:
2026 年 3 月加入 B 公司
2026 年 8 月离开 B 公司
事情就更复杂。
这类问题,本质上已经不是“文本相似度检索”的问题。
而是:
实体、关系和时间的问题。
Graphiti 就是在解决这一类问题。
二、Graphiti 到底是什么?
Graphiti 官方把它定义为:
用于构建 Temporal Knowledge Graph,也就是时序知识图谱的开源框架。
它会把不断进入系统的信息组织成:
Entity
Relationship
Fact
Episode
Time
这些结构。
你可以简单理解成:
聊天记录
业务数据
JSON
文档
外部信息
↓
Graphiti
↓
实体抽取
关系抽取
事实抽取
时间建模
↓
Temporal Knowledge Graph
↓
Agent Memory
传统 Knowledge Graph 比较强调:
A → relation → B
而 Graphiti 进一步强调:
A
↓
relation
↓
B
Valid From: 2025-01-01
Valid To: 2026-03-01
也就是:
这个事实什么时候成立。
三、为什么要有“时间”?
我们举一个非常现实的例子。
假设一个销售 Agent 管理客户关系。
2025 年:
张三
↓ worksFor
阿里巴巴
2026 年:
张三
↓ worksFor
字节跳动
如果是普通 Knowledge Graph,最终可能同时出现:
张三 → worksFor → 阿里巴巴
张三 → worksFor → 字节跳动
这两个事实都是真实发生过的。
但:
它们不是同时成立的。
Graphiti 会把“时间”纳入事实本身。
于是就可以理解成:
2025
张三
↓
阿里巴巴
然后:
2026
张三
↓
字节跳动
这就非常适合 AI Agent。
因为 Agent 不只是需要“记住”。
它还需要知道:
什么时候发生过什么。
四、Graphiti 的核心:Context Graph
Graphiti 现在官方经常使用一个词:
Context Graph。
可以理解成:
为 AI Agent 服务的动态知识图谱。
Graphiti 会持续把新的信息添加进去,而不是每次都把整个知识库重新计算一遍。官方特别强调,它支持实时增量更新,新数据可以持续加入已有的 Context Graph。
因此:
旧方式
10000 条数据
↓
重新构建
↓
10001 条数据
Graphiti 更希望做到:
10000 条数据
↓
新增 1 条 Episode
↓
增量更新 Graph
这件事情对于长期运行的 Agent 非常重要。
因为一个 Agent 的 Memory 不可能永远不变。
五、Episode 是什么?
Graphiti 里面有一个非常重要的概念:
Episode。
可以简单理解成:
一次进入 Agent 世界的信息事件。
比如:
用户:
我最近开始学习 Solana。
这是一个 Episode。
再比如:
CRM:
客户 A 的合同状态变成已签约。
也是一个 Episode。
甚至:
{
"customer": "A",
"status": "paid",
"amount": 10000
}
也可以成为 Episode。
Graphiti 会进一步从 Episode 中抽取:
Entity Node
Entity Edge
Fact
Graphiti / Zep 的图数据结构主要包含实体节点、实体关系边以及 Episode 节点;其中关系边可以携带语义事实。
例如:
Episode:
张三加入了 OpenAI。
最终可能变成:
Entity
张三
OpenAI
以及:
张三
↓ worksFor
OpenAI
六、Graphiti 最有意思的能力:Fact Invalidation
这是我觉得 Graphiti 非常有价值的一个设计。
假设:
1 月:
张三住在北京。
Graph:
张三 → livesIn → 北京
到了 8 月:
张三:
我搬到上海了。
普通系统可能直接再加:
张三 → livesIn → 上海
最终:
北京
↖
张三
↙
上海
不知道哪个是真的。
Graphiti 则会处理事实变化。
类似:
张三 → livesIn → 北京
Valid Until:
2026-08
然后:
张三 → livesIn → 上海
Valid From:
2026-08
也就是说:
旧事实没有被简单删除。
而是:
它曾经正确,但现在已经失效。
Zep 的相关文档也明确描述了 Fact Invalidation:当新的信息使旧事实失效时,系统会记录该事实何时失效。
这个设计非常适合:
CRM
ERP
用户画像
企业组织架构
项目管理
金融信息
个人 AI 助手
Agent Memory
因为这些东西全部都会变化。
七、Bi-Temporal:Graphiti 不只记录一个时间
Graphiti 还有一个更专业的概念:
Bi-Temporal Data Model。
也就是:
双时态模型。
它区分两种时间:
事件实际发生时间
系统知道这件事的时间
举个例子。
今天是:
8 月 21 日
用户告诉 Agent:
我 8 月 1 日就离职了。
那么:
事件发生时间:
8 月 1 日
系统知道时间:
8 月 21 日
这是两件完全不同的事情。
这就是 Bi-Temporal。
对于历史查询非常重要。
比如你问:
8 月 10 日的时候,
系统认为张三在哪家公司?
和:
张三 8 月 10 日实际上在哪家公司?
答案可能完全不同。
Graphiti 的设计中明确包含这类双时态建模,用于区分事实有效时间和系统记录时间。
八、Graphiti 不只是图查询
如果只是 Knowledge Graph:
很多人第一反应是:
Neo4j
Cypher
Graph Traversal
但 Graphiti 并不是只做 Graph Search。
它同时支持:
Semantic Search
Keyword Search
Graph Search
Temporal Search
官方的搜索文档里提到,它的 Hybrid Search 会结合语义相似度和 BM25,然后使用 Reciprocal Rank Fusion 做结果融合;还可以基于某个实体节点的图距离重新排序。
所以查询流程更像:
Query
│
┌────────┼────────┐
↓ ↓ ↓
Semantic BM25 Graph
│ │ │
└────────┼────────┘
↓
Rerank
↓
Facts
这比单纯:
Vector Search
丰富很多。
九、为什么 Graphiti 特别适合 Agent Memory?
现在做 Agent Memory,最简单的方法就是:
聊天记录
↓
数据库
稍微高级一点:
聊天记录
↓
Embedding
↓
Vector DB
再高级一点:
聊天记录
↓
LLM Summary
↓
Memory
但这些方案都有问题。
比如:
用户喜欢苹果电脑
过了一段时间:
用户开始使用 Windows。
又过一段时间:
用户现在主要使用 Linux。
Agent Memory 不能简单变成:
喜欢 Mac
喜欢 Windows
喜欢 Linux
真正有意义的 Memory 应该是:
2024
Mac
↓
2025
Windows
↓
2026
Linux
这正是 Temporal Knowledge Graph 擅长处理的东西。
因此 Graphiti 的一个核心应用场景就是:
长期 Agent Memory。
十、Graphiti 和 Ontology 有什么关系?
严格来说:
Graphiti 不是 Protégé 那种传统 OWL Ontology 工具。
但它非常值得放到 Ontology 体系里讨论。
因为 Graphiti 支持开发者定义自己的 Entity 类型。
比如一个电商系统:
User
Product
Order
Supplier
Payment
并定义它们可能存在的业务结构。
这实际上已经在做:
Domain Ontology。
例如:
User
│
├─ creates → Order
│
└─ owns → Account
Order
│
├─ contains → Product
├─ paidBy → Payment
└─ suppliedBy → Supplier
传统 Ontology 更强调:
世界有什么东西?
Graphiti 更进一步:
这些东西之间现在是什么关系?
这些关系以前是什么?
这些关系什么时候发生变化?
所以我更愿意把它理解成:
面向 AI Agent 的动态 Ontology / Context Graph。
十一、自定义 Entity:让 Agent 理解你的业务
Graphiti 支持自定义实体类型,这一点特别有意思。
官方文档将 Custom Entities 作为核心能力之一,可以通过开发者定义的实体类型来约束和改善知识表示。
比如做一个 CRM Agent。
你可以定义:
Customer
Company
Salesperson
Contract
Product
然后让 Graphiti 从:
邮件
CRM
聊天记录
合同
会议纪要
里面不断抽取这些实体。
最终:
Salesperson
│
↓ manages
Customer
│
↓ worksFor
Company
│
↓ signed
Contract
│
↓ contains
Product
这就已经不是简单的 RAG。
而是在逐渐形成一个:
业务世界模型。
十二、安装 Graphiti
Graphiti 主要使用 Python。
官方当前 Quick Start 的基础要求包括:
Python 3.10+
Neo4j 5.26+
或 FalkorDB 1.1.2+
LLM / Embedding Provider
默认可以使用 OpenAI,同时文档也列出了 Azure OpenAI、Gemini、Anthropic、Groq,以及通过 Ollama 使用本地模型等选择。
安装非常简单:
pip install graphiti-core
如果使用 uv:
uv add graphiti-core
十三、为什么需要 Neo4j?
因为 Graphiti 最终构建的是:
Graph
而不是纯文本。
假设:
王仕宇
↓ develops
Project A
然后:
Project A
↓ uses
PostgreSQL
再:
PostgreSQL
↓ belongsTo
Database
这类关系非常适合使用图数据库存储。
于是 Agent 可以进行:
王仕宇
↓
开发了哪些项目?
↓
这些项目使用哪些数据库?
甚至进一步:
使用 PostgreSQL 的项目有哪些?
这就属于典型 Graph Traversal。
十四、一个最简单的 Graphiti 思路
一个应用可以这样设计:
User
│
↓
AI Agent
│
┌───────┴───────┐
↓ ↓
LLM Graphiti
│
↓
Knowledge Graph
│
┌─────┴─────┐
↓ ↓
Neo4j Embedding
用户说:
我最近正在开发一个支付平台。
Graphiti 记录:
User
↓ develops
Payment Platform
后来:
支付平台现在使用 PostgreSQL。
Graph:
Payment Platform
↓ uses
PostgreSQL
再后来:
数据库换成 MySQL 了。
于是:
PostgreSQL
Valid Until: XXX
MySQL
Valid From: XXX
Agent 下一次再回答时,就不是简单地从聊天记录里“猜”。
而是在读取:
当前有效的事实。
十五、Graphiti + MCP 会非常有意思
Graphiti 官方现在也提供了 MCP Server。
这意味着:
Claude Code
Cursor
Codex
AI Agent
理论上都可以通过 MCP 接入知识图谱能力。Graphiti 官方文档也专门提供了 Graphiti MCP Server 的入口,用于让 Claude Desktop、Cursor 等 AI 工具连接到 Graphiti。
整个架构可以变成:
Codex / Claude Code
│
↓
MCP
│
↓
Graphiti
│
↓
Temporal Knowledge Graph
然后 Coding Agent 可以真正拥有:
项目历史
架构变化
技术决策
Bug 记录
开发习惯
业务知识
而不只是读取当前目录里的几个 Markdown 文件。
这个方向我觉得非常值得研究。
十六、Graphiti vs 普通 Vector RAG
可以简单对比一下。
| 能力 | Vector RAG | Graphiti |
|---|---|---|
| 文本语义检索 | 强 | 支持 |
| Keyword Search | 部分 | 支持 |
| 实体关系 | 弱 | 强 |
| Graph Traversal | 不擅长 | 支持 |
| 时间变化 | 弱 | 核心能力 |
| 历史状态 | 很难 | 支持 |
| Fact Invalidation | 通常没有 | 支持 |
| Agent Memory | 可以 | 非常适合 |
| 动态业务数据 | 一般 | 很适合 |
| Context Graph | 没有 | 核心概念 |
所以它不是完全取代 RAG。
更准确地说:
Graphiti
=
Graph
+
Semantic Retrieval
+
Temporal Memory
+
Agent Context
十七、Graphiti 和 Zep 是什么关系?
很多人看到 Graphiti 之后,会同时看到:
Zep
两者不要混淆。
可以简单理解:
Graphiti
开源框架
而:
Zep
商业化、托管化、企业级 Agent Memory 平台
官方现在的定位也非常清楚:
Graphiti 负责构建 Temporal Context Graph;Zep 则把这套能力做成可以大规模运行的 Agent Memory 系统。
因此如果你只是研究原理、自己部署:
Graphiti 更值得看。
如果你希望快速做生产系统:
Zep 更省事。
十八、我觉得它真正有价值的地方
我觉得 Graphiti 最值得关注的,并不是:
又多了一个知识图谱框架
而是它体现了一个越来越明显的趋势:
Agent Memory 正在从“保存聊天记录”,走向“维护一个不断变化的世界模型”。
第一代:
Conversation History
第二代:
Vector Memory
第三代:
Structured Memory
再往后:
Temporal Knowledge Graph
最终可能变成:
Context Graph
也就是说:
Agent 不再只是“记住几句话”。
而是拥有:
Entity
Relationship
Fact
Time
History
State
这样一个持续变化的世界。
十九、Ontology + Graphiti + Agent
如果进一步往 Ontology 方向走,我觉得一个非常值得研究的架构是:
Ontology
│
定义领域概念、关系和规则
│
↓
Graphiti
│
动态事实与时间
│
↓
Temporal Knowledge Graph
│
┌────────────┼────────────┐
↓ ↓ ↓
RAG Memory Reasoning
│ │ │
└────────────┼────────────┘
↓
Agent
Ontology 定义:
世界应该是什么样。
Graphiti 维护:
世界现在是什么样。
LLM 负责:
根据这个世界做推理。
Agent 负责:
在这个世界里采取行动。
我觉得这个组合非常有想象空间。
二十、一个更现实的应用:企业 AI Agent
假设未来做一个企业 Agent。
企业里面有:
员工
客户
订单
产品
项目
合同
付款
供应商
文档
系统
传统 RAG:
全部切 Chunk
↓
Embedding
↓
Vector DB
Ontology + Graphiti:
企业 Ontology
│
↓
┌────────────────┼────────────────┐
↓ ↓ ↓
CRM ERP Documents
│ │ │
└────────────────┼────────────────┘
↓
Graphiti
↓
Temporal Knowledge Graph
↓
AI Agent
于是 Agent 不仅知道:
合同里写了什么。
还知道:
合同属于哪个客户
客户属于哪个公司
哪个公司由哪个销售负责
这个合同什么时候签署
合同现在是否有效
付款状态什么时候改变
当前负责人是谁
这才真正开始接近:
Enterprise AI Agent。
总结
如果只用一句话介绍 Graphiti:
Graphiti 是一个面向 AI Agent 的开源时序知识图谱框架,它试图让 AI 不只是记住事实,还能够理解事实之间的关系以及这些事实如何随时间变化。
我认为值得重点关注的几个关键词是:
Temporal Knowledge Graph
Context Graph
Agent Memory
GraphRAG
Fact Invalidation
Bi-Temporal Model
Ontology
MCP
AI Agent
传统 RAG 解决的是:
帮 AI 找到相关信息。
知识图谱解决的是:
帮 AI 理解信息之间的关系。
Temporal Knowledge Graph 更进一步解决:
帮 AI 理解这些关系如何随时间发生变化。
而 Ontology 则负责:
告诉 AI,这个世界从结构上应该怎么被理解。
所以如果把这些技术串起来:
Ontology
↓
Knowledge Graph
↓
Temporal Knowledge Graph
↓
Agent Memory
↓
Context Graph
↓
AI Agent
我觉得这可能会是未来几年非常值得关注的一条技术路线。
现在是最好的时代。中国有全世界最高性价比的制造业,有发达的网络和全球物流。
只要你愿意,你几乎可以买到这个世界上任何地方生产的、任何你想要的商品。你可以用很低的成本,撬动全球的资源为你服务。
不过,真正稀缺的,从来不是商品,而是注意力、判断力,以及把事情做成的能力。
所以,这是最好的时代,也是最坏的时代。
我是王仕宇,关注 AI、Web3 与开源,持续探索如何把技术做成产品,把产品转化为真实价值。
更多推荐


所有评论(0)