Graphiti:一个用于构建和查询实时知识图谱的框架

Graphiti:一个用于构建和查询实时知识图谱的框架

文章来源:智汇AI    发布时间:8369-06-08

Graphiti 是一个用来构建和查询知识图谱的工具,它能处理动态变化的数据,特别适合需要实时互动的应用场景。

暂无访问

Graphiti是什么?

Graphiti 是一个用于构建和查询知识图谱的框架,它具备时间感知能力,非常适合用在动态环境中。与传统的检索增强生成(RAG)方法不同,Graphiti 可以实时整合用户交互、结构化和非结构化的数据,以及外部信息,生成一个可查询的图谱。它的优势在于支持数据的实时更新、高效检索和精确的历史查询,无需重新计算整个图谱,非常适合开发交互式、上下文感知的应用程序。

Graphiti 的主要功能

实时增量更新:能够立即集成新的数据片段,无需进行批量重新计算。

双时态数据模型:明确跟踪事件发生时间和摄入时间,支持精确的时间点查询。

高效混合检索:结合语义嵌入、关键字(BM25)和图遍历,实现低延迟查询,无需依赖大语言模型(LLM)进行总结。

自定义实体定义:支持通过简单的 Pydantic 模型创建灵活的本体和自定义实体。

可扩展性:通过并行处理有效管理大型数据集,适用于企业环境。

与多种 LLM 集成: 支持 Openai、Anthropic 和 Groq 等 LLM 提供商,提供灵活的 LLM 推理和嵌入选项。

MCP 服务器: 提供一个基于 FastAPI 的 API 服务,支持通过 MCP 协议与知识图谱进行交互,包括事件管理、实体管理和关系处理等功能。

选择 Graphiti 的原因

它能实时更新数据,适应动态变化的环境。

支持精确的时间点查询,方便追溯历史信息。

检索速度快,不需要依赖复杂的语言模型。

可以自定义数据结构,满足特定需求。

能高效处理大量数据,适合企业级应用。

Graphiti的安装和使用

安装 Graphiti

首先,确保你的系统满足安装要求,并安装必要的依赖项:

Python:确保你的系统中安装了 Python 3.10 或更高版本。

Neo4j:安装 Neo4j 数据库,版本 5.26 或更高。你可以使用 Neo4j Desktop 来简化安装和管理过程。

OpenAI API Key:如果你打算使用 OpenAI 进行 LLM 推理和嵌入,你需要一个有效的 OpenAI API Key。

你可以使用 pip 或 poetry 来安装 Graphiti 核心库:

pipinstallgraphiti-core#或者poetryaddgraphiti-core

初始化 Graphiti

在你的代码中初始化 Graphiti 实例,连接到 Neo4j 数据库:

fromgraphiti_coreimportGraphitigraphiti=Graphiti("bolt://localhost:7687","neo4j","password")

构建索引和约束

在添加数据之前,初始化图数据库并构建 Graphiti 的索引和约束:

await graphiti.build_indices_and_constraints()

添加数据

使用 add_episode 方法将数据添加到知识图谱中。每个数据片段称为一个“episode”:

fromgraphiti_core.nodesimportEpisodeTypefromdatetimeimportdatetime,timezoneepisodes=["KamalaHarrisistheAttorneyGeneralofCalifornia.ShewaspreviouslythedistrictattorneyforSanFrancisco.","AsAG,HarriswasinofficefromJanuary3,2011–January3,2017"]fori,episodeinenumerate(episodes):awaitgraphiti.add_episode(name=f"FreakonomicsRadio{i}",episode_body=episode,source=EpisodeType.text,source_description="podcast",reference_time=datetime.now(timezone.utc))

查询数据

使用 search 方法查询知识图谱,结合语义相似性和关键词搜索:

results=awaitgraphiti.search('WhowastheCaliforniaAttorneyGeneral?')

自定义查询

你可以根据需要自定义查询,例如通过指定中心节点来优先考虑与该节点更接近的结果:

awaitgraphiti.search('WhowastheCaliforniaAttorneyGeneral?',center_node_uuid)

关闭连接

在完成聊天状态管理后,关闭 Graphiti 连接:

graphiti.close()

使用 MCP 服务器

Graphiti 提供了一个 MCP 服务器,可以通过 FastAPI 进行交互。你可以部署这个服务器并使用 MCP 协议与知识图谱进行交互:

1. 克隆或下载 Graphiti 仓库。

2. 运行 MCP 服务器:

uvicorngraphiti.mcp_server.main:app--reload

3. 在你的 AI 助手中使用 MCP 协议与服务器进行通信。

使用 Azure OpenAI

如果你想使用 Azure OpenAI,你需要配置相应的客户端和嵌入器:

fromopenaiimportAsyncAzureOpenAIfromgraphiti_coreimportGraphitifromgraphiti_core.llm_clientimportOpenAIClientfromgraphiti_core.embedder.openaiimportOpenAIEmbedder,OpenAIEmbedderConfigapi_key=""api_version=""azure_endpoint=""azure_openai_client=AsyncAzureOpenAI(api_key=api_key,api_version=api_version,azure_endpoint=azure_endpoint)graphiti=Graphiti("bolt://localhost:7687","neo4j","password",llm_client=OpenAIClient(client=azure_openai_client),embedder=OpenAIEmbedder(config=OpenAIEmbedderConfig(embedding_model="text-embedding-3-small"),client=azure_openai_client))

确保替换占位符值为你实际的 Azure OpenAI 凭据,并指定正确的嵌入模型名称。

Graphiti 的优势

和其他技术相比,Graphiti 在处理动态数据、实时更新和查询速度上有明显优势。

提供了服务器实现,方便与其他系统集成。

支持多种环境配置和与其他服务的集成。

相关链接

论文:https://arxiv.org/abs/2501.13956

GitHub 仓库:https://github.com/getzep/graphiti

相关推荐