Graphiti:基于LLM的时序知识图谱框架
Graphiti 是一个专为 AI 代理构建和查询时序上下文图的开源框架。它区别于静态知识图谱,能跟踪事实如何随时间演变,维护数据来源溯源,并支持预定义与学习型本体,使其适用于处理不断变化的真实世界数据。
核心概念:上下文图
上下文图是一个包含实体、关系和事实的时序图。每个事实(如“Kendra喜欢阿迪达斯鞋(截至2026年3月)”)都有一个有效期:它何时变为真,以及何时被取代。实体随时间演变并更新摘要。所有信息都可追溯到剧集——产生它的原始数据。
主要组成部分:
- 实体:随时间更新摘要的人、产品、政策、概念等。
- 事实/关系:带有有效期的三元组(实体 → 关系 → 实体)。
- 剧集:摄入的原始数据流,是所有衍生事实的溯源依据。
- 自定义类型:通过 Pydantic 模型定义的实体和关系类型。
核心优势与对比
Graphiti 旨在解决传统 RAG(检索增强生成)方法在处理动态数据时的不足。
与传统 RAG 相比:
- 时序事实管理:事实被失效而非删除,可查询当前或历史任一时间点的真相。
- 增量图构建:新数据实时集成,无需批量重新计算。
- 混合检索:结合语义嵌入、关键词(BM25)和图遍历,实现低延迟、高精度查询。
- 溯源性:每个事实都追溯到产生它的原始剧集。
与 GraphRAG 对比:
Graphiti 专注于动态演化上下文,而非静态文档摘要。
- 数据处理:支持持续、增量更新(GraphRAG 为批处理)。
- 知识结构:构建带有时效性窗口和溯源的时序上下文图。
- 检索方法:采用混合搜索,而非依赖 LLM 的顺序摘要。
- 性能:通常支持亚秒级查询延迟。
- 可扩展性:针对大数据集优化,扩展性高。
与 Zep 的关系
Graphiti 是 Zep 用于 AI 代理的上下文基础设施的核心开源时序上下文图引擎。
- Graphiti:开源框架,用于构建和查询单个上下文图。
- Zep:托管的上下文图基础设施,提供大规模治理、低延迟检索、开发者工具和企业级功能。适用于希望开箱即用、有企业支持的用户;Graphiti 则适合希望拥有灵活核心并自行构建外围系统的开发者。
安装与使用
基本要求:Python 3.10+,兼容的数据库(Neo4j 5.26、FalkorDB 1.1.2、Kuzu 0.11.2 或 Amazon Neptune),以及 OpenAI API 密钥(默认用于 LLM 推理和嵌入)。
安装:
# 核心安装
pip install graphiti-core
# 按数据库支持安装(例如 FalkorDB)
pip install graphiti-core[falkordb]
# 按 LLM 提供商安装(例如 Anthropic)
pip install graphiti-core[anthropic]
数据库配置:
支持多种数据库后端,可通过自定义驱动程序实例化数据库连接,并传递给 Graphiti 构造函数。
# Neo4j 自定义数据库示例
from graphiti_core.driver.neo4j_driver import Neo4jDriver
driver = Neo4jDriver(uri="bolt://localhost:7687", user="neo4j", password="password", database="my_custom_database")
graphiti = Graphiti(graph_driver=driver)
支持其他 LLM 提供商:
- Azure OpenAI:使用
AsyncOpenAI 客户端配合 Azure v1 API 端点。
- Google Gemini:配置
GeminiClient、GeminiEmbedder 和 GeminiRerankerClient。
- Ollama(本地 LLM):使用
OpenAIGenericClient 和本地模型。
其他信息
- 遥测:收集匿名使用统计数据以改进框架,绝不收集个人信息、API 密钥或用户数据。可通过环境变量
GRAPHITI_TELEMETRY_ENABLED=false 禁用。
- 快速开始:提供示例展示如何连接数据库、添加剧集、执行混合搜索等。
- 部署:支持通过 Docker Compose 快速启动数据库服务。提供 MCP 服务器和 REST API 服务以便集成。
- 贡献与支持:欢迎通过代码、文档等方式贡献,可在 Discord 的 #Graphiti 频道获取支持。