## Problem Default configuration leads to extremely slow indexing speed: - 100 chunks taking ~1500 seconds (0.1 chunks/s) - 1417 chunks requiring ~5.7 hours total - Root cause: Conservative concurrency limits (MAX_ASYNC=4, MAX_PARALLEL_INSERT=2) ## Solution Add comprehensive performance optimization resources: 1. **Optimized configuration template** (.env.performance): - MAX_ASYNC=16 (4x improvement from default 4) - MAX_PARALLEL_INSERT=4 (2x improvement from default 2) - EMBEDDING_FUNC_MAX_ASYNC=16 (2x improvement from default 8) - EMBEDDING_BATCH_NUM=32 (3.2x improvement from default 10) - Expected speedup: 4-8x faster indexing 2. **Performance optimization guide** (docs/PerformanceOptimization.md): - Root cause analysis with code references - Detailed configuration explanations - Performance benchmarks and comparisons - Quick fix instructions - Advanced optimization strategies - Troubleshooting guide - Multiple configuration templates for different scenarios 3. **Chinese version** (docs/PerformanceOptimization-zh.md): - Full translation of performance guide - Localized for Chinese users ## Performance Impact With recommended configuration (MAX_ASYNC=16): - Batch processing time: ~1500s → ~400s (4x faster) - Overall throughput: 0.07 → 0.28 chunks/s (4x faster) - User's 1417 chunks: ~5.7 hours → ~1.4 hours (save 4.3 hours) With aggressive configuration (MAX_ASYNC=32): - Batch processing time: ~1500s → ~200s (8x faster) - Overall throughput: 0.07 → 0.5 chunks/s (8x faster) - User's 1417 chunks: ~5.7 hours → ~0.7 hours (save 5 hours) ## Files Changed - .env.performance: Ready-to-use optimized configuration with detailed comments - docs/PerformanceOptimization.md: Comprehensive English guide (150+ lines) - docs/PerformanceOptimization-zh.md: Comprehensive Chinese guide (150+ lines) ## Usage Users can now: 1. Quick fix: `cp .env.performance .env` and restart 2. Learn: Read comprehensive guides for understanding bottlenecks 3. Customize: Use templates for different LLM providers and scenarios
147 lines
5.2 KiB
Text
147 lines
5.2 KiB
Text
###############################################################################
|
||
# LightRAG 性能优化配置
|
||
# 此配置文件专门用于提升索引速度
|
||
#
|
||
# 性能分析:
|
||
# - 默认配置 MAX_ASYNC=4 导致每批次100个chunks需要1000-1500秒
|
||
# - 优化后预计可以将速度提升 4-8 倍
|
||
#
|
||
# 使用方法:
|
||
# 1. 根据您的 LLM API 速率限制调整以下参数
|
||
# 2. 复制此文件为 .env: cp .env.performance .env
|
||
# 3. 重启 LightRAG 服务
|
||
###############################################################################
|
||
|
||
###############################################################################
|
||
# 并发配置优化 (Concurrency Configuration)
|
||
###############################################################################
|
||
|
||
### MAX_ASYNC - LLM并发请求数(最重要的性能参数!)
|
||
#
|
||
# 说明:控制同时进行的 LLM API 调用数量
|
||
#
|
||
# 性能影响分析:
|
||
# - 默认值 4: 100 chunks → 25轮处理 → ~1500秒/批次 (0.07 chunks/s)
|
||
# - 设置为 16: 100 chunks → 7轮处理 → ~400秒/批次 (0.25 chunks/s) [4x提升]
|
||
# - 设置为 32: 100 chunks → 4轮处理 → ~200秒/批次 (0.5 chunks/s) [8x提升]
|
||
#
|
||
# 推荐设置:
|
||
# - OpenAI API (有速率限制): 16-24
|
||
# - Azure OpenAI (企业版): 32-64
|
||
# - 自托管模型 (Ollama/vLLM): 64-128
|
||
# - Claude API: 8-16 (速率限制较严格)
|
||
#
|
||
# ⚠️ 注意:设置过高可能触发 API 速率限制 (Rate Limit)
|
||
MAX_ASYNC=16
|
||
|
||
### MAX_PARALLEL_INSERT - 并行处理文档数
|
||
#
|
||
# 说明:同时处理的文档数量
|
||
#
|
||
# 推荐设置:MAX_ASYNC / 3 ~ MAX_ASYNC / 4
|
||
# - MAX_ASYNC=16 时: 建议 4-5
|
||
# - MAX_ASYNC=32 时: 建议 8-10
|
||
#
|
||
# ⚠️ 注意:设置过高会增加实体/关系命名冲突,降低合并阶段效率
|
||
MAX_PARALLEL_INSERT=4
|
||
|
||
### EMBEDDING_FUNC_MAX_ASYNC - Embedding 并发数
|
||
#
|
||
# 说明:同时进行的 Embedding API 调用数量
|
||
#
|
||
# 推荐设置:
|
||
# - OpenAI Embeddings: 16-32
|
||
# - 本地 Embedding 模型: 32-64
|
||
EMBEDDING_FUNC_MAX_ASYNC=16
|
||
|
||
### EMBEDDING_BATCH_NUM - Embedding 批处理大小
|
||
#
|
||
# 说明:单次 Embedding 请求处理的文本数量
|
||
#
|
||
# 推荐设置:
|
||
# - 默认值 10 太小,建议增加到 32-64
|
||
# - 如果使用本地模型,可以设置为 100-200
|
||
EMBEDDING_BATCH_NUM=32
|
||
|
||
###############################################################################
|
||
# 超时配置 (Timeout Configuration)
|
||
###############################################################################
|
||
|
||
### LLM_TIMEOUT - LLM 请求超时时间(秒)
|
||
#
|
||
# 说明:单次 LLM API 调用的最大等待时间
|
||
#
|
||
# 推荐设置:
|
||
# - 云端 API (OpenAI/Claude): 180 (3分钟)
|
||
# - 自托管模型 (快速): 60-120
|
||
# - 自托管模型 (大模型): 300-600
|
||
LLM_TIMEOUT=180
|
||
|
||
### EMBEDDING_TIMEOUT - Embedding 请求超时时间(秒)
|
||
#
|
||
# 推荐设置:
|
||
# - 云端 API: 30
|
||
# - 本地模型: 10-20
|
||
EMBEDDING_TIMEOUT=30
|
||
|
||
###############################################################################
|
||
# 预期性能提升
|
||
###############################################################################
|
||
#
|
||
# 使用此优化配置后,预期性能:
|
||
#
|
||
# | 配置场景 | 批次耗时 | 吞吐量 | 提升倍数 |
|
||
# |----------------------|-----------|---------------|---------|
|
||
# | 默认配置 (MAX_ASYNC=4) | ~1500秒 | 0.07 chunks/s | 1x |
|
||
# | 优化配置 (MAX_ASYNC=16) | ~400秒 | 0.25 chunks/s | 4x |
|
||
# | 激进配置 (MAX_ASYNC=32) | ~200秒 | 0.5 chunks/s | 8x |
|
||
#
|
||
# 您的 1417 chunks 总耗时预计:
|
||
# - 当前: ~20478秒 (5.7小时) ✗
|
||
# - 优化后: ~5000秒 (1.4小时) ✓ [4x 提升]
|
||
# - 激进优化: ~2500秒 (0.7小时) ✓ [8x 提升]
|
||
#
|
||
###############################################################################
|
||
|
||
###############################################################################
|
||
# 其他常用配置(根据需要取消注释)
|
||
###############################################################################
|
||
|
||
# ### Logging Configuration
|
||
# LOG_LEVEL=INFO
|
||
# LOG_MAX_BYTES=10485760
|
||
# LOG_BACKUP_COUNT=5
|
||
|
||
# ### LLM Configuration
|
||
# LLM_BINDING=openai
|
||
# LLM_BINDING_HOST=https://api.openai.com/v1
|
||
# LLM_MODEL_NAME=gpt-4o-mini
|
||
|
||
# ### Embedding Configuration
|
||
# EMBEDDING_BINDING=openai
|
||
# EMBEDDING_BINDING_HOST=https://api.openai.com/v1
|
||
# EMBEDDING_MODEL_NAME=text-embedding-3-small
|
||
# EMBEDDING_DIM=1536
|
||
|
||
###############################################################################
|
||
# 高级优化建议
|
||
###############################################################################
|
||
#
|
||
# 1. 使用本地 LLM 模型(避免网络延迟):
|
||
# - Ollama + DeepSeek-R1 / Qwen2.5
|
||
# - vLLM + Llama-3.1-70B
|
||
#
|
||
# 2. 使用本地 Embedding 模型:
|
||
# - sentence-transformers
|
||
# - BGE-M3 / GTE-large
|
||
#
|
||
# 3. 升级到更快的图数据库:
|
||
# - Neo4j → Memgraph (更快的内存图数据库)
|
||
# - NetworkX → Neo4j (生产环境)
|
||
#
|
||
# 4. 使用 SSD 存储(如果使用 JSON/NetworkX 存储)
|
||
#
|
||
# 5. 关闭 gleaning(如果不需要高精度):
|
||
# - entity_extract_max_gleaning=0
|
||
#
|
||
###############################################################################
|