Graphiti: 构建 AI 代理实时知识图谱的开源框架

Graphiti 知识图谱

在当今 AI 技术飞速发展的时代,知识图谱作为 AI 系统的"大脑记忆"变得越来越重要。今天为大家介绍一个非常有潜力的开源项目 —— Graphiti,这是一个专为 AI 代理构建实时知识图谱的强大框架。

Graphiti 是什么?

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

Graphiti 的核心优势

与传统的 RAG 方法和 GraphRAG 相比,Graphiti 具有以下显著特点:

  1. 实时增量更新:无需批处理即可立即集成新数据
  2. 双时态数据模型:明确跟踪事件发生和摄取时间,实现精确的时间点查询
  3. 高效混合检索:结合语义嵌入、关键词(BM25)和图遍历,实现低延迟查询
  4. 自定义实体定义:通过简单的 Pydantic 模型支持开发人员自定义实体
  5. 可扩展性:通过并行处理有效管理大型数据集,适合企业环境

Graphiti vs GraphRAG 对比

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

安装指南

环境要求

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

重要提示:Graphiti 最适合支持结构化输出的 LLM 服务(如 OpenAI 和 Gemini)。使用其他服务可能导致输出架构不正确和摄取失败,这在使用较小模型时尤为问题。

可选组件

  • Google Gemini、Anthropic 或 Groq API 密钥(作为替代 LLM 提供商)

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

安装命令

pip install graphiti-core

或使用 Poetry:

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 Example 中,该示例演示了:

  • 连接到 Neo4j 数据库
  • 初始化 Graphiti 索引和约束
  • 将情节添加到图谱(文本和结构化 JSON)
  • 使用混合搜索查找关系(边)
  • 使用图距离重新排序搜索结果
  • 使用预定义的搜索配方搜索节点

多种集成方式

1. 与 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
from graphiti_core.cross_encoder.openai_reranker_client import OpenAIRerankerClient

# Azure OpenAI 配置
api_key = "<your-api-key>"
api_version = "<your-api-version>"
azure_endpoint = "<your-azure-endpoint>"

# 创建 Azure OpenAI 客户端用于 LLM
azure_openai_client = AsyncAzureOpenAI(
    api_key=api_key,
    api_version=api_version,
    azure_endpoint=azure_endpoint
)

# 使用 Azure OpenAI 客户端初始化 Graphiti
graphiti = 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
    )
)

2. 与 Google Gemini 一起使用

from graphiti_core import Graphiti
from graphiti_core.llm_client.gemini_client import GeminiClient, LLMConfig
from graphiti_core.embedder.gemini import GeminiEmbedder, GeminiEmbedderConfig

# Google API 密钥配置
api_key = "<your-google-api-key>"

# 使用 Gemini 客户端初始化 Graphiti
graphiti = 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"
        )
    )
)

MCP 服务器和 REST API

Graphiti 提供了两种服务器实现,方便与各种系统集成:

  1. MCP 服务器:Model Context Protocol (MCP) 服务器实现,允许 AI 助手通过 MCP 协议与 Graphiti 的知识图谱功能交互。支持情节管理、实体管理、关系处理、语义搜索等功能。可通过 Docker 与 Neo4j 一起部署。

  2. REST 服务:基于 FastAPI 构建的 API 服务,提供与 Graphiti API 交互的 RESTful 接口。

开发状态与路线图

Graphiti 正在积极开发中。团队致力于维持 API 稳定性,同时开发:

  • 支持自定义图谱架构
  • 增强检索功能,提供更强大和可配置的选项
  • Graphiti MCP 服务器的改进
  • 扩展测试覆盖范围以确保可靠性并捕获边缘情况

总结

Graphiti 作为一个专为 AI 代理设计的知识图谱框架,在处理动态数据和实时情境方面展现出了巨大的潜力。与传统 RAG 和 GraphRAG 相比,它的增量更新、时间感知能力和高效检索方法使它成为构建下一代 AI 应用的理想选择。

如果您正在开发需要持续更新知识库、处理复杂关系数据或需要精确历史查询的 AI 代理,Graphiti 无疑是一个值得考虑的强大工具。

相关链接


本文由 AI 技术专栏撰稿人整理,基于 Graphiti 官方资料编写。如有任何问题或建议,欢迎在评论区留言讨论。