术语表
术语表
相关源文件
本章引用的主要源码文件:
README.mdexamples/podcast/podcast_runner.pyexamples/quickstart/README.mdgraphiti_core/driver/driver.pygraphiti_core/driver/falkordb_driver.pygraphiti_core/driver/neo4j_driver.pygraphiti_core/edges.pygraphiti_core/graphiti.pygraphiti_core/helpers.pygraphiti_core/nodes.pygraphiti_core/prompts/dedupe_edges.pygraphiti_core/prompts/dedupe_nodes.pygraphiti_core/prompts/extract_edges.pygraphiti_core/prompts/extract_nodes.pygraphiti_core/prompts/summarize_nodes.pygraphiti_core/search/search.pygraphiti_core/search/search_config.pygraphiti_core/search/search_config_recipes.pygraphiti_core/search/search_utils.pygraphiti_core/utils/maintenance/community_operations.pygraphiti_core/utils/maintenance/graph_data_operations.pytests/test_graphiti_int.py
本术语表定义了 Graphiti 框架中使用的代码库专用术语、行话和领域概念。它作为技术参考,帮助工程师理解高层时序图概念与其代码实现之间的映射关系。
核心领域概念
事件(Episode)
事件是 Graphiti 中入库的基本单元。它代表一个离散的事件或原始数据片段(例如聊天消息、文档片段或 JSON 对象),实体和关系从中被提取出来 README.md:67-71。图中的每个事实都通过链接回产生它的事件来维护溯源信息 README.md:127-128。
- 实现:由
EpisodicNode类表示graphiti_core/nodes.py:270-345。 - 类型:在
EpisodeType枚举中定义:message(消息)、json、text(文本)和fact_triple(事实三元组)graphiti_core/nodes.py:54-78。
上下文图(上下文 Graph)
上下文图是一种时序知识图谱,用于追踪事实和实体随时间的变化 README.md:42-44。与静态图不同,它使用双时态模型保留历史状态,允许用户查询"在时间 X 什么是真实的"与"现在什么是真实的" README.md:125-126。
双时态模型(双时态模型)
Graphiti 使用四个特定的时间戳来管理事实和节点的生命周期:
created_at:记录首次写入数据库的时间graphiti_core/nodes.py:98。valid_at:事实在现实世界中变为真实的时间graphiti_core/nodes.py:284。invalid_at:事实被取代或变为虚假的时间graphiti_core/edges.py:341。expired_at:用于数据保留和 TTL 管理。
节点类型
| 术语 | 代码实体 | 描述 |
|---|---|---|
| 实体节点 | EntityNode | 表示现实世界中的对象,如人物、组织或概念。包含名称、摘要和嵌入向量 graphiti_core/nodes.py:355-443。 |
| 事件节点 | EpisodicNode | 表示源数据/事件。作为溯源和时序有效性的锚点 graphiti_core/nodes.py:270-345。 |
| 社区节点 | CommunityNode | 表示相关实体集群的高级节点,用于全局摘要和分层搜索 graphiti_core/nodes.py:446-521。 |
| 叙事链节点 | SagaNode | 用于将一系列事件分组为叙事链或会话的特殊节点 graphiti_core/nodes.py:524-585。 |
来源: graphiti_core/nodes.py:270-585,README.md:77-83
边类型
| 术语 | 代码实体 | 描述 |
|---|---|---|
| 实体边 | EntityEdge | 两个 EntityNodes 之间的关系(例如"WORKS_AT")。包含时序有效性和关系事实 graphiti_core/edges.py:330-466。 |
| 事件边 | EpisodicEdge | 连接 EpisodicNode 到 EntityNode 的 MENTIONS 关系 graphiti_core/edges.py:143-241。 |
| 社区边 | CommunityEdge | 连接 CommunityNode 到其组成 EntityNodes 的 HAS_MEMBER 关系 graphiti_core/edges.py:244-327。 |
| 拥有事件 | HasEpisodeEdge | 连接 SagaNode 到其组成 EpisodicNodes graphiti_core/edges.py:541。 |
| 下一个事件 | NextEpisodeEdge | 在序列中的事件之间创建时间顺序链接 graphiti_core/edges.py:587。 |
来源: graphiti_core/edges.py:143-631
技术术语与行话
组 ID(Group ID)
group_id 是一个字符串,用于将图划分为逻辑命名空间(例如每个用户一个或每个组织一个)。Graphiti 中的大多数操作都需要 group_id 来确保数据隔离 graphiti_core/graphiti.py:44-47。
- 实现:通过
validate_group_id进行校验graphiti_core/helpers.py:136-159,并通过handle_multiple_group_ids装饰器进行批量处理graphiti_core/graphiti.py:28。
标签传播(Label Propagation)
一种在社区检测中使用的算法,根据节点间的连接密度对节点进行聚类。它迭代地将节点分配给它邻居中最常见的社区 graphiti_core/utils/maintenance/community_operations.py:93-138。
- 函数:
label_propagation位于graphiti_core/utils/maintenance/community_operations.py:93。
MMR(最大边际相关性)
一种在搜索中使用的重排序策略,用于平衡查询相关性与结果多样性,防止检索到的上下文中出现冗余信息 graphiti_core/search/search.py:60。
- 常量:
DEFAULT_MMR_LAMBDAgraphiti_core/search/search_utils.py:66。
信号量收集(Semaphore Gather)
一个在整个代码库中使用的工具函数,用于在遵守全局并发限制(SEMAPHORE_LIMIT)的同时并发运行多个协程,以防止过载大语言模型(LLM)API 或数据库 graphiti_core/graphiti.py:45。
- 实现:
semaphore_gather位于graphiti_core/helpers.py:123-133。
事件归因(Episode Attribution)
在节点和边提取过程中,系统识别多事件窗口中的特定事件属于哪个事实或实体的过程 graphiti_core/utils/maintenance/node_operations.py:103-111。
- 逻辑:使用大语言模型(LLM)指令设置
episode_indices(从 1 开始索引)graphiti_core/prompts/extract_nodes.py:34-38。
自然语言到代码实体的映射
搜索与检索空间
下图将搜索概念映射到实现它们的特定代码函数和类。
"搜索概念到代码实体映射"
来源: graphiti_core/search/search.py:98-108,graphiti_core/search/search_utils.py:185-191,graphiti_core/search/search_filters.py:23-48
数据库抽象空间
下图说明了高级图操作如何转换为特定提供商的驱动程序。
"数据库操作到驱动程序映射"
来源: graphiti_core/graphiti.py:137-151,graphiti_core/driver/driver.py:100-110,graphiti_core/driver/neo4j_driver.py:30,graphiti_core/driver/falkordb_driver.py:32