批量并发处理
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 模式将批处理能力正交组合到主类,避免继承链耦合