[!NOTE]
我们正在招聘! 构建为可靠、个性化、快速的生产级 AI 智能体提供动力的上下文图谱。
加入我们,一起构建未来——我们正在招聘工程师和开发者关系专家。查看开放职位。
⭐ 帮助我们触达更多开发者,壮大 Graphiti 社区。给这个仓库点个星吧!
[!TIP]
快来体验全新的 Graphiti MCP 服务器!为 Claude、Cursor 及其他 MCP 客户端提供具备时序感知能力的强大上下文图谱记忆。
Graphiti 是一个用于为 AI 智能体构建和查询时序上下文图谱的框架。与静态知识图谱不同,Graphiti 的上下文图谱追踪事实如何随时间变化,维护数据来源的溯源信息,并支持预设和学习的本体论——使其专为处理不断演化的真实世界数据的智能体而设计。
与传统检索增强生成(RAG)方法不同,Graphiti 持续将用户交互、结构化和非结构化的企业数据以及外部信息整合到一个连贯、可查询的图谱中。该框架支持增量数据更新、高效检索和精确的历史查询,无需完整的图谱重新计算,适合开发交互式、上下文感知的 AI 应用。
使用 Graphiti 可以:
上下文图谱 是一个由实体、关系和事实构成的时序图谱——例如 "Kendra 喜欢阿迪达斯鞋子(截至 2026 年 3 月)"。与传统知识图谱不同,上下文图谱中的每个事实都有一个有效时间窗口:它何时变为真,以及何时(如果存在)被取代。实体随时间演化,并带有更新的摘要。一切都追溯到 事件——产生它的原始数据。
Graphiti 的独特之处在于其能够从非结构化和结构化数据中自主构建上下文图谱,处理变化的关系,同时保留完整的时序历史。
一个上下文图谱包含:
| 组件 | 存储内容 |
|---|---|
| 实体(节点) | 人员、产品、政策、概念——其摘要随时间演化 |
| 事实 / 关系(边) | 带有时间有效性窗口的三元组(实体 → 关系 → 实体) |
| 事件(溯源) | 作为摄入的原始数据——真实数据流。每个衍生的事实都追溯至此 |
| 自定义类型(本体论) | 通过 Pydantic 模型定义的开发者自定义实体和边类型 |
Graphiti 是 Zep 为 AI 智能体提供的上下文基础设施核心的开源时序上下文图谱引擎。Zep 大规模管理上下文图谱,为生产级智能体部署提供受管控、低延迟的上下文检索和组装。
使用 Graphiti,我们已经证明 Zep 是 智能体记忆领域的 State of the Art。
阅读我们的论文:Zep: A Temporal Knowledge Graph Architecture for Agent Memory。
我们很高兴能开源 Graphiti,相信其作为上下文图谱引擎的潜力远不止于记忆应用。
| 方面 | Zep | Graphiti |
|---|---|---|
| 它们是什么 | 用于 AI 智能体的托管上下文图谱基础设施 | 开源时序上下文图谱引擎 |
| 上下文图谱 | 通过治理管理大量按用户/实体的上下文图谱 | 构建和查询单个上下文图谱 |
| 用户与会话管理 | 内置用户、线程和消息存储 | 自行构建 |
| 检索与性能 | 预配置、生产就绪的检索,大规模下性能低于 200 毫秒 | 需要自定义实现;性能取决于你的设置 |
| 开发者工具 | 带有图谱可视化、调试日志、API 日志的仪表板;Python、TypeScript 和 Go 的 SDK | 自行构建工具 |
| 企业级功能 | SLA、支持、安全保证 | 自管理 |
| 部署 | 完全托管或在你的云中 | 仅限自托管 |
选择 Zep,如果你想要一个开箱即用、企业级的平台,内置安全、性能和支持。
选择 Graphiti,如果你想要一个灵活的开源核心,并且愿意构建/运维周边系统。
传统的 RAG 方法通常依赖于批处理和静态数据摘要,这使得它们在处理频繁变化的数据时效率低下。Graphiti 通过提供以下功能来解决这些挑战:
| 方面 | GraphRAG | Graphiti |
|---|---|---|
| 主要用途 | 静态文档摘要 | 为智能体提供动态、演化的上下文 |
| 数据处理 | 面向批处理 | 持续、增量更新 |
| 知识结构 | 实体聚类和社区摘要 | 时序上下文图谱——具有有效性窗口的实体、事实、事件、社区 |
| 检索方法 | 顺序 LLM 摘要 | 混合语义、关键词和图谱搜索 |
| 适应性 | 低 | 高 |
| 时序处理 | 基本时间戳追踪 | 显式的双时序追踪,自动事实失效 |
| 矛盾处理 | LLM 驱动的摘要判断 | 自动事实失效,保留时序历史 |
| 查询延迟 | 数秒到数十秒 | 通常亚秒级延迟 |
| 自定义实体类型 | 否 | 是,可通过 Pydantic 模型自定义 |
| 可扩展性 | 中等 | 高,针对大型数据集优化 |
Graphiti 专门设计用于应对动态和频繁更新数据集的挑战,使其特别适合需要实时交互和精确历史查询的应用。
要求:
[!IMPORTANT]
Graphiti 与支持结构化输出(如 OpenAI 和 Gemini)的 LLM 服务配合效果最佳。
使用其他服务可能导致输出模式不正确和摄入失败。在使用较小模型时,这个问题尤其突出。
可选:
[!TIP]
安装 Neo4j 最简单的方法是通过 Neo4j Desktop。它提供了一个用户友好的界面来管理 Neo4j 实例和数据库。
或者,你可以通过 Docker 在本地使用 FalkorDB,并立即开始快速入门示例:
docker run -p 6379:6379 -p 3000:3000 -it --rm falkordb/falkordb:latest
pip install graphiti-core
或
uv add graphiti-core
如果你计划使用 FalkorDB 作为图谱数据库后端,请安装带有 FalkorDB 额外依赖的版本:
pip install graphiti-core[falkordb]
# 或使用 uv
uv add graphiti-core[falkordb]
如果你计划使用 Kuzu 作为图谱数据库后端,请安装带有 Kuzu 额外依赖的版本:
pip install graphiti-core[kuzu]
# 或使用 uv
uv add graphiti-core[kuzu]
如果你计划使用 Amazon Neptune 作为图谱数据库后端,请安装带有 Amazon Neptune 额外依赖的版本:
pip install graphiti-core[neptune]
# 或使用 uv
uv add graphiti-core[neptune]
# 安装 Anthropic 支持
pip install graphiti-core[anthropic]
# 安装 Groq 支持
pip install graphiti-core[groq]
# 安装 Google Gemini 支持
pip install graphiti-core[google-genai]
# 安装多个提供商
pip install graphiti-core[anthropic,groq,google-genai]
# 安装 FalkorDB 和 LLM 提供商
pip install graphiti-core[falkordb,anthropic,google-genai]
# 安装 Amazon Neptune
pip install graphiti-core[neptune]
Graphiti 的摄入管道设计为高并发。默认情况下,并发设置较低,以避免 LLM 提供商的 429 速率限制错误。如果你觉得 Graphiti 速度慢,请按照以下说明增加并发。
并发由 SEMAPHORE_LIMIT 环境变量控制。默认情况下,SEMAPHORE_LIMIT 设置为 10 个并发操作,以帮助防止来自你的 LLM 提供商的 429 速率限制错误。如果遇到此类错误,请尝试降低此值。
如果你的 LLM 提供商允许更高的吞吐量,你可以增加 SEMAPHORE_LIMIT 以提高事件摄入性能。
[!IMPORTANT]
Graphiti 默认使用 OpenAI 进行 LLM 推理和嵌入。请确保在你的环境中设置了OPENAI_API_KEY。
也支持使用 Anthropic 和 Groq 进行 LLM 推理。其他 LLM 提供商可能通过 OpenAI 兼容的 API 得到支持。
有关完整的工作示例,请参阅示例目录中的 快速入门示例。该快速入门演示了:
该示例有完整的文档说明,清晰地解释了每个功能,并包含一个全面的 README,其中包含设置说明和后续步骤。
你可以使用 Docker Compose 快速启动所需服务:
bash
docker compose up
这将启动 Neo4j Docker 服务及相关组件。
bash
docker compose --profile falkordb up
这将启动 FalkorDB Docker 服务及相关组件。
mcp_server 目录包含 Graphiti 的模型上下文协议(MCP)服务器实现。该服务器允许 AI 助手通过 MCP 协议与 Graphiti 的上下文图谱功能进行交互。
MCP 服务器的关键功能包括:
MCP 服务器可以使用 Docker 与 Neo4j 一起部署,使得将 Graphiti 集成到你的 AI 助手工作流中变得容易。
有关详细的设置说明和使用示例,请参阅 MCP 服务器 README。
server 目录包含一个用于与 Graphiti API 交互的 API 服务。它是使用 FastAPI 构建的。
更多信息请参阅 服务器 README。
除了 Neo4j 和 OpenAi 兼容的凭证外,Graphiti 还有一些可选的环境变量。
如果你正在使用我们支持的模型之一,例如 Anthropic 或 Voyage 模型,则必须设置必要的环境变量。
数据库名称直接在驱动程序构造函数中配置:
neo4j(在 Neo4jDriver 中硬编码)default_db(在 FalkorDriver 中硬编码)从 v0.17.0 开始,如果你需要自定义数据库配置,可以实例化一个数据库驱动程序,并使用 graph_driver 参数将其传递给 Graphiti 构造函数。
from graphiti_core import Graphiti
from graphiti_core.driver.neo4j_driver import Neo4jDriver
# 创建带有自定义数据库名称的 Neo4j 驱动程序
driver = Neo4jDriver(
uri="bolt://localhost:7687",
user="neo4j",
password="password",
database="my_custom_database" # 自定义数据库名称
)
# 将驱动程序传递给 Graphiti
graphiti = Graphiti(graph_driver=driver)
from graphiti_core import Graphiti
from graphiti_core.driver.falkordb_driver import FalkorDriver
# 创建带有自定义数据库名称的 FalkorDB 驱动程序
driver = FalkorDriver(
host="localhost",
port=6379,
username="falkor_user", # 可选
password="falkor_password", # 可选
database="my_custom_graph" # 自定义数据库名称
)
# 将驱动程序传递给 Graphiti
graphiti = Graphiti(graph_driver=driver)
from graphiti_core import Graphiti
from graphiti_core.driver.kuzu_driver import KuzuDriver
# 创建 Kuzu 驱动程序
driver = KuzuDriver(db="/tmp/graphiti.kuzu")
# 将驱动程序传递给 Graphiti
graphiti = Graphiti(graph_driver=driver)
from graphiti_core import Graphiti
from graphiti_core.driver.neptune_driver import NeptuneDriver
# 创建 Neptune 驱动程序
driver = NeptuneDriver(
host='<NEPTUNE_ENDPOINT>',
aoss_host='<AMAZON_OPENSEARCH_SERVERLESS_HOST>',
port=8182, # 可选,默认为 8182
aoss_port=443, # 可选,默认为 443
)
# 将驱动程序传递给 Graphiti
graphiti = Graphiti(graph_driver=driver)
想要贡献一个新的图谱后端?请参阅 添加图谱驱动程序。