[Question]: “Embedding extraction from file path is not supported.”

该报错通常出现在 RAGFlow 使用非本地对象存储(如阿里云 OSS)解析文档时,解析流程拿到了文件路径而非文件内容/二进制流,于是抛出 Embedding extraction from file path is not supported. 。优先排查存储后端配置与文档访问链路是否一致,并确认

快速结论:该报错通常出现在 RAGFlow 使用非本地对象存储(如阿里云 OSS)解析文档时,解析流程拿到了文件路径而非文件内容/二进制流,于是抛出 Embedding extraction from file path is not supported.。优先排查存储后端配置与文档访问链路是否一致,并确认是否为已知的主分支代码问题。

适用环境:RAGFlow(本地基于 main 分支构建的 Docker);Python 3.12.12(日志中 cpython-3.12.12-linux-x86_64-gnu);存储后端为阿里云 OSS;解析器 parser_id 为 naive,layout_recognize 为 DeepDOC;嵌入模型 BAAI/bge-large-zh-v1.5@SILICONFLOW。CUDA、显卡型号在 Issue 中未提供。

最快修复方案:暂无确认的一步修复方案。Issue 中用户使用 main 分支自行构建 Docker 后出现该问题,需先按下方排查步骤确认存储链路与代码版本。

注意事项:Issue 中的评论与日志未给出明确修复动作,上述方向属于基于日志的优先排查建议,并非已验证的最终解法;修改存储配置或替换代码版本前请先备份数据集与配置。

问题场景

用户用 RAGFlow 将阿里云 OSS 作为存储后端,往一个知识库数据集中上传了 2 个 Markdown 文件(例如 investor_陈睿.md),随后在文档解析/分块阶段触发报错,任务 handle_task 失败并写入错误进度消息。用户使用的是 main 分支并本地构建 Docker。

报错原文

Embedding extraction from file path is not supported.

2026-01-21 22:27:34,763 ERROR    18 Error processing batch: 'NoneType' object has no attribute 'tenant_id'
2026-01-21 22:32:07,477 INFO     21 set_progress(f53d108af6d511f09bcabfb261b74e64), progress: -1, progress_msg: 22:32:07 [ERROR][Exception]: Embedding extraction from file path is not supported.
2026-01-21 22:32:07,478 ERROR    21 handle_task got exception for task {...}
Traceback (most recent call last):
  File "/ragflow/rag/svr/task_executor.py", line 1205, in handle_task
    await do_handle_task(task)
  ...
  File "/ragflow/rag/app/naive.py", line 775, in chunk
    raise Exception("Embedding extraction from file path is not supported.")
Exception: Embedding extraction from file path is not supported.

原因分析

从调用栈看,异常在 rag/app/naive.py 的 chunk() 中主动抛出,说明解析到 embedding 提取阶段时,代码拿到的是“文件路径”而不是可读取的内容对象,因此拒绝继续处理。结合用户使用阿里云 OSS 作为存储,可能原因包括:

  • 存储后端为 OSS 时,文档下载/读取环节未正确把对象下载到本地或转换为可读流,导致下游只拿到路径(可能原因);
  • 本地构建的 main 分支代码与 OSS 存储适配存在差异或尚未合并的修复(可能原因);
  • 同时出现的 'NoneType' object has no attribute 'tenant_id' 说明批次处理上下文中的租户对象为空,可能进一步影响文件解析链路(可能原因)。

上述均为基于日志的推断,Issue 中未给出根因确认。

环境排查

  • 确认 RAGFlow 是否为本地基于 main 分支构建的 Docker 镜像,以及具体 commit / 构建时间。
  • 确认存储后端配置(阿里云 OSS 的 endpoint、bucket、AccessKey 是否可读写,路径前缀是否正确)。
  • 确认文档所在位置是否为对象存储路径,而非可被解析器直接读取的本地文件。
  • 确认 Python 版本与日志一致(日志为 3.12.12)及其他关键依赖版本。
  • 确认任务日志中是否同时出现 'NoneType' object has no attribute 'tenant_id',判断是否与租户上下文缺失相关。
  • CUDA、显卡型号在 Issue 中未提供,暂不作为排查项。

解决步骤

  1. 先复现并记录完整日志:保留 handle_task 任务 JSON 与 naive.py 的 traceback,确认异常始终发生在 rag/app/naive.py 的 chunk()。
  2. 核对存储配置:检查 RAGFlow 使用的 OSS endpoint / bucket / 凭据,并确认上传的 Markdown 文件确实存在于该 bucket 的预期路径下。
  3. 确认文件访问方式:观察解析流程是读取本地文件内容还是只拿到对象存储路径;如果只拿到路径,则当前代码路径无法从该路径直接做 embedding 提取。
  4. 检查是否同时存在 tenant_id 相关的 None 报错,若存在,先排查租户/批次上下文初始化是否正常。
  5. 如怀疑是本地 main 分支构建问题,可优先尝试切换到已修复该问题的版本或提交(Issue 未点名具体版本,需自行对照上游变更确认),再重新构建 Docker 并复现。
  6. 若仍无法解决,在上游 Issue 中补充完整环境信息、存储类型与复现步骤,便于定位是否为 OSS 场景下的已知缺陷。

验证方法

重新上传同一批 Markdown 文件到数据集并触发解析,观察 set_progress 的 progress_msg 不再出现 Embedding extraction from file path is not supported.,任务 handle_task 正常完成且没有 Exception 抛出,文档分块与 embedding 流程正常结束。

参考来源

infiniflow/ragflow #12759

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29135

发表回复

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