Graphiti 是一个用于构建和查询时序感知知识图谱的框架,专为在动态环境中运行的 AI 代理量身定制。与传统的检索增强生成 (RAG) 方法不同,Graphiti 持续将用户交互、结构化和非结构化企业数据以及外部信息集成到一个连贯且可查询的图中。该框架支持增量数据更新、高效检索和精确的历史查询,无需完全重新计算图谱,因此非常适合开发交互式、情境感知的 AI 应用程序。
使用 Graphiti 可以:
- 集成并维护动态用户交互和业务数据。
- 促进代理基于状态的推理和任务自动化。
- 使用语义、关键字和基于图形的搜索方法查询复杂、不断变化的数据。
Graphiti的主要功能
- 动态数据整合:实时摄取结构化和非结构化数据,支持增量更新。
- 时间感知能力:跟踪事实和关系随时间的变化,支持时间点查询。
- 混合检索:结合语义搜索、关键词搜索和图遍历,实现低延迟查询。
- 状态推理与自动化:支持智能体基于图谱进行任务自动化与推理。
- 可扩展性:设计用在处理大规模数据集,支持并行化处理。
- 自定义实体类型:支持定义特定领域的实体类型,实现更精确的知识表示。
- 多模态搜索:支持语义、关键词及图结构的复杂查询。
Graphiti的技术原理
- 时间感知图谱:在图边添加时间元数据记录关系的生命周期。图谱中的每个关系都有一个时间戳,能追踪从创建到结束的整个过程。
- 事件驱动架构:基于事件驱动架构,将数据摄取为离散事件。每个事件都包含数据来源和时间戳,支持增量处理。
- 混合检索引擎:结合语义嵌入、关键词搜索和图遍历技术,实现低延迟的复杂查询。语义嵌入基于向量空间模型理解文本内容,关键词搜索快速定位文本片段,图遍历用图结构进行关系推理。查询结果用与中心节点的距离重新排序,进一步优化查询结果的相关性。
- 并行化处理:Graphiti支持并行化处理,能同时处理多个数据流,提高数据处理效率。
Graphiti的选择理由
传统的 RAG 方法通常依赖于批处理和静态数据汇总,这对于频繁变化的数据来说效率低下。Graphiti 通过提供以下功能解决了这些挑战:
- 实时增量更新:立即集成新的数据事件,无需批量重新计算。
- 双时间数据模型:明确跟踪事件发生和摄取时间,允许准确的时间点查询。
- 高效混合检索:结合语义嵌入、关键字(BM25)和图遍历,实现低延迟查询,而无需依赖 LLM 摘要。
- 自定义实体定义:通过简单的 Pydantic 模型灵活地创建本体并支持开发人员定义的实体。
- 可扩展性:通过并行处理有效管理大型数据集,适用于企业环境。
Graphiti的项目地址
要求:
- 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 add graphiti-core
您还可以安装可选的 LLM 提供程序作为附加功能:
# Install with Anthropic support
pip install graphiti-core[anthropic]
# Install with Groq support
pip install graphiti-core[groq]
# Install with Google Gemini support
pip install graphiti-core[google-genai]
# Install with multiple providers
pip install graphiti-core[anthropic,groq,google-genai]