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

收藏
最新工具
数跨境BI
数跨境BI

一款为跨境电商卖家设计的在线自助数据分析工具,能够有效整合多个跨...

Thieve
Thieve

一个专注于一件代发业务的平台,Thieve 通过收集大量消费者的...

FindNiche
FindNiche

一站式选品和广告监测工具,提供速卖通、Shopify 等多平台商...

AI TransPDF
AI TransPDF

一款基于顶尖AI模型的PDF翻译工具,具有翻译准确、保留原文格式...

DeepWiki
DeepWiki

Cognition Labs公司推出的工具,它通过分析GitHu...

Sonix
Sonix

一款AI驱动的转录、翻译、字幕生成工具,能快速、准确地将音视频内...

笔启AI论文
笔启AI论文

一款专为论文写作打造的AI工具,它可以快速生成论文大纲和正文、智...

百度心响
百度心响

一款由百度推出的手机端超级智能体应用,它以“AI任务完成引擎”为...

GeoGebra
GeoGebra

一款适用于各级教育的免费动态数学软件,它将几何、代数、统计、微积...

DuoPlus云手机
DuoPlus云手机

专注打造全球社媒营销、Tiktok、游戏挂机专用云手机,帮助您社...