问题域/PD-103

批量并发处理

Batch & Concurrent Processing

大规模文档的并发解析、进度追踪与错误聚合

子问题

1.并发度控制与资源限制

2.进度追踪与报告

3.错误聚合与部分失败处理

4.文件夹递归扫描与过滤

5.同步/异步双模式支持

6.CPU 密集型解析与 IO 密集型 LLM 调用的异构并发策略选择

7.两阶段批处理中解析与入库的解耦协调

各项目的解法1 solutions

Signals

横向对比

维度RAG-Anything
并发模型双层架构:外层 ThreadPoolExecutor 管文件解析,内层 asyncio.Semaphore 管 LLM 调用
进度追踪tqdm 进度条 + asyncio.Lock 保护的百分比日志(每 10% 输出一次)
错误处理BatchProcessingResult 聚合成功/失败列表 + errors 字典,gather(return_exceptions=True) 隔离异常
配置方式RAGAnythingConfig dataclass + 环境变量覆盖,max_concurrent_files 默认 1
文件过滤16 种扩展名白名单 + 递归/非递归目录扫描,集合运算动态获取支持格式
两阶段解耦先 BatchParser 并行解析,再逐个 process_document_complete 入库 RAG

最佳实践

1.使用 Semaphore 控制并发上限

2.提供 BatchProcessingResult 结构化结果

3.支持 dry-run 模式预检

4.外层用 ThreadPoolExecutor 处理同步阻塞的 OCR 解析,内层用 asyncio.Semaphore 处理异步 LLM 调用

5.通过 Mixin 模式将批处理能力正交组合到主类,避免继承链耦合