agentic_huge_data_base / wiki
页面 Graphiti · 9.1 环境变量与设置·DeepWiki 中文全文译文

9.1 · 环境变量与设置(Environment Variables and Settings)

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

项目Graphiti 章节9.1 状态全文译文 模块配置治理、模型调用与提供方适配、图谱与关系、测试、发布与运维
源码线索
  • .env.example
  • .github/secret_scanning.yml
  • graphiti_core/driver/driver.py
  • graphiti_core/driver/falkordb_driver.py
  • graphiti_core/driver/neo4j_driver.py
  • graphiti_core/helpers.py
  • graphiti_core/telemetry/__init__.py
  • graphiti_core/telemetry/telemetry.py
  • tests/llm_client/test_anthropic_client_int.py
  • tests/llm_client/test_client.py
模块标签
  • 配置治理
  • 模型调用与提供方适配
  • 图谱与关系
  • 测试、发布与运维
  • 存储与持久化

章节正文

环境变量与设置

环境变量与设置

相关源文件

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

  • .env.example
  • .github/secret_scanning.yml
  • graphiti_core/driver/driver.py
  • graphiti_core/driver/falkordb_driver.py
  • graphiti_core/driver/neo4j_driver.py
  • graphiti_core/helpers.py
  • graphiti_core/telemetry/__init__.py
  • graphiti_core/telemetry/telemetry.py
  • tests/llm_client/test_anthropic_client_int.py
  • tests/llm_client/test_client.py

本文档记录了 Graphiti 使用的所有环境变量和配置设置,包括它们的发现方式、优先级规则以及对系统行为的影响。

配置优先级

Graphiti 的配置系统遵循层级优先级规则,后加载的源会覆盖先加载的源。虽然核心库通常通过 Pydantic 模型(例如 LLMConfig)进行配置,但许多值默认会从环境变量中读取。

Graphiti · 配置优先级 · 图 1
Graphiti · 配置优先级 · 图 1

来源: graphiti_core/helpers.py:33-55, graphiti_core/driver/driver.py:51-57

配置流程与初始化

系统初始化时,会在多个核心模块中通过 load_dotenv() 加载 .env 文件。核心辅助函数定义了全局常量,这些常量在整个库中用于限制并发性和管理内容处理。

Graphiti · 配置流程与初始化 · 图 2
Graphiti · 配置流程与初始化 · 图 2

来源: graphiti_core/helpers.py:33-38, graphiti_core/driver/driver.py:51-57, graphiti_core/driver/neo4j_driver.py:91-101

必需的环境变量

大语言模型(LLM)提供商的 API 密钥

Graphiti 支持多个大语言模型(LLM)提供商。至少需要根据所选客户端配置一个。

变量用途默认提供商
OPENAI_API_KEYOpenAI API 认证
ANTHROPIC_API_KEYAnthropic Claude 模型
TEST_ANTHROPIC_API_KEY用于集成测试

来源: .env.example:1-19, tests/llm_client/test_anthropic_client_int.py:28-31

数据库配置

数据库配置通常通过环境变量设置,并由特定的 GraphDriver 实现使用。

Neo4j 配置

Neo4jDriver 使用以下变量进行连接管理。

变量用途默认值
NEO4J_URIBolt 协议端点-
NEO4J_USER数据库用户名-
NEO4J_PASSWORD数据库密码-

来源: .env.example:4-7, graphiti_core/driver/neo4j_driver.py:64-76

FalkorDB 配置

FalkorDriver 连接到兼容 Redis 的端点。

变量用途默认值
FALKORDB_URIRedis 协议端点localhost
FALKORDB_PORTRedis 端口6379
FALKORDB_USERRedis 用户名-
FALKORDB_PASSWORDRedis 密码-

来源: .env.example:10-13, graphiti_core/driver/falkordb_driver.py:116-146

索引名称

Graphiti 允许自定义在图数据库中创建的索引名称。

变量用途默认值
ENTITY_INDEX_NAME实体节点的索引entities
EPISODE_INDEX_NAME事件节点的索引episodes
COMMUNITY_INDEX_NAME社区节点的索引communities
ENTITY_EDGE_INDEX_NAME实体边的索引entity_edges

来源: graphiti_core/driver/driver.py:53-56

性能与处理设置

并发控制

SEMAPHORE_LIMIT 对于管理图数据库和大语言模型(LLM)提供商的负载至关重要。它被 semaphore_gather 用于限制并发协程的数量。

变量用途默认值
SEMAPHORE_LIMIT最大并发异步操作数20
USE_PARALLEL_RUNTIME启用 Neo4j 并行运行时false

来源: graphiti_core/helpers.py:37-38, graphiti_core/helpers.py:123-133

内容片段切分

Graphiti 使用基于密度的片段切分方法进行实体提取。它仅对高密度内容(每个 Token 包含多个实体)进行切分,以保留散文内容的上下文,同时处理大量数据导入。

变量用途默认值
CHUNK_TOKEN_SIZE每个片段的大小(以 Token 计)3000
CHUNK_OVERLAP_TOKENS片段之间的重叠 Token 数200
CHUNK_MIN_TOKENS触发片段切分的最小 Token 数1000
CHUNK_DENSITY_THRESHOLD触发片段切分的实体密度阈值0.15

来源: graphiti_core/helpers.py:45-55

遥测系统

Graphiti 包含一个匿名遥测系统,用于收集使用统计信息以帮助改进产品。该系统在 graphiti_core/telemetry/telemetry.py 中实现。

变量用途默认值
GRAPHITI_TELEMETRY_ENABLED启用/禁用匿名遥测true
遥测实现

遥测系统使用 PostHog 来捕获事件。它被设计为非侵入性的,并且会静默失败,以确保主应用程序逻辑永远不会被中断。

  • 数据隐私:不会收集任何 API 密钥、个人数据或图谱内容。它仅跟踪系统架构和 Graphiti 版本。
  • 匿名 ID:会生成一个唯一的 UUID,并本地存储在 ~/.cache/graphiti/telemetry_anon_id 中,以维护一致的唯一标识符,而无需识别用户。
  • 自动禁用:在 pytest 运行期间,通过检查 sys.modules 自动禁用遥测。
Graphiti · 遥测实现 · 图 3
Graphiti · 遥测实现 · 图 3

来源: graphiti_core/telemetry/telemetry.py:18-38, graphiti_core/telemetry/telemetry.py:40-63, graphiti_core/telemetry/telemetry.py:92-118

维护与版本管理

变量用途
GITHUB_SHA用于版本跟踪的提交哈希值

来源: .env.example:17, graphiti_core/telemetry/telemetry.py:108-109