From 8bafa49d5d326b6d2f40371d1c408ccb747d08c2 Mon Sep 17 00:00:00 2001 From: earayu Date: Fri, 23 May 2025 11:52:06 +0800 Subject: [PATCH] feat: add doc --- ...g: Concurrent Control Strategy Analysis.md | 286 ++++++++++++++++++ docs/assets/lightrag_llm_request_timeline.png | Bin 0 -> 120960 bytes docs/zh/LightRAG 多文档并发处理机制详解.md | 280 +++++++++++++++++ 3 files changed, 566 insertions(+) create mode 100644 docs/LightRAG Multi-Document Processing: Concurrent Control Strategy Analysis.md create mode 100644 docs/assets/lightrag_llm_request_timeline.png create mode 100644 docs/zh/LightRAG 多文档并发处理机制详解.md diff --git a/docs/LightRAG Multi-Document Processing: Concurrent Control Strategy Analysis.md b/docs/LightRAG Multi-Document Processing: Concurrent Control Strategy Analysis.md new file mode 100644 index 00000000..de3ef881 --- /dev/null +++ b/docs/LightRAG Multi-Document Processing: Concurrent Control Strategy Analysis.md @@ -0,0 +1,286 @@ +# LightRAG Multi-Document Processing: Concurrent Control Strategy Analysis + +LightRAG employs a multi-layered concurrent control strategy when processing multiple documents. This article provides an in-depth analysis of the concurrent control mechanisms at document level, chunk level, and LLM request level, helping you understand why specific concurrent behaviors occur. + +## Overview + +LightRAG's concurrent control is divided into three layers: + +1. **Document-level concurrency**: Controls the number of documents processed simultaneously +2. **Chunk-level concurrency**: Controls the number of chunks processed simultaneously within a single document +3. **LLM request-level concurrency**: Controls the global concurrent number of LLM requests + +## 1. Document-Level Concurrent Control + +**Control Parameter**: `max_parallel_insert` + +Document-level concurrency is controlled by the `max_parallel_insert` parameter, with a default value of 2. + +```python +# lightrag/lightrag.py +max_parallel_insert: int = field(default=int(os.getenv("MAX_PARALLEL_INSERT", 2))) +``` + +### Implementation Mechanism + +In the `apipeline_process_enqueue_documents` method, a semaphore is used to control document concurrency: + +```python +# lightrag/lightrag.py - apipeline_process_enqueue_documents method +async def process_document( + doc_id: str, + status_doc: DocProcessingStatus, + split_by_character: str | None, + split_by_character_only: bool, + pipeline_status: dict, + pipeline_status_lock: asyncio.Lock, + semaphore: asyncio.Semaphore, # Document-level semaphore +) -> None: + """Process single document""" + async with semaphore: # 🔥 Document-level concurrent control + # ... Process all chunks of a single document + +# Create document-level semaphore +semaphore = asyncio.Semaphore(self.max_parallel_insert) # Default 2 + +# Create processing tasks for each document +doc_tasks = [] +for doc_id, status_doc in to_process_docs.items(): + doc_tasks.append( + process_document( + doc_id, status_doc, split_by_character, split_by_character_only, + pipeline_status, pipeline_status_lock, semaphore + ) + ) + +# Wait for all documents to complete processing +await asyncio.gather(*doc_tasks) +``` + +## 2. Chunk-Level Concurrent Control + +**Control Parameter**: `llm_model_max_async` + +**Key Point**: Each document independently creates its own chunk semaphore! + +```python +# lightrag/lightrag.py +llm_model_max_async: int = field(default=int(os.getenv("MAX_ASYNC", 4))) +``` + +### Implementation Mechanism + +In the `extract_entities` function, **each document independently creates** its own chunk semaphore: + +```python +# lightrag/operate.py - extract_entities function +async def extract_entities(chunks: dict[str, TextChunkSchema], global_config: dict[str, str], ...): + # 🔥 Key: Each document independently creates this semaphore! + llm_model_max_async = global_config.get("llm_model_max_async", 4) + semaphore = asyncio.Semaphore(llm_model_max_async) # Chunk semaphore for each document + + async def _process_with_semaphore(chunk): + async with semaphore: # 🔥 Chunk concurrent control within document + return await _process_single_content(chunk) + + # Create tasks for each chunk + tasks = [] + for c in ordered_chunks: + task = asyncio.create_task(_process_with_semaphore(c)) + tasks.append(task) + + # Wait for all chunks to complete processing + done, pending = await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) + chunk_results = [task.result() for task in tasks] + return chunk_results +``` + +### Important Inference: System Overall Chunk Concurrency + +Since each document independently creates chunk semaphores, the theoretical chunk concurrency of the system is: + +**Theoretical Chunk Concurrency = max_parallel_insert × llm_model_max_async** + +For example: +- `max_parallel_insert = 2` (process 2 documents simultaneously) +- `llm_model_max_async = 4` (maximum 4 chunk concurrency per document) +- **Theoretical result**: Maximum 2 × 4 = 8 chunks simultaneously in "processing" state + +## 3. LLM Request-Level Concurrent Control (The Real Bottleneck) + +**Control Parameter**: `llm_model_max_async` (globally shared) + +**Key**: Although there might be 8 chunks "in processing", all LLM requests share the same global priority queue! + +```python +# lightrag/lightrag.py - __post_init__ method +self.llm_model_func = priority_limit_async_func_call(self.llm_model_max_async)( + partial( + self.llm_model_func, + hashing_kv=hashing_kv, + **self.llm_model_kwargs, + ) +) +# 🔥 Global LLM queue size = llm_model_max_async = 4 +``` + +### Priority Queue Implementation + +```python +# lightrag/utils.py - priority_limit_async_func_call function +def priority_limit_async_func_call(max_size: int, max_queue_size: int = 1000): + def final_decro(func): + queue = asyncio.PriorityQueue(maxsize=max_queue_size) + tasks = set() + + async def worker(): + """Worker that processes tasks in the priority queue""" + while not shutdown_event.is_set(): + try: + priority, count, future, args, kwargs = await asyncio.wait_for(queue.get(), timeout=1.0) + result = await func(*args, **kwargs) # 🔥 Actual LLM call + if not future.done(): + future.set_result(result) + except Exception as e: + # Error handling... + finally: + queue.task_done() + + # 🔥 Create fixed number of workers (max_size), this is the real concurrency limit + for _ in range(max_size): + task = asyncio.create_task(worker()) + tasks.add(task) +``` + +## 4. Chunk Internal Processing Mechanism (Serial) + +### Why Serial? + +Internal processing of each chunk strictly follows this serial execution order: + +```python +# lightrag/operate.py - _process_single_content function +async def _process_single_content(chunk_key_dp: tuple[str, TextChunkSchema]): + # Step 1: Initial entity extraction + hint_prompt = entity_extract_prompt.format(**{**context_base, "input_text": content}) + final_result = await use_llm_func_with_cache(hint_prompt, use_llm_func, ...) + + # Process initial extraction results + maybe_nodes, maybe_edges = await _process_extraction_result(final_result, chunk_key, file_path) + + # Step 2: Gleaning phase + for now_glean_index in range(entity_extract_max_gleaning): + # 🔥 Serial wait for gleaning results + glean_result = await use_llm_func_with_cache( + continue_prompt, use_llm_func, + llm_response_cache=llm_response_cache, + history_messages=history, cache_type="extract" + ) + + # Process gleaning results + glean_nodes, glean_edges = await _process_extraction_result(glean_result, chunk_key, file_path) + + # Merge results... + + # Step 3: Determine whether to continue loop + if now_glean_index == entity_extract_max_gleaning - 1: + break + + # 🔥 Serial wait for loop decision results + if_loop_result = await use_llm_func_with_cache( + if_loop_prompt, use_llm_func, + llm_response_cache=llm_response_cache, + history_messages=history, cache_type="extract" + ) + + if if_loop_result.strip().strip('"').strip("'").lower() != "yes": + break + + return maybe_nodes, maybe_edges +``` + +## 5. Complete Concurrent Hierarchy Diagram +![lightrag_indexing.png](assets%2Flightrag_indexing.png) + +### Chunk Internal Processing (Serial) +``` +Initial Extraction → Gleaning → Loop Decision → Complete +``` + +## 6. Real-World Scenario Analysis + +### Scenario 1: Single Document with Multiple Chunks +Assume 1 document with 6 chunks: + +- **Document level**: Only 1 document, not limited by `max_parallel_insert` +- **Chunk level**: Maximum 4 chunks processed simultaneously (limited by `llm_model_max_async=4`) +- **LLM level**: Global maximum 4 LLM requests concurrent + +**Expected behavior**: 4 chunks process concurrently, remaining 2 chunks wait. + +### Scenario 2: Multiple Documents with Multiple Chunks +Assume 3 documents, each with 10 chunks: + +- **Document level**: Maximum 2 documents processed simultaneously +- **Chunk level**: Maximum 4 chunks per document processed simultaneously +- **Theoretical Chunk concurrency**: 2 × 4 = 8 chunks processed simultaneously +- **Actual LLM concurrency**: Only 4 LLM requests actually execute + +**Actual state distribution**: +``` +# Possible system state: +Document 1: 4 chunks "processing" (2 executing LLM, 2 waiting for LLM response) +Document 2: 4 chunks "processing" (2 executing LLM, 2 waiting for LLM response) +Document 3: Waiting for document-level semaphore + +Total: +- 8 chunks in "processing" state +- 4 LLM requests actually executing +- 4 chunks waiting for LLM response +``` + +### Scenario 3: Resource Bottleneck Analysis + +**Timeline Example (max_parallel_insert=2, llm_model_max_async=4)**: +![lightrag_llm_request_timeline.png](assets%2Flightrag_llm_request_timeline.png) + +## 7. Performance Optimization Recommendations + +### Understanding the Bottleneck + +The real bottleneck is the global LLM queue, not the chunk semaphores! + +### Adjustment Strategies + +**Strategy 1: Increase LLM Concurrent Capacity** + +```bash +# Environment variable configuration +export MAX_PARALLEL_INSERT=2 # Keep document concurrency +export MAX_ASYNC=8 # 🔥 Increase LLM request concurrency +``` + +**Strategy 2: Balance Document and LLM Concurrency** + +```python +rag = LightRAG( + max_parallel_insert=3, # Moderately increase document concurrency + llm_model_max_async=12, # Significantly increase LLM concurrency + entity_extract_max_gleaning=0, # Reduce serial steps within chunks +) +``` + +## 8. Summary + +Key characteristics of LightRAG's multi-document concurrent processing mechanism: + +### Concurrent Layers +1. **Inter-document competition**: Controlled by `max_parallel_insert`, default 2 documents concurrent +2. **Theoretical Chunk concurrency**: Each document independently creates semaphores, total = max_parallel_insert × llm_model_max_async +3. **Actual LLM concurrency**: All chunks share global LLM queue, controlled by `llm_model_max_async` +4. **Intra-chunk serial**: Multiple LLM requests within each chunk execute strictly serially + +### Key Insights +- **Theoretical vs Actual**: System may have many chunks "in processing", but only few are actually executing LLM requests +- **Real Bottleneck**: Global LLM request queue is the performance bottleneck, not chunk semaphores +- **Optimization Focus**: Increasing `llm_model_max_async` is more effective than increasing `max_parallel_insert` diff --git a/docs/assets/lightrag_llm_request_timeline.png b/docs/assets/lightrag_llm_request_timeline.png new file mode 100644 index 0000000000000000000000000000000000000000..a494328b7e0d77b2bb681d4bdf4dff884ec42d26 GIT binary patch literal 120960 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
H$IxuaCh~90-EYB)>B0vMCp!}r9*;F7ylwz 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

!@(YJ*YE%zjKW&LqmnZ=u;%2E{FHaK=d#7YP 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 None: + """Process single document""" + async with semaphore: # 🔥 文档级别并发控制 + # ... 处理单个文档的所有chunks + +# 创建文档级别信号量 +semaphore = asyncio.Semaphore(self.max_parallel_insert) # 默认2 + +# 为每个文档创建处理任务 +doc_tasks = [] +for doc_id, status_doc in to_process_docs.items(): + doc_tasks.append( + process_document( + doc_id, status_doc, split_by_character, split_by_character_only, + pipeline_status, pipeline_status_lock, semaphore + ) + ) + +# 等待所有文档处理完成 +await asyncio.gather(*doc_tasks) +``` + +## 2. Chunk级别并发控制 + +**控制参数**:`llm_model_max_async` + +**关键点**:每个文档都会独立创建自己的chunk信号量! + +```python +# lightrag/lightrag.py +llm_model_max_async: int = field(default=int(os.getenv("MAX_ASYNC", 4))) +``` + +### 实现机制 + +在 `extract_entities` 函数中,**每个文档独立创建**自己的chunk信号量: + +```python +# lightrag/operate.py - extract_entities函数 +async def extract_entities(chunks: dict[str, TextChunkSchema], global_config: dict[str, str], ...): + # 🔥 关键:每个文档都会独立创建这个信号量! + llm_model_max_async = global_config.get("llm_model_max_async", 4) + semaphore = asyncio.Semaphore(llm_model_max_async) # 每个文档的chunk信号量 + + async def _process_with_semaphore(chunk): + async with semaphore: # 🔥 文档内部的chunk并发控制 + return await _process_single_content(chunk) + + # 为每个chunk创建任务 + tasks = [] + for c in ordered_chunks: + task = asyncio.create_task(_process_with_semaphore(c)) + tasks.append(task) + + # 等待所有chunk处理完成 + done, pending = await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) + chunk_results = [task.result() for task in tasks] + return chunk_results +``` + +### 重要推论:系统整体Chunk并发数 + +由于每个文档独立创建chunk信号量,系统理论上的chunk并发数是: + +**理论Chunk并发数 = max_parallel_insert × llm_model_max_async** + +例如: +- `max_parallel_insert = 2`(同时处理2个文档) +- `llm_model_max_async = 4`(每个文档最多4个chunk并发) +- 理论结果:最多 2 × 4 = 8个chunk同时处于"处理中"状态 + +## 3. LLM请求级别并发控制(真正的瓶颈) + +**控制参数**:`llm_model_max_async`(全局共享) + +**关键**:尽管可能有8个chunk在"处理中",但所有LLM请求共享同一个全局优先级队列! + +```python +# lightrag/lightrag.py - __post_init__方法 +self.llm_model_func = priority_limit_async_func_call(self.llm_model_max_async)( + partial( + self.llm_model_func, + hashing_kv=hashing_kv, + **self.llm_model_kwargs, + ) +) +# 🔥 全局LLM队列大小 = llm_model_max_async = 4 +``` + +### 优先级队列实现 + +```python +# lightrag/utils.py - priority_limit_async_func_call函数 +def priority_limit_async_func_call(max_size: int, max_queue_size: int = 1000): + def final_decro(func): + queue = asyncio.PriorityQueue(maxsize=max_queue_size) + tasks = set() + + async def worker(): + """Worker that processes tasks in the priority queue""" + while not shutdown_event.is_set(): + try: + priority, count, future, args, kwargs = await asyncio.wait_for(queue.get(), timeout=1.0) + result = await func(*args, **kwargs) # 🔥 实际LLM调用 + if not future.done(): + future.set_result(result) + except Exception as e: + # 错误处理... + finally: + queue.task_done() + + # 🔥 创建固定数量的worker(max_size个),这是真正的并发限制 + for _ in range(max_size): + task = asyncio.create_task(worker()) + tasks.add(task) +``` + +## 4. Chunk内部处理机制(串行) + +### 为什么是串行? + +每个chunk内部的处理严格按照以下顺序串行执行: + +```python +# lightrag/operate.py - _process_single_content函数 +async def _process_single_content(chunk_key_dp: tuple[str, TextChunkSchema]): + # 步骤1:初始实体提取 + hint_prompt = entity_extract_prompt.format(**{**context_base, "input_text": content}) + final_result = await use_llm_func_with_cache(hint_prompt, use_llm_func, ...) + + # 处理初始提取结果 + maybe_nodes, maybe_edges = await _process_extraction_result(final_result, chunk_key, file_path) + + # 步骤2:Gleaning(深挖)阶段 + for now_glean_index in range(entity_extract_max_gleaning): + # 🔥 串行等待gleaning结果 + glean_result = await use_llm_func_with_cache( + continue_prompt, use_llm_func, + llm_response_cache=llm_response_cache, + history_messages=history, cache_type="extract" + ) + + # 处理gleaning结果 + glean_nodes, glean_edges = await _process_extraction_result(glean_result, chunk_key, file_path) + + # 合并结果... + + # 步骤3:判断是否继续循环 + if now_glean_index == entity_extract_max_gleaning - 1: + break + + # 🔥 串行等待循环判断结果 + if_loop_result = await use_llm_func_with_cache( + if_loop_prompt, use_llm_func, + llm_response_cache=llm_response_cache, + history_messages=history, cache_type="extract" + ) + + if if_loop_result.strip().strip('"').strip("'").lower() != "yes": + break + + return maybe_nodes, maybe_edges +``` + +## 5. 完整的并发层次图 +![lightrag_indexing.png](..%2Fassets%2Flightrag_indexing.png) + + +## 6. 实际运行场景分析 + +### 场景1:单文档多Chunk +假设有1个文档,包含6个chunks: + +- 文档级别:只有1个文档,不受 `max_parallel_insert` 限制 +- Chunk级别:最多4个chunks同时处理(受 `llm_model_max_async=4` 限制) +- LLM级别:全局最多4个LLM请求并发 + +**预期行为**:4个chunks并发处理,剩余2个chunks等待。 + +### 场景2:多文档多Chunk +假设有3个文档,每个文档包含10个chunks: + +- 文档级别:最多2个文档同时处理 +- Chunk级别:每个文档最多4个chunks同时处理 +- 理论Chunk并发:2 × 4 = 8个chunks同时处理 +- 实际LLM并发:只有4个LLM请求真正执行 + +**实际状态分布**: +``` +# 可能的系统状态: +文档1: 4个chunks"处理中"(其中2个在执行LLM,2个在等待LLM响应) +文档2: 4个chunks"处理中"(其中2个在执行LLM,2个在等待LLM响应) +文档3: 等待文档级别信号量 + +总计: +- 8个chunks处于"处理中"状态 +- 4个LLM请求真正执行 +- 4个chunks等待LLM响应 +``` + +### 场景3:资源瓶颈分析 +[LightRAG 多文档并发处理机制详解.md](LightRAG%20%E5%A4%9A%E6%96%87%E6%A1%A3%E5%B9%B6%E5%8F%91%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3.md) + +## 7. 性能优化建议 + +### 理解瓶颈 + +**真正的瓶颈是全局LLM队列,而不是chunk信号量!** + +### 调整策略 + +**策略1:提高LLM并发能力** + +```bash +# 环境变量配置 +export MAX_PARALLEL_INSERT=2 # 保持文档并发 +export MAX_ASYNC=8 # 🔥 增加LLM请求并发数 +``` + +**策略2:平衡文档和LLM并发** + +```python +rag = LightRAG( + max_parallel_insert=3, # 适度增加文档并发 + llm_model_max_async=12, # 大幅增加LLM并发 + entity_extract_max_gleaning=0, # 减少chunk内串行步骤 +) +``` + +## 8. 总结 + +LightRAG的多文档并发处理机制的关键特点: + +### 并发层次 +1. **文档间争抢**:受 `max_parallel_insert` 控制,默认2个文档并发 +2. **理论Chunk并发**:每个文档独立创建信号量,总数 = `max_parallel_insert × llm_model_max_async` +3. **实际LLM并发**:所有chunk共享全局LLM队列,受 `llm_model_max_async` 控制 +4. **单Chunk内串行**:每个chunk内的多个LLM请求严格串行执行 + +### 关键洞察 +- **理论vs实际**:系统可能有很多chunk在"处理中",但只有少数在真正执行LLM请求 +- **真正瓶颈**:全局LLM请求队列是性能瓶颈,而不是chunk信号量 +- **优化重点**:提高 `llm_model_max_async` 比增加 `max_parallel_insert` 更有效