agentic_huge_data_base / wiki
页面 Graphiti · 4.2 数据模型与模式定义·DeepWiki 中文全文译文

4.2 · 数据模型与模式定义(Data Models and Schemas)

时序知识图谱与动态事实记忆 · 聚焦本章的模块关系、源码依据与实现要点。

项目Graphiti 章节4.2 状态全文译文 模块图谱与关系、模型调用与提供方适配、评测、反馈与人工复核、检索、召回与索引
源码线索
  • graphiti_core/edges.py
  • graphiti_core/graphiti_types.py
  • graphiti_core/models/edges/edge_db_queries.py
  • graphiti_core/models/nodes/node_db_queries.py
  • graphiti_core/nodes.py
  • graphiti_core/prompts/eval.py
  • graphiti_core/prompts/models.py
  • graphiti_core/utils/maintenance/community_operations.py
  • graphiti_core/utils/maintenance/graph_data_operations.py
模块标签
  • 图谱与关系
  • 模型调用与提供方适配
  • 评测、反馈与人工复核
  • 检索、召回与索引
  • 接口与服务契约

章节正文

数据模型与模式定义

数据模型与模式

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • graphiti_core/edges.py
  • graphiti_core/graphiti_types.py
  • graphiti_core/models/edges/edge_db_queries.py
  • graphiti_core/models/nodes/node_db_queries.py
  • graphiti_core/nodes.py
  • graphiti_core/prompts/eval.py
  • graphiti_core/prompts/models.py
  • graphiti_core/utils/maintenance/community_operations.py
  • graphiti_core/utils/maintenance/graph_data_operations.py

本文档记录了 Graphiti 中所有表示数据结构的 Pydantic 模型。系统使用三类模型:

  1. 图模型 - 持久化到图数据库的节点和边类型。
  2. 提示响应模型 - 来自大语言模型(LLM)提取、去重和评估提示的结构化输出。
  3. 配置模型 - 搜索、实体类型和边类型的设置。

有关概念架构,请参阅知识图谱数据模型。有关时间语义,请参阅时间感知与双时态模型

枚举

EpisodeType

graphiti_core/nodes.py:54-77

指定 EpisodicNode 中原始内容的格式。该枚举决定了使用哪种提取提示变体。

字符串预期内容格式
message"message""actor: content",例如 "user: Hello" graphiti_core/nodes.py:64-67
json"json"JSON 序列化的字符串对象 graphiti_core/nodes.py:68-69
text"text"纯非结构化文本 graphiti_core/nodes.py:70-71
fact_triple"fact_triple"结构化的主语-谓语-宾语三元组 graphiti_core/nodes.py:77

静态方法 from_str(episode_type: str) 将字符串值转换为枚举成员 graphiti_core/nodes.py:79-91

GraphProvider

graphiti_core/driver/driver.py:31-36(在 graphiti_core/nodes.py:29-32 中导入)

标识图数据库后端。所有节点和边方法都根据此枚举分支,以生成特定于提供商的查询 graphiti_core/nodes.py:118-166

数据库特殊特性
NEO4JNeo4j原生列表支持,事务操作 graphiti_core/nodes.py:119-130
FALKORDBFalkorDB(Redis)RedisSearch 全文语法 graphiti_core/nodes.py:157-165
KUZUKuzu(嵌入式)EntityEdge 存储为中间节点模式 graphiti_core/nodes.py:132-156
NEPTUNEAmazon Neptune列表存储为分隔字符串 graphiti_core/models/nodes/node_db_queries.py:32-38

来源:graphiti_core/nodes.py:54-91, graphiti_core/driver/driver.py:31-36, graphiti_core/models/nodes/node_db_queries.py:30-66

节点模型

类型层次结构图

Graphiti · 节点模型 · 图 1
Graphiti · 节点模型 · 图 1

来源:graphiti_core/nodes.py:93-858

Node(抽象基类)

graphiti_core/nodes.py:93-109

所有节点类型都继承自 Node,它既是 pydantic.BaseModel 又是 ABC。所有节点共有的字段:

字段类型默认值描述
uuidstruuid4()唯一标识符 graphiti_core/nodes.py:94
namestr必填人类可读的名称 graphiti_core/nodes.py:95
group_idstr必填图分区键 graphiti_core/nodes.py:96
labelslist[str][]图数据库标签 graphiti_core/nodes.py:97
created_atdatetimeutc_now()入库时间戳 graphiti_core/nodes.py:98
EpisodicNode

graphiti_core/nodes.py:307-325

表示单条原始输入(一个"记忆片段")。它包含关于来源和业务时间(valid_at)的元数据。

EntityNode

graphiti_core/nodes.py:484-500

表示一个去重后的持久化实体。它存储了大语言模型(LLM)生成的 summary 和一个用于向量搜索的 name_embedding

CommunityNode

graphiti_core/nodes.py:666-682

表示通过社区检测发现的、相关 EntityNode 的集群。

SagaNode

graphiti_core/nodes.py:844-858

一个分组节点,将相关片段链接成一个命名的序列("saga")。

来源:graphiti_core/nodes.py:93-109, graphiti_core/nodes.py:307-325, graphiti_core/nodes.py:484-500, graphiti_core/nodes.py:666-682, graphiti_core/nodes.py:844-858

边模型

类型层次结构图

Graphiti · 边模型 · 图 2
Graphiti · 边模型 · 图 2

来源:graphiti_core/edges.py:49-946

Edge(抽象基类)

graphiti_core/edges.py:49-57

所有边共有的字段:

字段类型描述
uuidstr唯一标识符 graphiti_core/edges.py:50
group_idstr图分区键 graphiti_core/edges.py:51
source_node_uuidstr源节点的 UUID graphiti_core/edges.py:52
target_node_uuidstr目标节点的 UUID graphiti_core/edges.py:53
created_atdatetime入库时间戳 graphiti_core/edges.py:54
EntityEdge

graphiti_core/edges.py:263-288

表示两个 EntityNode 之间的 RELATES_TO 关系。

字段类型描述
namestr关系名称(例如 "WORKS_AT"graphiti_core/edges.py:264
factstr自然语言陈述 graphiti_core/edges.py:265
fact_embeddinglist[float] | Nonefact 的向量嵌入 graphiti_core/edges.py:266
episodeslist[str]提及此边的 EpisodicNode 的 UUID graphiti_core/edges.py:267
expired_atdatetime | None被取代时的系统时间 graphiti_core/edges.py:268
valid_atdatetime | None事实变为真时的业务时间 graphiti_core/edges.py:269
invalid_atdatetime | None事实停止为真时的业务时间 graphiti_core/edges.py:270
双时态字段

EntityEdge 实现了双时态模型,以同时跟踪业务时间和系统时间。

Graphiti · 双时态字段 · 图 3
Graphiti · 双时态字段 · 图 3

来源:graphiti_core/edges.py:263-283

完整图模式

Graphiti 节点和边类型到数据库模式的映射

Graphiti · 完整图模式 · 图 4
Graphiti · 完整图模式 · 图 4

来源:graphiti_core/nodes.py:307-858, graphiti_core/edges.py:143-946

提示响应模型

大语言模型(LLM)提示返回结构化响应,这些响应被解析为 Pydantic 模型,以确保一致的数据提取和评估。

节点提取与摘要

用于社区操作中合并实体知识 graphiti_core/utils/maintenance/community_operations.py:147-151, 163-167

字段类型描述
Summarysummarystr多个节点的合并摘要 graphiti_core/prompts/summarize_nodes.py:15
SummaryDescriptiondescriptionstr基于摘要的社区短名称 graphiti_core/prompts/summarize_nodes.py:15
评估模型

graphiti_core/prompts/eval.py:25-49

这些模型在图构建和问答评估期间结构化大语言模型(LLM)的反馈。

字段类型描述
QueryExpansionquerystr为数据库搜索重新表述的查询 graphiti_core/prompts/eval.py:25-26
QAResponseANSWERstr大语言模型(LLM)从检索到的上下文中生成的答案 graphiti_core/prompts/eval.py:29-30
EvalResponseis_correctbool对响应与黄金标准的评分 graphiti_core/prompts/eval.py:33-34
EvalAddEpisodeResultscandidate_is_worsebool基线提取与候选提取的比较 graphiti_core/prompts/eval.py:40-44
社区检测模型

graphiti_core/utils/maintenance/community_operations.py:25-28

label_propagation 算法中用于跟踪节点邻接关系 graphiti_core/utils/maintenance/community_operations.py:76-78

字段类型描述
Neighbornode_uuidstr相邻实体节点的 UUID graphiti_core/utils/maintenance/community_operations.py:26
Neighboredge_countint连接的权重 graphiti_core/utils/maintenance/community_operations.py:27

来源:graphiti_core/utils/maintenance/community_operations.py:25-28, graphiti_core/prompts/eval.py:25-49

系统上下文模型

消息

graphiti_core/prompts/models.py:23-25

一个简单的 Pydantic 模型,用于提示生成中的大语言模型(LLM)聊天消息。

字段类型描述
rolestr消息发送者的角色(system、user、assistant)graphiti_core/prompts/models.py:24
contentstr消息的内容 graphiti_core/prompts/models.py:25
GraphitiClients

graphiti_core/graphiti_types.py:26-34

一个容器,用于系统中使用的各种提供商客户端。

字段类型描述
driverGraphDriver数据库抽象层 graphiti_core/graphiti_types.py:27
llm_clientLLMClient语言模型接口 graphiti_core/graphiti_types.py:28
embedderEmbedderClient向量嵌入服务 graphiti_core/graphiti_types.py:29
tracerTracer遥测与追踪 graphiti_core/graphiti_types.py:31

来源:graphiti_core/prompts/models.py:23-25, graphiti_core/graphiti_types.py:26-34

数据检索辅助函数

系统使用工厂函数从数据库记录中实例化模型对象。

函数返回类型特定于提供商的逻辑
get_episodic_node_from_recordEpisodicNodegraphiti_core/nodes.py:990
get_entity_node_from_recordEntityNode是(属性解析)graphiti_core/nodes.py:1012
get_community_node_from_recordCommunityNodegraphiti_core/nodes.py:1044
get_episodic_edge_from_recordEpisodicEdgegraphiti_core/edges.py:950
get_entity_edge_from_recordEntityEdge是(属性解析)graphiti_core/edges.py:960

来源:graphiti_core/nodes.py:990-1052, graphiti_core/edges.py:950-1001