[Bug]: parsing markdown error: failed to encode response: json: unsupported value: NaN (status code: 500)

该报错通常发生在 RAGFlow 使用 Ollama 嵌入模型解析 Markdown 文件时,嵌入模型返回了包含 NaN(非数值)的向量,导致 JSON 序列化失败并返回 500。优先排查 Ollama 服务的稳定性以及嵌入响应中是否包含 NaN 值。

快速结论:该报错通常发生在 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)是否可稳定复现。

解决步骤

  1. 删除解析失败的文档,重新上传并触发解析,确认是否为 Ollama 超时或异常响应导致的临时性问题。
  2. 直接向 Ollama 发送测试嵌入请求(例如通过 curl 调用 /api/embed),检查返回的 JSON 中是否包含 NaN 值,确认嵌入服务是否稳定。
  3. 如果问题持续,考虑切换嵌入模型或检查 Ollama 服务的日志,排查是否存在性能或响应异常。
  4. (可选)如果具备源码修改能力,可在 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")
  5. 关注上游修复进展,PR #15266 已提交但尚未合并,后续版本可能包含该修复。

验证方法

重新上传之前解析失败的 Markdown 文件,观察解析任务是否顺利完成;同时确认 Ollama 测试请求返回的嵌入向量中不包含 NaN 值。如果问题不再出现,且多次重复上传均能正常解析,说明问题已解决。

参考来源

infiniflow/ragflow #15392

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20641

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注