Graphiti:基于图的实时记忆
AI 的真正潜力远不止于由检索增强生成(RAG)驱动的基本聊天机器人。它关乎创建能够独立解决问题的自主代理——从简单的交互到复杂的流程。要做到这一点,代理不仅需要静态检索,还需要一种动态记忆,这种记忆可以持续整合用户互动、企业数据和外部知识。
当前的RAG方法在数据频繁更新时表现不佳,这限制了它们在基于代理系统的有效性。Zep AI 的 Graphiti 框架旨在通过引入一个灵活的实时内存层来解决这个问题,该内存层基于时间感知的知识图谱,并存储在 Neo4j 中。
让我们分解 Graphiti 是如何工作的,并将其与查询聚焦摘要(QFS)进行比较。特别是,我们将研究微软研究的 GraphRAG 实现的 QFS。
1、GraphRAG:优化静态数据
微软的 GraphRAG 方法通过提取实体和关系并将其分组为主题集群或“社区”来构建以实体为中心的知识图谱。它依赖于大型语言模型(LLMs)预先计算这些社区的摘要。在处理查询时,微软的 GraphRAG 会进行多次 LLM 调用——首先生成部分社区级响应,然后将它们组合成一个全面的答案。
GraphRAG 在提供来自大型静态数据集的详细、上下文丰富的响应方面表现出色。然而,在数据经常变化的情况下效果较差,因为更新可能会触发整个图谱的广泛重新计算。此外,其多步骤摘要使得检索速度变慢,通常需要几十秒。这种延迟和缺乏动态更新使 GraphRAG 不适合作为综合和整体的记忆用于代理应用。
2、Graphiti:实时动态代理记忆
Graphiti 的开发是为了克服 RAG 在动态数据方面的局限性。它是一个实时的时间感知知识图谱引擎,增量处理传入的数据,即时更新实体、关系和社区,而无需批量重新计算。Graphiti 不仅仅是一个检索工具——它被设计为代理始终可用且不断更新的上下文来源。
Graphiti 同时处理聊天记录、结构化 JSON 数据和非结构化文本。所有数据源可以输入到单个图谱中,或者在同一 Graphiti 设置中存在多个图谱。这为代理提供了一个统一的、不断发展的视图——这是传统 RAG 系统根本无法提供的。
在 GitHub上找到 Graphiti。
3、为什么 Graphiti 在动态数据中表现更好
Graphiti 的实时增量架构非常适合频繁更新。它持续摄取新的数据片段(事件或消息),提取并立即针对现有节点解析实体和关系。
要深入了解 Graphiti 的技术探索和性能基准,请查看 Zep:代理记忆的时间知识图谱架构。
一个关键特性是 Graphiti 的双时间模型,跟踪事件发生的时间和摄取的时间。每个图谱边(或关系)都包含明确的有效区间(t_valid, t_invalid)。Graphiti 使用语义、关键词和图谱搜索来确定新知识是否与现有知识冲突。当冲突出现时,Graphiti 智能地使用时间元数据来更新或无效化过时的信息,而不是丢弃它,从而在不进行大规模重新计算的情况下保持历史准确性。
这种时间模型支持强大的历史查询,允许用户重建特定时刻的知识状态或分析数据随时间的变化。
4、快速查询速度:无 LLM 调用的即时检索
Graphiti 是为速度而构建的。Zep 自己的 Graphiti 实现达到了极低延迟的检索,P95 延迟仅为 300 毫秒。这是通过结合语义嵌入、关键词(BM25)搜索和直接图谱遍历的混合搜索方法实现的——检索过程中避免了任何 LLM 调用。
向量和 BM25 索引的使用提供了对节点和边的近乎恒定时间的访问,无论图谱大小如何。这是由于 Neo4j 对这两种索引类型的广泛支持。
Graphiti 的查询延迟使其非常适合实时交互,包括语音应用。
5、自定义实体类型:简单的本体实现
Graphiti 根据传入数据自动生成本体,确保去重节点并一致地标记边缘关系。除了自动本体创建外,Graphiti 还提供了一种直观的方法,使用熟悉的 Pydantic 模型定义自定义的领域特定实体。
这些自定义实体类型允许精确的上下文提取,极大地提高了代理互动的质量。示例实体类型可能包括:
- 用户个性化偏好和兴趣(如最喜欢的餐厅、联系人、爱好),以及标准属性(姓名、出生日期、地址)
- 程序性记忆,捕捉操作指令
- 领域特定的业务对象(如产品、销售订单)
from pydantic import BaseModel, Field
class Customer(BaseModel):
"""服务的客户"""
name: str | None = Field(..., description="客户的姓名")
email: str | None = Field(..., description="客户的电子邮件地址")
subscription_tier: str | None = Field(..., description="客户的订阅级别")
Graphiti 自动将提取的实体匹配到定义的自定义类型。自定义实体类型增强了代理准确回忆知识的能力,并改善了上下文意识,这对一致的相关互动至关重要。
6、关键对比
下表展示了 Graphiti 与基于 QFS 的 GraphRAG 的关键特性的对比。
7、图谱记忆推动自主未来
Graphiti 代表了传统 RAG 方法的重要突破,特别是因为它从一开始就作为动态代理系统的记忆基础设施而构建。Graphiti 通过其时间感知的知识图谱提供增量式、实时更新。这种设计意味着工程师不再需要在数据更改时重新计算整个图谱。相反,Graphiti 增量集成更新,根据时间元数据解决冲突,并维护准确的历史状态。
通过在查询时消除 LLM 驱动的摘要瓶颈,Graphiti 实现了工程师在实际交互现实应用中所需的实用延迟水平。其混合索引系统——结合语义嵌入、关键词搜索和图谱遍历——允许快速检索,与图谱规模无关。通过直观的工具如通过熟悉结构(如 Pydantic 模型)实现的自定义实体类型,Graphiti 解决了代理开发中的一个重要能力差距,为工程师配备了强大、高性能且真正动态的记忆层。
原文链接:Graphiti: Knowledge Graph Memory for a Post-RAG Agentic World
汇智网翻译整理,转载请标明出处