Graphiti
Build Real-Time Knowledge Graphs for AI Agents
  
  
:星: _帮助我们接触到更多的开发人员,并发展Graphiti社区。星这个回购!_
\[!提示\] 看看新的 Graphiti的MCP服务器!为Claude、Cursor和其他MCP客户端提供强大的基于知识图的内存。
Graphiti是一个用于构建和查询时间感知知识图的框架,专为在动态环境中运行的AI代理量身定制。与传统的检索增强生成(RAG)方法不同,Graphiti不断地将用户交互、结构化和非结构化企业数据以及外部信息集成到一个连贯的、可查询的图中。该框架支持增量数据更新、高效检索和精确的历史查询,而不需要完整的图重新计算,使其适合开发交互式、上下文感知的人工智能应用程序。
使用Graphiti可以:
- 集成和维护动态用户交互和业务数据。
- 促进代理的基于状态的推理和任务自动化。
- 使用语义、关键字和基于图的搜索方法查询复杂、不断变化的数据。
知识图谱是一个由相互关联的事实组成的网络,例如 _“肯德拉喜欢阿迪达斯的鞋子。”_ 每个事实都是由两个实体表示的“三元组”,或 节点(“肯德拉”、“阿迪达斯鞋”)及其关系,或边缘(“爱”)。知识图谱已被探索 广泛用于信息检索。Graphiti的独特之处在于它能够自主构建知识图 同时处理不断变化的关系并维护历史背景。
Graphiti和Zep存储器
Graphiti为核心提供动力 Zep的存储层 AI代理。
使用Graphiti,我们已经证明了Zep是 这 Agent记忆的最新进展.
阅读我们的论文: Zep:一种用于代理内存的时态知识图架构.
我们很高兴开源Graphiti,相信它的潜力远远超出了人工智能内存应用程序。
为什么选择Graphiti?
传统的RAG方法通常依赖于批处理和静态数据摘要,这使得它们对频繁变化的数据效率低下。Graphiti通过提供以下服务来应对这些挑战:
- 实时增量更新: 无需批量重新计算,即可立即整合新的数据集。
- 双时态数据模型: 显式跟踪事件发生和摄入时间,允许准确的时间点查询。
- 高效的混合检索: 结合语义嵌入、关键字(BM25)和图遍历,在不依赖LLM摘要的情况下实现低延迟查询。
- 自定义实体定义: 通过简单的Pydantic模型灵活创建本体并支持开发人员定义的实体。
- 可扩展性: 通过并行处理高效管理大型数据集,适用于企业环境。
Graphiti与GraphRAG
| 特性 | GraphRAG | Graphti |
|---|---|---|
| 主要用途 | 静态文档摘要 | 动态数据管理 |
| 数据处理 | 面向批处理 | 连续、增量更新 |
| 知识结构 | 实体集群和社区摘要 | 情景数据、语义实体、社区 |
| 检索方法 | 顺序LLM摘要 | 混合语义、关键字和基于图的搜索 |
| 适应性 | 低 | 高 |
| 临时处理 | 基本时间戳跟踪 | 显式双时态跟踪 |
| 矛盾处理 | LLM驱动的摘要判断 | 时间边缘失效 |
| 查询延迟 | 秒到几十秒 | 通常为亚秒级延迟 |
| 自定义实体类型 | 否 | 是,可定制 |
| 可扩展性 | 中等 | 高,针对大型数据集进行了优化 |
Graphiti专门用于应对动态和频繁更新的数据集的挑战,使其特别适合需要实时交互和精确历史查询的应用程序。
安装
要求:
- Python 3.10或更高版本
- Neo4j 5.26或更高版本(作为嵌入式存储后端)
- OpenAI API密钥(用于LLM推理和嵌入)
\[!重要\] Graphiti最适合支持结构化输出的LLM服务(如OpenAI和Gemini)。 使用其他服务可能会导致不正确的输出模式和摄入失败。这尤其 使用较小型号时会出现问题。
可选:
- Google Gemini、Anthropic或Groq API密钥(适用于替代LLM提供商)
\[!提示\] 安装Neo4j最简单的方法是通过 Neo4j桌面。它提供了一个用户友好的 用于管理Neo4j实例和数据库的接口。
pip install graphiti-core或
poetry add graphiti-core您还可以额外安装可选的LLM提供程序:
# Install with Anthropic support
pip install graphiti-core[anthropic]
# Install with Groq support
pip install graphiti-core[groq]
# Install with Google Gemini support
pip install graphiti-core[google-genai]
# Install with multiple providers
pip install graphiti-core[anthropic,groq,google-genai]快速开始
\[!重要\] Graphiti使用OpenAI进行LLM推理和嵌入。确保 OPENAI_API_KEY 设置在您的环境中。 对Anthropic和Groq LLM推理的支持也是可用的。其他LLM提供商可能通过OpenAI获得支持 兼容的API。有关完整的工作示例,请参阅 快速入门示例 在示例目录中。快速入门演示了:
- 连接到Neo4j数据库
- 初始化Graphiti索引和约束
- 在图表中添加剧集(文本和结构化JSON)
- 使用混合搜索搜索关系(边)
- 使用图距离重新排列搜索结果
- 使用预定义的搜索配方搜索节点
该示例有完整的文档,对每个功能都有清晰的解释,并包括一个全面的README,其中包含设置说明和下一步。
MCP服务器
这 mcp_server 目录包含Graphiti的模型上下文协议(MCP)服务器实现。该服务器允许AI助手通过MCP协议与Graphiti的知识图功能进行交互。
MCP服务器的主要功能包括:
- 事件管理(添加、检索、删除)
- 实体管理和关系处理
- 语义和混合搜索功能
- 用于组织相关数据的组管理
- 图形维护操作
MCP服务器可以使用Docker和Neo4j进行部署,从而可以轻松地将Graphiti集成到您的AI助手工作流程中。
有关详细的设置说明和使用示例,请参阅 MCP服务器自述文件.
REST服务
这 server 目录包含用于和Graphiti API交互的API服务。它是使用FastAPI构建的。
请查看 服务器README 了解更多信息。
可选环境变量
除了Neo4j和OpenAi兼容的证书外,Graphiti还有一些可选的环境变量。 如果您使用的是我们支持的模型之一,如Anthropic或Voyage模型,则需要必要的环境变量 必须设置。
USE_PARALLEL_RUNTIME 是一个可选的布尔变量,如果你愿意,可以将其设置为true 为我们的几个搜索查询启用Neo4j的并行运行时功能。 请注意,Neo4j社区版或较小的AuraDB实例不支持此功能, 因此,默认情况下此功能处于关闭状态。
在Azure OpenAI中使用Graphiti
Graphiti支持Azure OpenAI用于LLM推理和嵌入。要使用Azure OpenAI,您需要使用您的Azure OpenAI凭据配置LLM客户端和嵌入器。
from openai import AsyncAzureOpenAI
from graphiti_core import Graphiti
from graphiti_core.llm_client import OpenAIClient
from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig
from graphiti_core.cross_encoder.openai_reranker_client import OpenAIRerankerClient
# Azure OpenAI configuration
api_key = ""
api_version = ""
azure_endpoint = ""
# Create Azure OpenAI client for LLM
azure_openai_client = AsyncAzureOpenAI(
api_key=api_key,
api_version=api_version,
azure_endpoint=azure_endpoint
)
# Initialize Graphiti with Azure OpenAI clients
graphiti = Graphiti(
"bolt://localhost:7687",
"neo4j",
"password",
llm_client=OpenAIClient(
client=azure_openai_client
),
embedder=OpenAIEmbedder(
config=OpenAIEmbedderConfig(
embedding_model="text-embedding-3-small" # Use your Azure deployed embedding model name
),
client=azure_openai_client
),
# Optional: Configure the OpenAI cross encoder with Azure OpenAI
cross_encoder=OpenAIRerankerClient(
client=azure_openai_client
)
)
# Now you can use Graphiti with Azure OpenAI确保用实际的Azure OpenAI凭据替换占位符值,并指定部署在Azure OpenAI服务中的正确嵌入模型名称。
在Google Gemini中使用Graphiti
Graphiti支持谷歌的Gemini模型,用于LLM推理和嵌入。要使用Gemini,您需要使用Google API密钥配置LLM客户端和嵌入程序。
安装Graphiti:
poetry add "graphiti-core[google-genai]"
# or
uv add "graphiti-core[google-genai]"from graphiti_core import Graphiti
from graphiti_core.llm_client.gemini_client import GeminiClient, LLMConfig
from graphiti_core.embedder.gemini import GeminiEmbedder, GeminiEmbedderConfig
# Google API key configuration
api_key = ""
# Initialize Graphiti with Gemini clients
graphiti = Graphiti(
"bolt://localhost:7687",
"neo4j",
"password",
llm_client=GeminiClient(
config=LLMConfig(
api_key=api_key,
model="gemini-2.0-flash"
)
),
embedder=GeminiEmbedder(
config=GeminiEmbedderConfig(
api_key=api_key,
embedding_model="embedding-001"
)
)
)
# Now you can use Graphiti with Google Gemini文档
现状和路线图
Graphiti正在积极开发中。我们的目标是保持API的稳定性,同时致力于:
- \[x\] 支持自定义图形模式:
- 允许开发人员在摄取剧集时提供自己定义的节点和边缘类 - 实现针对特定用例量身定制的更灵活的知识表示
- \[x\] 通过更强大和可配置的选项增强检索能力
- \[x\] Graphiti MCP服务器
- \[\]扩大测试覆盖范围以确保可靠性并抓住边缘情况
贡献
我们鼓励并感谢所有形式的贡献,无论是代码、文档、解决GitHub问题,还是 在Graphiti Discord频道回答问题。有关代码贡献的详细指南,请参阅 向 贡献.
支持
加入 Zep Discord服务器 然后前往 #图形 频道!
