![[Bug]: PDF document parsing problem](https://www.chat-gpts.plus/wp-content/uploads/2026/07/9719-fd79a576.jpg)
[Bug]: PDF document parsing problem
快速结论:该报错通常在使用 GPU 部署 RAGFlow 服务器解析 PDF 文档时触发,优先排查是否在 GPU 上运行了 RAGFlow 主服务器。已知最佳实践是将 RAGFlow 主服务器部署在 CPU 上,仅让 Embedding 推理服务使用 GPU。
问题场景
用户在 RAGFlow 中解析 PDF 文档时触发该错误,使用了“Presentation”切片方法。即使 GPU 显存高达 48G,解析过程仍会失败。系统日志中出现 ONNXRuntimeError 和内存分配失败异常。
报错原文
11:04:34 Page(4~5): [ERROR]Internal server error while chunking: Exceptions from Trio nursery (1 sub-exception)
11:04:34 [ERROR][Exception]: Exceptions from Trio nursery (1 sub-exception) -- [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Non-zero status code returned while running Clip node. Name:'p2o.Clip.6' Status Message: /onnxruntime_src/onnxruntime/core/framework/bfc_arena.cc:376 void* onnxruntime::BFCArena::AllocateRawInternal(size_t, bool, onnxruntime::Stream*, bool, onnxruntime::WaitNotificationFn) Available memory of 0 is smaller than requested bytes of 65974272
原因分析
该 ONNXRuntime 内存分配错误是 RAGFlow 的已知问题。即使 GPU 显存充足(如 48G),也可能出现此错误。核心原因在于 RAGFlow 主服务器本身并未设计使用 GPU 进行 PDF 解析,在 GPU 上部署主服务器时,无论可用显存多少,ONNXRuntime 都可能在执行 Clip 等算子时出现内存分配失败。社区推荐的方案是将 RAGFlow 主服务器部署在 CPU 上,GPU 仅用于 Embedding 推理服务。如果必须在 GPU 上运行,需要确保 CUDA、PyTorch 和 ONNXRuntime 版本兼容(建议 onnxruntime 和 onnxruntime-gpu 至少升级到 1.18.0),但 GPU 部署仍不被推荐。
环境排查
- 确认 RAGFlow 主服务器是否启用了 GPU(检查 docker-compose 文件中是否包含 GPU 资源配置)。
- 确认 RAGFlow 版本是否为 issue 中提到的“19.1”或更高版本。
- 检查 onnxruntime 和 onnxruntime-gpu 的版本是否为 1.18.0 及以上。
- 检查操作系统参数
vm.max_map_count是否至少为 262144。 - 确认是否存在并发处理大文档的情况。
解决步骤
- 优先尝试切换到 CPU 部署:
- 如果使用 Docker Compose,使用
docker-compose.yml(而非docker-compose-gpu.yml),或在 GPU 版本中删除 ragflow 服务下的deploy.resources.reservations.devices配置(去掉driver: nvidia和capabilities: [gpu]等 GPU 相关项)。 - 在环境变量中设置
CUDA_VISIBLE_DEVICES=''(空字符串),使所有 OCR 和模型推理只使用 CPU。
- 如果使用 Docker Compose,使用
- 如果必须使用 GPU(不推荐):
- 确保 CUDA、PyTorch、ONNXRuntime 按 CUDA → PyTorch → ONNX 的正确顺序安装。
- 将 onnxruntime 和 onnxruntime-gpu 升级到 1.18.0 及以上版本。
- 调整解析参数:
- 在前端知识库配置中,将
task_page_size设置为较小值(如 1~8),减少单次处理页数。 - 如果不需要高级图片/表格识别,将解析器类型从
deepdoc改为native或Plain Text。
- 在前端知识库配置中,将
- 避免并发处理大文档:一次只处理一个文档。
- 设置系统参数:在 Linux 上执行
sudo sysctl -w vm.max_map_count=262144,并建议写入/etc/sysctl.conf以持久生效。
验证方法
重新上传并解析之前报错的 PDF 文档,观察日志中是否不再出现 [ONNXRuntimeError] 和 Exceptions from Trio nursery 等错误,文档解析成功并生成切片。若切换到 CPU 部署后问题消失,即为确认解决。



