Graphiti是专为AI智能体设计的开源图框架,解决传统RAG在动态数据管理上的不足。它支持实时增量更新、双时间模型、混合检索和自定义实体类型,能构建动态知识图谱,实现毫秒级响应。通过简单API调用,开发者可快速搭建AI记忆系统,让助手拥有类似人类的记忆能力,理解上下文并精准检索信息。


AI 智能体的终极记忆方案?来认识一下 Graphiti

在大模型时代,我们早已不再满足于问一句答一句的聊天机器人。真正聪明的 AI 助手,需要有记忆、能理解上下文、还能从海量信息中快速找到答案。

但传统技术如 RAG(检索增强生成)在面对频繁变化的数据时显得力不从心——它依赖批量处理和静态摘要,更新慢、响应迟、难以应对实时场景。

今天,我们要介绍一个正在悄然崛起的新一代图框架:Graphiti。它是 Zep 平台的核心引擎,也是目前公认的 Agent 记忆领域 SOTA(State-of-the-Art)解决方案之一。

如果你关心 AI 如何记住用户历史、如何高效管理动态知识、如何实现秒级精准检索,那这篇文章你一定不能错过!

开源地址:https://github.com/getzep/graphiti


什么是 Graphiti?

简单来说,Graphiti 是一个专为动态数据设计的开源图框架,它可以:

  • 实时将文本或结构化数据转化为“知识片段”(Episode)
  • 自动提取实体与关系,构建语义网络
  • 支持超低延迟的混合检索(语义 + 关键词 + 图路径
  • 精确追踪事件发生时间和被记录的时间(双时间维度)

它不是传统的知识图谱工具,也不是简单的向量数据库,而是为 AI Agent 的大脑量身打造的记忆系统。


💡 为什么我们需要 Graphiti?传统 RAG 太“笨”了!

让我们先看一组对比,你就明白 Graphiti 到底强在哪👇

对比项 传统 GraphRAG Graphiti
主要用途 静态文档总结 动态数据管理 ✅
数据更新方式 批量处理 ❌ 实时增量更新 ✅
检索速度 几秒到十几秒 ❌ 通常 <1 秒 ✅
是否支持自定义实体 否 ❌ 是 ✅
时间精度 基础时间戳 双时间模型(事件时间 & 录入时间)✅
矛盾处理 依赖 LLM 总结判断 自动失效旧边 ✅
扩展性 中等 高,适合企业级应用 ✅

举个例子:

假设你在做一个客服机器人,用户昨天说:我订了一张去北京的票。
今天又说:改成去上海。

传统的 RAG 可能还会把去北京当作有效信息返回,因为它只是做了静态存储和总结。

Graphiti 能识别这是修改行为,自动让去北京这条关系失效,并建立新的去上海连接 —— 这就是所谓的时间边失效机制

🧠 它就像人的记忆一样,知道哪些信息已经过时了。


Graphiti 核心能力一览

1. 实时增量更新:新增数据无需重算

你每输入一句话,Graphiti 就能立即解析并加入图谱,不需要等待整批数据跑完。

👉 这句话会被自动拆解成:

  • 实体:小李(人)、心理咨询(服务)、2025-03-29 10:00(时间)
  • 关系:小李 → 预约 → 心理咨询

所有这些都在后台悄悄完成,全程无需人工标注。


2. 双时间模型:记得什么时候发生的什么时候记下的

这是 Graphiti 最独特的能力之一。

  • event_time:事件实际发生的时间(比如“预约是在3月28日提到的”)
  • ingest_time:这条信息是什么时候被系统录入的

这意味着你可以做这样的查询:

“请告诉我截至2025年3月28日晚上8点,小李的所有预约安排。”

即使后来他改了时间,系统也能准确还原那一刻的历史状态。

📌 适用于医疗记录、法律证据、金融交易等对时间极其敏感的场景。


3. 混合检索:语义 + 关键词 + 图结构三合一

搜索不只是找相似句子,更是理解上下文关联。

# 示例:查找与“心理咨询”相关的所有关系(边)results = await graphiti.search("关于心理咨询的信息", top_k=5) for result in results:    print(f"UUID: {result.uuid}")    print(f"Fact: {result.fact}")    if hasattr(result, "valid_at") and result.valid_at:        print(f"Valid from: {result.valid_at}")    if hasattr(result, "invalid_at") and result.invalid_at:        print(f"Valid until: {result.invalid_at}")

它不仅用到了语义匹配(embedding),还结合了关键词(BM25)和图中邻居节点的距离进行重排序,结果更准、更快!


4. 自定义实体类型:按你的业务建模

你可以用 Pydantic 定义自己的实体模型,比如:

from pydantic import BaseModel  class Patient(BaseModel):    name: str     age: int    medical_history: list[str] class Appointment(BaseModel):    date: str    type: str    doctor: str

然后告诉 Graphiti:“以后看到类似结构,就按这个模型提取!”
这样就能构建出高度定制化的专业知识图谱。


快速上手:三步搭建你的第一个 Graphiti 应用

第一步:安装依赖

确保你已安装 Python 3.10+,然后运行:

安装基础版本(使用 Neo4j)pip install graphiti-core

第二步:配置环境变量

创建 .env 文件:

NEO4J_URI=bolt://localhost:7687NEO4J_USER=neo4j NEO4J_PASSWORD=your_password_hereOPENAI_API_KEY=sk-xxxxxxxxxxxxx

💡 提示:也支持 Azure OpenAI、Google Gemini、Anthropic Claude、Groq 等主流模型。


第三步:写代码!

# 异步主函数,用于运行整个流程asyncdef main():    # 导入所需的类和模块    from graphiti_core.llm_client  import LLMConfig, OpenAIClient    from graphiti_core.embedder.openai  import OpenAIEmbedder, OpenAIEmbedderConfig    from openai import AsyncOpenAI    # 创建一个异步 OpenAI 客户端实例(用于与 LLM 和嵌入模型交互)    llm_client = AsyncOpenAI()    # 配置大语言模型(LLM)的相关参数     llm_config = LLMConfig(        model="qwen3",           # 使用的主模型名称        small_model="qwen3"      # 使用的小型模型名称(用于轻量任务)    )    # 初始化 Graphiti 实例,连接到 Neo4j 数据库并配置 LLM 和嵌入模型    graphiti = Graphiti(        neo4j_uri,               # Neo4j 数据库 URI        neo4j_user,              # Neo4j 用户名        neo4j_password,          # Neo4j 密码        llm_client=OpenAIClient(config=llm_config, client=llm_client),  # 使用自定义 LLM 客户端        embedder=OpenAIEmbedder(  # 使用 OpenAI 嵌入器             config=OpenAIEmbedderConfig(                embedding_model="text-embedding-ada-002"# 嵌入模型名称            ),            client=llm_client,  # 使用相同的 OpenAI 客户端        ),    )    try:        # 导入用于清除图数据的工具函数        from graphiti_core.utils.maintenance.graph_data_operations  import clear_data         # 清除 Neo4j 中已有的数据(可选,用于测试)        await clear_data(graphiti.driver)         # 构建 Neo4j 中的索引和约束(提升查询性能)        await graphiti.build_indices_and_constraints()         # 定义要添加到图中的 episodes(数据片段)        episodes = [            {                "content": "卡玛拉·哈里斯是加利福尼亚州总检察长。她之前是旧金山地区检察官。",                "type": EpisodeType.text,   # 文本类型的数据                 "description": "podcast transcript",            },            {                "content": "作为总检察长,哈里斯的任期为2011年1月3日至2017年1月3日",                "type": EpisodeType.text,                 "description": "podcast transcript",            },            {                "content": {                    "name": "加文·纽瑟姆",                    "position": "州长",                    "state": "加利福尼亚州",                    "previous_role": "副州长",                    "previous_location": "旧金山",                },                "type": EpisodeType.json,   # JSON 类型的数据                "description": "podcast metadata",            },            {                "content": {                    "name": "加文·纽瑟姆",                    "position": "州长",                    "term_start": "2019 年1月7日",                    "term_end": "当前",                },                "type": EpisodeType.json,                 "description": "podcast metadata",            },        ]        # 遍历 episodes 并将其添加到图数据库中        for i, episode in enumerate(episodes):            await graphiti.add_episode(                 name=f"Freakonomics Radio {i}",  # episode 名称                 episode_body=(                    episode["content"] if isinstance(episode["content"], str)                    else json.dumps(episode["content"])   # 如果是字典则序列化为 JSON 字符串                ),                source=episode["type"],           # 数据类型(text 或 json)                source_description=episode["description"],  # 数据来源描述                 reference_time=datetime.now(timezone.utc),   # 当前时间作为参考时间            )        # 记录所有 episodes 已成功添加         logger.info("All  episodes have been added.")        # 可选:执行一次搜索测试,查询“谁是加州州长?”        results = await graphiti.search(             query="谁是加州州长?",            search_config=NODE_HYBRID_SEARCH_RRF  # 使用混合搜索配置(RRF)        )        # 打印搜索结果(格式化为 JSON,便于阅读)        print(json.dumps(results,  indent=2, ensure_ascii=False))    finally:        # 确保在程序结束时关闭 Graphiti 连接        await graphiti.close() # 程序入口点:使用 asyncio 运行主函数 if __name__ == "__main__":    asyncio.run(main())

总结:为什么选择 Graphiti?

  • 简化复杂度:将复杂的图谱构建过程抽象成简单的 API 调用,开发者可以专注于业务逻辑
  • 实时响应:支持动态数据的实时更新,无需批量重算
  • 时间感知:双时间模型让你能准确查询历史状态
  • 高性能:混合检索技术实现毫秒级响应
  • 高度可定制:支持自定义实体类型和业务模型
  • Graphiti 真正做到了让复杂的知识图谱技术变得像初始化一个类一样简单,为 AI Agent 的记忆能力提供了强大的基础设施支持!

PS:都看到这里,来个点赞推荐关注吧。 您的支持是我坚持的最大动力!

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。
在这里插入图片描述

在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型实战项目&项目源码👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战项目来学习。(全套教程文末领取哈)
在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
在这里插入图片描述

为什么分享这些资料?

只要你是真心想学AI大模型,我这份资料就可以无偿分享给你学习,我国在这方面的相关人才比较紧缺,大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

在这里插入图片描述
在这里插入图片描述

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐