![[Bug]:Ollama vision models cannot be used to parse datasets](https://www.chat-gpts.plus/wp-content/uploads/2026/07/9614-a5a0e10a.jpg)
[Bug]:Ollama vision models cannot be used to parse datasets
快速结论:该问题发生在 RAGFlow 使用 Ollama 视觉模型(如 qwen2.5vl)进行 PDF 数据集解析时。优先排查点:RAGFlow 的 picture 分块逻辑始终会应用一个 OCR 长度截断,只有提取的文本足够短时才会调用视觉模型;且视觉模型选择受全局 IMAGE2TEXT 配置控制,而不是数据集级别的 parser_config。
问题场景
用户使用 RAGFlow v0.20.3 版本,通过 Docker Compose 部署(带 GPU 支持)。在数据集解析步骤中,期望通过 API 设置 chunk_method: "picture" 和 parser_config.layout_recognize: "qwen2.5vl:7b-q4_K_M@Ollama" 来让 RAGFlow 调用 Ollama 视觉模型对 PDF 进行图片级解析(image2text),但实际运行时:
- 任务心跳显示
parser_id: "picture",但 executor 在调用视觉模型前崩溃; - Ollama 日志中仅出现
/api/embeddings请求,未出现/api/generate或/api/chat; - 当尝试在界面选择 qwen2.5vl 模型作为解析器时,系统默认回退到 naive 解析器,并报整数/字符串类型错误;
- 上传 UI 本地文件限制为 8MB(S3 上传被禁用)。
报错原文
[executor crash before any vision call]
Task heartbeat shows parser_id: "picture" and correct layout_recognize/img2txt_id, but the executor crashes before any vision call.
[Ollama logs]
Only /api/embeddings calls; no vision calls.
[Fallback issue]
When I attempt to select the qwen2.5vl model as the Parser, it always defaults to naive, and I get an integer/string error in my chunk.
原因分析
RAGFlow 的 picture 分块代码(rag/app/picture.py)在设计上始终首先应用 OCR 长度截断:如果 OCR 提取的文本过长,则跳过视觉模型(Ollama),直接返回 OCR 输出。这意味着视觉模型仅对极短的图片被调用,且此行为无法通过数据集级别的 API 配置可靠控制。此外,视觉模型的选择仅由系统/租户级别的全局 IMAGE2TEXT 配置决定,parser_config.layout_recognize 的设置不会影响 picture 分块的视觉模型路由。这是代码中的有意设计,而非动态错误或配置错误。
近期更新(PR #9472)修复了 Ollama 视觉模型的 base64 头问题(去掉了 data: URI 前缀),但 OCR 长度截断导致的视觉模型跳过问题仍然存在。此外,如果 API 请求中 parser_id、parser_config 等相关字段命名或配置有误,也可能触发回退到 naive 解析器以及整数/字符串错误。
环境排查
- RAGFlow 镜像版本:
v0.20.3-11-g09570c73 slim - 部署方式:Docker Compose(带 GPU 支持)
- 主机 OS:Windows 11 + WSL2 / 容器内 Ubuntu 22.04
- Ollama 模型:
qwen2.5vl:7b-q4_K_M - 嵌入模型:
nomic-embed-text:latest - 数据库/缓存:MySQL + Redis (DB=1)
- 显卡:NVIDIA Quadro RTX 8000(驱动版本 580.88,CUDA 版本 13.0)
解决步骤
- 确认全局 IMAGE2TEXT 配置:在 RAGFlow 的 Model Providers 页面中,确保默认的 image2text 提供者设置为
qwen2.5vl:7b-q4_K_M@Ollama,且 API 地址正确(例如http://ollama:11434)。 - 理解限制:当前设计下,picture 分块会先执行 OCR,仅当 OCR 文本非常短时才调用视觉模型。如果需要视觉模型处理所有图片,可能原因:需要修改源码绕过 OCR 长度截断,或等待后续版本更新。
- 检查 API 请求参数:确认
PUT /api/v1/datasets/{dataset_id}的请求体中parser_config字段的名称和嵌套结构是否完全正确,尤其是layout_recognize的拼写和格式。可优先尝试仅使用全局配置,而不在数据集级别设置layout_recognize。 - 验证 Ollama 服务:单独测试 Ollama 视觉模型是否正常工作(例如通过 docker 或 curl 调用
/api/generate)。 - 检查上传限制:如果使用 UI 上传,注意 nightly 版本的本地上传限制为 8MB。可通过 API 上传大文件:
POST /api/v1/datasets/{dataset_id}/documents(multipart 格式)。
验证方法
检查 RAGFlow 日志中是否出现 parser_id: "picture" 且有正常的 vision 调用过程,同时检查 Ollama 日志中是否出现 /api/generate 或 /api/chat 请求。如果视觉模型被调用且解析完成,则问题解决。

![投机性增长与AI“泡沫”[pdf]](https://www.chat-gpts.plus/wp-content/uploads/2026/07/ai_cover_5-510-768x403.jpg)

![必须积极资助开源AI [pdf]](https://www.chat-gpts.plus/wp-content/uploads/2026/07/ai_cover_3-515-768x403.jpg)