Graphiti:为 AI 智能体构建实时知识图谱

B站影视 内地电影 2025-04-03 08:00 1

摘要:知识图谱在 AI 时代正发挥着越来越重要的作用,尤其在信息检索领域得到了广泛的探索和应用。知识图谱是一个由相互关联的事实构成的网络,其中每个事实都是一个三元组,由两个实体以及它们之间的关系来表示。

知识图谱在 AI 时代正发挥着越来越重要的作用,尤其在信息检索领域得到了广泛的探索和应用。知识图谱是一个由相互关联的事实构成的网络,其中每个事实都是一个三元组,由两个实体以及它们之间的关系来表示。

而 Graphiti 作为一个实时知识图谱框架,能够处理持续不断变化的关系,并在保留历史上下文的前提下自动完成知识图谱的构建,为 AI 智能体提供了更强的信息检索能力。

Graphiti 是一个用于构建实时知识图谱的框架,其代码仓库位于 https://github.com/getzep/graphiti。Graphiti 能够构建出动态的,具备时间维度的知识图谱,它们能够展示出实体之间随着时间推移而发生的变化,提供更加全面的信息。

传统的检索增强生成 RAG 方法通常依赖于静态数据和定期批量处理,这使得它们难以处理频繁变化的数据。而 Graphiti 则提供以下能力来应对挑战:

实时的增量更新:随时可以集成增量的数据片段,无需依赖定期批量计算双时态数据模型:显式跟踪事件发生时间和数据提取时间,从而支持精确的时间点查询高效的混合检索:结合语义嵌入、关键词检索和图遍历方法,在不依赖大语言模型进行摘要的情况下实现低延迟查询可自定义的实体定义:通过简单的 Pydantic 模型,实现灵活的实体创建,并支持开发者自定义实体可扩展性:通过并行处理有效地管理大型数据集,适用于企业级生产环境

借助 Graphiti,开发者可以构建出能从用户交互中持续学习的智能助手,把个人信息与来自其他业务系统的数据相融合,提供更为强大的且不断自优化的个性化服务。Graphiti 还能用于构建自主执行复杂任务的智能体,能对来自多个动态数据源的变化信息进行推理,实现更强的自适应性。

Graphiti 是一个 Python 框架,其依赖 Python 3.10+,并需要 Neo4j 5.26+ 作为嵌入层的后端存储,还需要 OpenAI 或 Anthropic, Groq 等的 API Key 来提供 LLM 推理能力。可以使用 pip 直接安装:

pip install graphiti-core

也可以使用 Poetry 进行管理和安装:

poetry add graphiti-core

Graphiti 的核心是 graphiti_core.Graphiti 类,初始化作为记忆层:

from graphiti_core import Graphiti# Initialize Graphiti as Your Memory Layergraphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")# Initialize the graph database with Graphiti's indices. This only needs to be done once.graphiti.build_indices_and_constraints

然后向其中添加知识片段,使用 add_episode 方法:

from graphiti_core.nodes import EpisodeType# Add episodesepisodes = [ "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) )

可以看到,我们向 graphiti 中添加了一些文本信息,用来构建知识图谱。构建完成后,我们可以尝试从其中提取信息,执行结合语义相似度和 BM25 检索的混合搜索,并使用逆序排名融合将结果合并并重新排序:

results = await graphiti.search('Who was the California Attorney General?')

可以得到如下结果:

[ EntityEdge(│ uuid = '3133258f738e487383f07b04e15d4ac0',│ source_node_uuid = '2a85789b318d4e418050506879906e62',│ target_node_uuid = 'baf7781f445945989d6e4f927f881556',│ created_at = datetime.datetime(2024, 8, 26, 13, 13, 24, 861097),│ name = 'HELD_POSITION',# the fact reflects the updated state that Harris is# no longer the AG of California│ fact = 'Kamala Harris was the Attorney General of California',│ fact_embedding = [│ │ -0.009955154731869698,│ ...│ │ 0.00784289836883545│],│ episodes = ['b43e98ad0a904088a76c67985caecc22'],│ expired_at = datetime.datetime(2024, 8, 26, 20, 18, 1, 53812),# These dates represent the date this edge was true.│ valid_at = datetime.datetime(2011, 1, 3, 0, 0, tzinfo= ),│ invalid_at = datetime.datetime(2017, 1, 3, 0, 0, tzinfo= ))]

可以看到,我们的搜索命中了知识图谱中的一个关系,并通过推理得出了推导事实。

Graphiti 作为一个用于构建实时知识图谱的框架,具有强大的功能和广泛的应用前景。其对于时间维度的深入探索,使得以往相对静态或依赖定期更新的知识图谱,得到了能持续更新持续维度的能力,体现出了更强的学习能力和适应性。

Graphiti 在销售、客户服务、医疗保健、金融等多个领域都有广泛的应用,为智能助手和智能体实现长期记忆调用以及基于状态的推理提供了支持。它可以为智能代理提供实时的知识支持,帮助它们进行更准确的决策和推理;还可以用于整合和分析业务数据,帮助企业更好地了解市场和客户需求。

来源:每日开源代码

相关推荐