环境变量与设置
环境变量与设置
相关源文件
以下文件为本维基页面的生成提供了上下文:
.env.example.github/secret_scanning.ymlgraphiti_core/driver/driver.pygraphiti_core/driver/falkordb_driver.pygraphiti_core/driver/neo4j_driver.pygraphiti_core/helpers.pygraphiti_core/telemetry/__init__.pygraphiti_core/telemetry/telemetry.pytests/llm_client/test_anthropic_client_int.pytests/llm_client/test_client.py
本文档记录了 Graphiti 使用的所有环境变量和配置设置,包括它们的发现方式、优先级规则以及对系统行为的影响。
配置优先级
Graphiti 的配置系统遵循层级优先级规则,后加载的源会覆盖先加载的源。虽然核心库通常通过 Pydantic 模型(例如 LLMConfig)进行配置,但许多值默认会从环境变量中读取。
来源: graphiti_core/helpers.py:33-55, graphiti_core/driver/driver.py:51-57
配置流程与初始化
系统初始化时,会在多个核心模块中通过 load_dotenv() 加载 .env 文件。核心辅助函数定义了全局常量,这些常量在整个库中用于限制并发性和管理内容处理。
来源: 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_KEY | OpenAI API 认证 | 是 |
ANTHROPIC_API_KEY | Anthropic Claude 模型 | 否 |
TEST_ANTHROPIC_API_KEY | 用于集成测试 | 否 |
来源: .env.example:1-19, tests/llm_client/test_anthropic_client_int.py:28-31
数据库配置
数据库配置通常通过环境变量设置,并由特定的 GraphDriver 实现使用。
Neo4j 配置
Neo4jDriver 使用以下变量进行连接管理。
| 变量 | 用途 | 默认值 |
|---|---|---|
NEO4J_URI | Bolt 协议端点 | - |
NEO4J_USER | 数据库用户名 | - |
NEO4J_PASSWORD | 数据库密码 | - |
来源: .env.example:4-7, graphiti_core/driver/neo4j_driver.py:64-76
FalkorDB 配置
FalkorDriver 连接到兼容 Redis 的端点。
| 变量 | 用途 | 默认值 |
|---|---|---|
FALKORDB_URI | Redis 协议端点 | localhost |
FALKORDB_PORT | Redis 端口 | 6379 |
FALKORDB_USER | Redis 用户名 | - |
FALKORDB_PASSWORD | Redis 密码 | - |
来源: .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_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