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

Graphiti是什么?

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

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

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 核心库:

pip install graphiti-core
# 或者
poetry add graphiti-core

初始化 Graphiti

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

from graphiti_core import Graphiti
graphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")

构建索引和约束

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

await graphiti.build_indices_and_constraints()

添加数据

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

from graphiti_core.nodes import EpisodeType
from datetime import datetime, timezone
episodes = [
"Kamala Harris is the Attorney General of California. She was previously the district attorney for San Francisco.",
"As AG, Harris was in office from January 3, 2011 – January 3, 2017"
]
for i, episode in enumerate(episodes):
await graphiti.add_episode(
name=f"Freakonomics Radio {i}",
episode_body=episode,
source=EpisodeType.text,
source_description="podcast",
reference_time=datetime.now(timezone.utc)
)

查询数据

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

results = await graphiti.search('Who was the California Attorney General?')

自定义查询

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

await graphiti.search('Who was the California Attorney General?', center_node_uuid)

关闭连接

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

graphiti.close()

使用 MCP 服务器

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

1. 克隆或下载 Graphiti 仓库。

2. 运行 MCP 服务器:

uvicorn graphiti.mcp_server.main:app --reload

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

使用 Azure OpenAI

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

from openai import AsyncAzureOpenAI
from graphiti_core import Graphiti
from graphiti_core.llm_client import OpenAIClient
from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig
api_key = "<your-api-key>"
api_version = "<your-api-version>"
azure_endpoint = "<your-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

收藏
最新工具
暗壳AI
暗壳AI

家居AIGC营销与导购工具,它号称“一人即团队”,能够快速生成渲...

UntitledPen
UntitledPen

一个可以生成真实人声旁白的工具,也就是能够在一个平台上编写、编辑...

PageAI
PageAI

一款AI网站生成工具,就像一个小型创意工作室一样,能在短时间内根...

Seedance AI
Seedance AI

字节跳动推出的一款强大的视频生成工具,借助 Seedance 1...

ChatPs
ChatPs

ChatPs 是一款为 Photoshop 设计的插件,它背后是...

趣丸千音
趣丸千音

一个AI语音创作平台,专注提供一站式智能语音解决方案。集成文本转...

太极神器 TAICHI-flet
太极神器 TAICHI-flet

基于flet的一款多功能娱乐软件,实现了浏览图片、音乐、小说、各...

YIKM
YIKM

一个能在线玩小霸王、红白机、街机、FC 等经典游戏的地方,像《魂...

Bridgely
Bridgely

基于AI的实时通用翻译浏览器扩展,支持 60 多种语言,包括 W...

美团NoCode
美团NoCode

美团推出的一款对话式AI编程智能体产品,是一款不需要编程背景和经...