支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Graphiti-构建用于AI代理的实时知识图谱

发布日期:2025-05-09 19:07:00 浏览次数: 1518 作者:三人行AI
推荐语

Graphiti框架,为AI代理打造动态知识图谱,开启交互式AI应用新篇章。

核心内容:
1. Graphiti框架的核心功能与应用场景
2. Graphiti与传统RAG方法的区别及优势
3. Graphiti在Zep AI代理记忆层中的应用与开源意义

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

小贴士

查看Graphiti的新MCP服务器[1]!为Claude、Cursor和其他MCP客户端提供强大的基于知识图谱的记忆功能。

Graphiti简介

Graphiti是一个构建和查询时间感知知识图谱的框架,专门为在动态环境中运行的AI代理量身定制。与传统的检索增强生成(RAG)方法不同,Graphiti不断将用户交互、结构化和非结构化的企业数据以及外部信息整合到一个连贯的、可查询的图谱中。该框架支持增量数据更新、高效检索和精确的历史查询,而无需重新计算整个图谱,使其非常适合开发交互式、上下文感知的AI应用。

使用Graphiti,您可以:

集成并维护动态的用户交互和业务数据。促进基于状态的推理和任务自动化。使用语义、关键词和基于图谱的搜索方法查询复杂且不断发展的数据。

Graphiti temporal walkthrough

知识图谱是一个由互联事实构成的网络,例如“Kendra喜欢Adidas鞋子”。每个事实都是一个由两个实体或节点(“Kendra”,“Adidas鞋子”)以及它们的关系或边(“喜欢”)组成的“三元组”。知识图谱在信息检索中已经得到了广泛的探索。Graphiti的独特之处在于,它能够在处理变化关系并保持历史上下文的同时,自动构建一个知识图谱。

Graphiti与Zep记忆

Graphiti为Zep的AI代理记忆层提供核心支持。

通过使用Graphiti,我们证明了Zep是AI代理记忆领域的最先进技术[2]

阅读我们的论文:Zep: 一种用于代理记忆的时间知识图谱架构[3]

我们很高兴开源Graphiti,并相信它的潜力远超AI记忆应用。

Zep: A Temporal Knowledge Graph Architecture for <a href=Agent Memory" class="rich_pages wxw-img" data-imgfileid="100000766" data-type="png" style="height: auto !important;" data-ratio="0.42962962962962964" data-w="1080" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=110728&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9LNTlSWlAyYkhpYUR1VjFFYkx6UFloOWdVeTEzNmFVZEZzSENnMHhQd1BuTHBEalhsTDB5dllaMW01TGMwYW5HdlZoWm5zSUtVTlQ1UXlGQ2FzaWJlUEh3LzY0MD93eF9mbXQ9cG5nJmFtcA==;from=appmsg">

为什么选择Graphiti?

传统的RAG方法通常依赖于批处理和静态数据摘要,这使得它们在处理频繁变化的数据时效率较低。Graphiti通过提供以下功能来解决这些挑战:

实时增量更新:无需批量重新计算,能够即时集成新的数据片段。双时间模型:明确跟踪事件发生和摄取的时间,允许进行精确的时间点查询。高效的混合检索:结合语义嵌入、关键词检索(BM25)和图遍历,实现低延迟查询,而无需依赖LLM摘要。自定义实体定义:通过简单的Pydantic模型支持灵活的本体创建和开发者定义的实体。可扩展性:通过并行处理高效管理大数据集,适用于企业环境。

Graphiti structured + unstructured demo

Graphiti 和GraphRAG的区别

方面
GraphRAG
Graphiti
主要用途
静态文档摘要
动态数据管理
数据处理
批量处理
持续增量更新
知识结构
实体簇与社区摘要
事件数据、语义实体、社区
检索方法
顺序LLM摘要
混合语义、关键词和基于图的搜索
适应性
时间处理
基本时间戳跟踪
显式双时间跟踪
矛盾处理
LLM驱动的摘要判断
时间边缘失效
查询延迟
秒到几十秒
通常在子秒级别
自定义实体类型
是,可定制
可扩展性
高,针对大数据集进行了优化

Graphiti专门设计用于解决动态和频繁更新的数据集所面临的挑战,使其特别适用于需要实时交互和精确历史查询的应用。

安装

系统要求:

Python 3.10 或更高版本Neo4j 5.26 或更高版本(作为嵌入存储后端)OpenAI API 密钥(用于LLM推理和嵌入)

重要提示

Graphiti 最适用于支持结构化输出的LLM服务(如 OpenAI 和 Gemini)。使用其他服务可能会导致输出模式错误和数据摄取失败。尤其是在使用较小模型时,这个问题更加明显。

可选项:

Google Gemini、Anthropic 或 Groq API 密钥(用于其他LLM提供商)

小贴士

安装 Neo4j 的最简单方法是通过 Neo4j Desktop[4]。它提供了一个用户友好的界面来管理 Neo4j 实例和数据库。

安装 Graphiti

pip install graphiti-core

或者

poetry add graphiti-core

您还可以安装可选的 LLM 提供商作为附加功能:

# 安装支持 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]

快速开始

重要提示

Graphiti 使用 OpenAI 进行LLM推理和嵌入。确保在您的环境中设置了 OPENAI_API_KEY。也支持 Anthropic 和 Groq 的LLM推理。其他LLM提供商也可以通过兼容 OpenAI 的 API 进行支持。

要查看完整的工作示例,请参见 examples 目录中的 Quickstart 示例[5]。该示例展示了:

1.连接到 Neo4j 数据库2.初始化 Graphiti 索引和约束3.向图谱中添加事件(包括文本和结构化 JSON)4.使用混合搜索查找关系(边)5.使用图距离重新排序搜索结果6.使用预定义搜索配方查找节点

该示例有完整文档,清晰解释每项功能,并包含详细的 README,提供了设置说明和后续步骤。

MCP 服务器

mcp_server 目录包含 Graphiti 的模型上下文协议(MCP)服务器实现。该服务器允许 AI 助手通过 MCP 协议与 Graphiti 的知识图谱功能进行交互。

MCP 服务器的关键功能包括:

事件管理(添加、检索、删除)实体管理和关系处理语义和混合搜索功能用于组织相关数据的组管理图谱维护操作

MCP 服务器可以使用 Docker 和 Neo4j 部署,使得将 Graphiti 集成到您的 AI 助手工作流中变得更加简便。

有关详细的设置说明和使用示例,请参见 MCP 服务器的 README 文件[6]

REST 服务

server 目录包含与 Graphiti API 交互的 API 服务。该服务是使用 FastAPI 构建的。

更多信息,请参见服务器的 README 文件。

可选环境变量

除了 Neo4j 和兼容 OpenAI 的凭证外,Graphiti 还具有一些可选的环境变量。如果您使用的是我们支持的模型,如 Anthropic 或 Voyage 模型,必须设置必要的环境变量。

USE_PARALLEL_RUNTIME 是一个可选的布尔变量,如果您希望为我们的多个搜索查询启用 Neo4j 的并行运行时功能,可以将其设置为 true。请注意,该功能不支持 Neo4j 社区版或较小的 AuraDB 实例,因此默认情况下该功能是关闭的。

使用 Graphiti 与 Azure OpenAI

Graphiti 支持 Azure OpenAI 进行 LLM 推理和嵌入。要使用 Azure OpenAI,您需要使用您的 Azure OpenAI 凭证配置 LLM 客户端和嵌入器。

from openai importAsyncAzureOpenAIfrom graphiti_core importGraphitifrom graphiti_core.llm_client importOpenAIClientfrom graphiti_core.embedder.openai importOpenAIEmbedder,OpenAIEmbedderConfigfrom graphiti_core.cross_encoder.openai_reranker_client importOpenAIRerankerClient
# Azure OpenAI 配置api_key ="<your-api-key>"api_version ="<your-api-version>"azure_endpoint ="<your-azure-endpoint>"
# 创建 Azure OpenAI 客户端用于 LLMazure_openai_client =AsyncAzureOpenAI(    api_key=api_key,    api_version=api_version,    azure_endpoint=azure_endpoint)
# 使用 Azure OpenAI 客户端初始化 Graphitigraphiti =Graphiti("bolt://localhost:7687","neo4j","password",    llm_client=OpenAIClient(        client=azure_openai_client),    embedder=OpenAIEmbedder(        config=OpenAIEmbedderConfig(            embedding_model="text-embedding-3-small"# 使用您的 Azure 部署的嵌入模型名称),        client=azure_openai_client),# 可选:使用 Azure OpenAI 配置 OpenAI 交叉编码器    cross_encoder=OpenAIRerankerClient(        client=azure_openai_client))
# 现在您可以使用 Azure OpenAI 与 Graphiti 进行集成

确保用您实际的 Azure OpenAI 凭证替换占位符值,并指定在 Azure OpenAI 服务中部署的正确嵌入模型名称。

使用 Graphiti 与 Google Gemini

Graphiti 支持 Google 的 Gemini 模型进行 LLM 推理和嵌入。要使用 Gemini,您需要使用您的 Google API 密钥配置 LLM 客户端和嵌入器。

安装 Graphiti

poetry add "graphiti-core[google-genai]"
# or
uv add "graphiti-core[google-genai]"
from graphiti_core importGraphitifrom graphiti_core.llm_client.gemini_client importGeminiClient,LLMConfigfrom graphiti_core.embedder.gemini importGeminiEmbedder,GeminiEmbedderConfig
# Google API 密钥配置api_key ="<your-google-api-key>"
# 使用 Gemini 客户端初始化 Graphitigraphiti =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")))
# 现在您可以使用 Google Gemini 与 Graphiti 进行集成

文档

指南和 API 文档[7]快速开始[8]使用 LangChain 的 LangGraph 和 Graphiti 构建代理[9]

贡献

我们鼓励并感谢所有形式的贡献,无论是代码、文档、解决 GitHub 问题,还是在 Graphiti Discord 频道中回答问题。有关代码贡献的详细指南,请参见 CONTRIBUTING[10]

更多信息

本文由笔者翻译整理自:https://github.com/getzep/graphiti?tab=readme-ov-file,如对您有帮助,请点赞、转发,谢谢!

References

[1] Graphiti的新MCP服务器:https://github.com/getzep/graphiti/blob/main/mcp_server/README.md
[2]AI代理记忆领域的最先进技术:https://blog.getzep.com/state-of-the-art-agent-memory/
[3]Zep: 一种用于代理记忆的时间知识图谱架构:https://arxiv.org/abs/2501.13956
[4]Neo4j Desktop:https://neo4j.com/download/
[5]Quickstart 示例:https://github.com/getzep/graphiti/blob/main/examples/quickstart/README.md
[6]README 文件:https://github.com/getzep/graphiti/blob/main/mcp_server/README.md
[7]指南和 API 文档:https://help.getzep.com/graphiti/graphiti/overview
[8]快速开始:https://help.getzep.com/graphiti/graphiti/quick-start
[9]使用 LangChain 的 LangGraph 和 Graphiti 构建代理:https://help.getzep.com/graphiti/graphiti/lang-graph-agent
[10]CONTRIBUTING: https://github.com/getzep/graphiti/blob/main/CONTRIBUTING.md

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询