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

收藏
最新工具
AiPyApp
AiPyApp

一款以Python为核心的开源新人工智能体助手,结合大模型和 P...

Adobe Express
Adobe Express

Adobe推出的一站式设计工具,整合了图像、视频、文档/PDF、...

Intangible AI
Intangible AI

创意行业空间智能AI平台,通过简洁的3D界面与空间智能技术解决A...

法大大iTerms
法大大iTerms

法大大推出的一站式法律AI工作台,基于自研法律大模型的AI智能体...

Relume
Relume

一个通过AI来优化网站设计与搭建流程的平台,可以快速生成网站地图...

Pomelli
Pomelli

Google开发的AI营销工具,主要服务中小商家。你只需要提供企...

Gartic.io
Gartic.io

一个很受欢迎的在线绘画猜词游戏。它把经典的“你画我猜”玩法和多人...

LandPPT
LandPPT

一个基于大语言模型的开源免费AIPPT生成平台,支持将文档内容自...

AppleWalls
AppleWalls

一个免费提供苹果官方内置壁纸下载的网站,包括iPhone、iPa...

Coddy.Tech
Coddy.Tech

一个免费、有趣且实用的编程学习平台。支持学习包括 Python、...