快速结论:该报错通常发生在 RAGFlow 使用 Ollama 嵌入模型解析 Markdown 文件时,嵌入模型返回了包含 NaN(非数值)的向量,导致 JSON 序列化失败并返回 500。优先排查 Ollama 服务的稳定性以及嵌入响应中是否包含 NaN 值。
适用环境:RAGFlow v0.25.5(commit c3b38d397f136414cbaaad46f7ff4bd73f3d875d)、Tesla V100 32G、Ubuntu 24.04、Ollama 嵌入模型 qwen3-embedding(bge-m3 同样出现此问题)。
最快修复方案:暂无确认的一步修复方案,该问题在 v0.25.5 中是已知 bug,相关修复 PR #15266 尚未合并。可优先尝试删除受影响文档并重新上传/解析,同时验证 Ollama 嵌入服务的稳定性。
注意事项:重新解析只能解决临时性问题,若嵌入模型本身反复返回 NaN,问题会再次出现;源码级修复方案尚未经过官方验证,仅作为参考。
问题场景
用户使用 RAGFlow v0.25.5,通过 API 上传 Markdown 文件并触发解析任务时,解析流程在绑定嵌入模型阶段失败。即使文件很小(不足 1KB)、没有明显特殊字符,解析失败的概率依然非常高。用户使用 Ollama 部署的 qwen3-embedding 作为嵌入模型,切换为 bge-m3 后仍出现相同错误。
报错原文
[ERROR]Fail to bind embedding model: failed to encode response: json: unsupported value: NaN (status code: 500)
[ERROR][Exception]: failed to encode response: json: unsupported value: NaN (status code: 500)
原因分析
此问题在 RAGFlow v0.25.5 及更早版本中是已知 bug。可能原因包括:
- Ollama 嵌入模型的响应中缺少 NaN 验证步骤,异常输入文本可能触发模型返回无效向量,NaN 值随之传播到下游逻辑。
- 检索评分边界情况(如空块列表上的
np.mean()或除零)可能产生 NaN。 - 响应序列化路径直接使用
json.dumps(),未处理 NaN 值,导致严格 JSON 解析器拒绝。
问题呈间歇性(”失败概率很高”但并非绝对),取决于具体文本块是否触发嵌入模型或评分逻辑的边界情况。
环境排查
- 确认 RAGFlow 镜像版本是否为 v0.25.5 或更早版本。
- 检查 Ollama 服务是否稳定运行,确认 qwen3-embedding 或 bge-m3 模型加载正常。
- 直接向 Ollama 发送测试嵌入请求,确认返回的向量中不包含 NaN 或无穷值。
- 确认解析任务的触发方式(API 上传)和文件类型(Markdown)是否可稳定复现。
解决步骤
- 删除解析失败的文档,重新上传并触发解析,确认是否为 Ollama 超时或异常响应导致的临时性问题。
- 直接向 Ollama 发送测试嵌入请求(例如通过 curl 调用 /api/embed),检查返回的 JSON 中是否包含 NaN 值,确认嵌入服务是否稳定。
- 如果问题持续,考虑切换嵌入模型或检查 Ollama 服务的日志,排查是否存在性能或响应异常。
- (可选)如果具备源码修改能力,可在
rag/llm/embedding_model.py中获取嵌入响应后添加 NaN 检查,例如:import math # After getting embedding from Ollama embedding = res["embedding"] if any(math.isnan(v) for v in embedding): raise Exception("Embedding model returned NaN values") - 关注上游修复进展,PR #15266 已提交但尚未合并,后续版本可能包含该修复。
验证方法
重新上传之前解析失败的 Markdown 文件,观察解析任务是否顺利完成;同时确认 Ollama 测试请求返回的嵌入向量中不包含 NaN 值。如果问题不再出现,且多次重复上传均能正常解析,说明问题已解决。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


