转载公众号 | 知识图谱科技


Graphiti: Knowledge Graph Memory for an Agentic World

摘要

本文深入探讨了Zep AI推出的Graphiti框架,一种基于图数据库构建的实时、时序感知的知识图谱引擎,旨在为AI代理提供动态记忆支持。相较于传统的RAG方法,Graphiti能够实时更新数据、快速检索,并通过时序模型保留历史准确性,为智能代理的未来发展铺平道路 。

https://github.com/getzep/graphiti

全文

一、引言:AI代理的未来与记忆挑战

人工智能的真正潜力远不止基础聊天机器人或基于检索增强生成(RAG)的简单交互。真正的突破在于打造自主智能代理(Agentic AI),这些代理能够独立解决问题,从简单交互到复杂工作流无所不包。然而,要实现这一目标,代理需要超越静态检索机制,拥有动态记忆能力,能够持续整合用户交互、企业数据和外部知识 。

传统的RAG方法在数据频繁更新的场景中往往力不从心,无法为基于代理的系统提供有效的支持。为了解决这一问题,Zep AI推出了Graphiti框架——一个灵活的实时记忆层,基于时序感知的知识图谱,并存储在Neo4j数据库中 。本文将详细解析Graphiti的工作原理,并将其与微软研究的GraphRAG(一种基于查询聚焦摘要的实现方式)进行对比,探讨其在动态数据环境中的独特优势。

二、传统RAG的局限性:静态方法的困境

微软的GraphRAG方法通过提取实体和关系,构建以实体为中心的知识图谱,并将其分组为主题集群或“社区”。该方法依赖于大语言模型(LLM)预计算这些社区的摘要。在处理查询时,GraphRAG会进行多次LLM调用,首先生成社区级别的部分响应,然后将这些响应整合为一个完整的答案 。

这种方法在处理大型静态数据集时表现优异,能够提供详细且上下文丰富的响应。然而,当数据频繁更新时,其局限性显现:每次更新可能触发整个图谱的大规模重新计算。此外,其多步骤摘要过程导致检索速度较慢,延迟往往高达几十秒。这种延迟和缺乏动态更新能力,使得GraphRAG难以作为代理应用的全面记忆基础设施 。

三、Graphiti与Neo4j:实时动态代理记忆的解决方案

Graphiti通过其动态数据处理能力,克服了静态RAG的局限性。作为一个实时、时序感知的知识图谱引擎,Graphiti能够逐步处理传入数据,即时更新实体、关系和社区,无需批量重新计算。它不仅是另一个检索工具,而是为智能代理提供持续可用且不断更新的上下文来源,这是传统RAG系统根本无法实现的 。

Graphiti能够同时处理聊天历史记录、结构化JSON数据和非结构化文本。所有数据源可以整合到一个统一的图谱中,或者在同一Graphiti设置下共存多个图谱。这种设计为代理提供了一个统一的、不断演变的“世界观”,极大地提升了其实时交互能力 。

四、Graphiti在动态数据处理中的独特优势

Graphiti的实时增量架构专为频繁更新设计。它持续摄取新的事件或消息(称为数据片段),提取并立即将实体和关系与现有节点进行匹配和更新。这种即时处理能力确保了知识图谱始终保持最新状态 。

Graphiti的一个关键特性是其双时序模型(Bi-temporal Model),该模型记录事件发生的时间以及数据被摄取的时间。图谱中的每个边(或关系)都包含明确的有效性区间(t_valid, t_invalid)。通过语义、关键词和图谱搜索,Graphiti能够判断新知识是否与现有知识冲突,并在冲突发生时利用时序元数据智能地更新或失效过时信息,同时保留历史准确性,而无需大规模重新计算 。

这一时序模型还支持强大的历史查询功能,用户可以重建特定时刻的知识状态,或分析数据随时间演变的过程。这对于需要在复杂时间维度上进行分析的场景尤为重要 。

五、快速查询速度:无需LLM调用的即时检索

Graphiti在速度上也表现卓越。Zep的Graphiti实现达到了极低的延迟检索效果,P95延迟仅为300毫秒。其混合搜索方法结合了语义嵌入、关键词(BM25)搜索和直接图谱遍历,避免了检索过程中调用LLM的开销 。

Graphiti利用向量和BM25索引,实现了几乎恒定时间的节点和边访问,无论图谱规模如何。这一特性得益于Neo4j对这两种索引类型的广泛支持。低延迟的查询性能使Graphiti非常适合实时交互场景,包括语音应用 。

六、自定义实体类型:简单的本体实现

Graphiti能够根据传入数据自动构建本体(Ontology),并注意去重节点和一致性标记边关系。此外,它还提供了一种直观的方法,使用熟悉的Pydantic模型定义特定领域的自定义实体类型 。

这些自定义实体类型支持精确的上下文提取,显著提升了代理交互的质量。例如,自定义实体类型可以包括:

  • 个性化用户偏好和兴趣(如喜欢的餐厅、联系人、爱好)以及标准属性(如姓名、生日、地址);

  • 程序性记忆,记录行动指令;

  • 特定领域的业务对象(如产品、销售订单) 。

以下是一个简单的Pydantic模型示例,用于定义“客户”实体类型:

python

from pydantic import BaseModel, Field
classCustomer(BaseModel):
"""A customer of the service"""
    name: str | None = Field(..., description="The name of the customer")
    email: str | None = Field(..., description="The email address of the customer")
    subscription_tier: str | None = Field(..., description="The customer's subscription level")

Graphiti会自动将提取的实体与定义的自定义类型匹配。这种能力增强了代理准确回忆知识和提高上下文感知的能力,对确保交互的一致性和相关性至关重要 。

七、Graphiti与QFS-Based GraphRAG的关键对比

以下表格展示了Graphiti与基于查询聚焦摘要(QFS)的GraphRAG在关键特性上的对比(原文中包含此表格,建议插入表格图片或绘制类似表格) :

特性

Graphiti

QFS-Based GraphRAG

数据更新方式

实时增量更新,无需批量重算

更新需大规模重算

查询延迟

P95延迟300毫秒,无LLM调用

延迟数十秒,需多次LLM调用

时序感知能力

双时序模型,保留历史准确性

无时序感知,静态处理

自定义实体支持

支持Pydantic模型自定义实体

不支持或支持有限

八、Graphiti:驱动代理未来的图谱记忆

Graphiti代表了从传统RAG方法到动态Agent系统记忆基础设施的重要转变。它通过时序感知的知识图谱实现增量、实时更新,工程师无需在数据变更时重新计算整个图谱。Graphiti能够基于时序元数据解决冲突,并保持准确的历史状态 。

通过消除查询时依赖LLM摘要的瓶颈,Graphiti达到了工程师在交互式现实应用中所需的实用延迟水平。其混合索引系统——结合语义嵌入、关键词搜索和图谱遍历——实现了近乎恒定时间的快速检索,不受图谱规模影响。借助Pydantic模型等直观工具实现自定义实体类型,Graphiti填补了代理开发中的重要能力空白,为工程师提供了强大、高性能且真正动态的记忆层 。

九、总结与展望

Graphiti的出现标志着AI代理记忆技术的重要进步,为构建上下文丰富、可解释的生成式AI应用奠定了基础。结合Neo4j的强大支持,Graphiti不仅解决了动态数据处理的核心难题,还为未来的智能代理系统提供了坚实的记忆基础设施。无论是企业应用、科研探索还是投资布局,Graphiti都展现了知识图谱技术在AI领域的巨大潜力 。

如果您对Graphiti或Zep的技术细节感兴趣,可访问其GitHub页面或相关技术文档,了解更多关于其性能基准和时序知识图谱架构的内容 。https://t.zsxq.com/54ymx


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

点击阅读原文,进入 OpenKG 网站。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐