Graphiti:构建实时知识图谱,赋能AI Agents
项目介绍
Graphiti 是一个专门为 AI Agents 设计的开源框架,用于构建和查询时间感知的知识图谱。它能够连续集成用户交互、结构化和非结构化的企业数据以及外部信息,形成一个连贯、可查询的图谱。Graphiti 支持增量数据更新、高效检索以及精确的历史查询,而不需要完整的图重组计算,这使得它非常适合开发交互式、上下文感知的 AI 应用程序。
项目技术分析
Graphiti 框架采用了一系列先进的技术,包括:
- 时间感知的图模型:Graphiti 通过明确跟踪事件发生和摄入时间,支持精确的点时间查询。
- 混合检索方法:它结合了语义嵌入、关键词(BM25)和图遍历,实现了低延迟查询,而无需依赖大型语言模型的总结。
- 自定义实体定义:Graphiti 支持通过简单的 Pydantic 模型创建灵活的本体和开发人员定义的实体。
- 可扩展性:Graphiti 通过并行处理,有效地管理大量数据,适用于企业环境。
项目技术应用场景
Graphiti 的核心应用场景包括:
- 动态用户交互和业务数据集成:Graphiti 能够处理用户交互和企业数据的变化,保持数据的实时更新。
- 基于状态推理和任务自动化:它支持 Agent 进行状态推理和自动化任务。
- 复杂数据的语义、关键词和图搜索:Graphiti 提供了一种高效的方法来查询复杂且不断变化的数据。
项目特点
Graphiti 与传统的检索增强生成(RAG)方法相比,具有以下显著特点:
- 实时增量更新:Graphiti 可以即时集成新的数据片段,无需批量重算。
- 双时态数据模型:明确跟踪事件发生和摄入时间,支持精确的点时间查询。
- 高效的混合检索:结合语义嵌入、关键词和图遍历,实现低延迟查询。
- 自定义实体类型:Graphiti 允许开发者自定义实体类型,增加了灵活性。
- 高可扩展性:Graphiti 通过并行处理,优化了大数据集的管理。
Graphiti 与 GraphRAG 的对比
| 特点 | GraphRAG | Graphiti | | --- | --- | --- | | 主要用途 | 静态文档总结 | 动态数据管理 | | 数据处理 | 批量处理 | 连续增量更新 | | 知识结构 | 实体集群和社区总结 | 情境数据、语义实体和社区 | | 检索方法 | 序列化语言模型总结 | 混合语义、关键词和图搜索 | | 适应性 | 低 | 高 | | 时间处理 | 基本时间戳跟踪 | 明确双时态跟踪 | | 矛盾处理 | 语言模型驱动的总结判断 | 时间的边无效化 | | 查询延迟 | 秒到几十秒 | 通常低于一秒 | | 自定义实体类型 | 不支持 | 支持 | | 可扩展性 | 中等 | 高,优化大数据集 |
Graphiti 专为处理动态和频繁更新的数据集而设计,非常适合需要实时交互和精确历史查询的应用。
使用 Graphiti
Graphiti 的安装和使用相对简单。首先,确保您的系统满足以下要求:
- Python 3.10 或更高版本
- Neo4j 5.26 或更高版本(作为嵌入存储后端)
- OpenAI API 密钥(用于语言模型推理和嵌入)
安装 Graphiti Core:
pip install graphiti-core
或者使用 Poetry:
poetry add graphiti-core
快速开始使用 Graphiti,您可以添加数据片段,然后执行搜索:
from graphiti_core import Graphiti
from graphiti_core.nodes import EpisodeType
from datetime import datetime, timezone
graphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")
graphiti.build_indices_and_constraints()
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)
)
results = await graphiti.search('Who was the California Attorney General?')
Graphiti 还提供了一个 API 服务和 MCP 服务器,方便与 Graphiti 知识图谱进行交互。
通过其强大的功能和灵活的设计,Graphiti 正在成为 AI 领域中构建实时知识图谱的领先选择。如果您正在寻找一种方法来提高 AI Agents 的智能和效率,Graphiti 可能是您需要的解决方案。立即开始使用 Graphiti,为您的 AI 应用程序添加实时知识图谱的能力吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考