[Bug]: Infinite loop vectorization of the same file

在 RAGFlow v0.23.1 版本中运行文档向量化(parse + chunk + embedding)任务时触发。

[Bug]: Infinite loop vectorization of the same file

[Bug]: Infinite loop vectorization of the same file

快速结论:此问题在 RAGFlow 向量化任务执行时出现,表现为 Web UI 上显示的 “正在处理” 文件与后端服务日志实际处理文件不一致,且可能反复处理同一文件。优先排查 Redis 任务队列是否堆积,并重启 ragflow_server 恢复同步。

问题场景

在 RAGFlow v0.23.1 版本中运行文档向量化(parse + chunk + embedding)任务时触发。

报错原文

页面显示的处理文件,跟服务实际处理的文件不一致
服务日志显示重复处理同一文件(Infinite loop vectorization of the same file)

注:日志未输出显式 Error,但前端 /document/list 轮询展示状态与后端实际 Task 进度脱节。

原因分析

这是一个已知的 UI/状态同步 bug。根本原因在于 update_progress 机制使用 RedisDistributedLockThreadPoolExecutor,当文档被重新处理或任务队列出现竞争时,状态更新未能正确传播到前端。前端每 5 秒轮询 /document/list 并以 document 为单位展示进度,但后端实际跟踪的是 task ID,当多个 task 重叠或锁竞争时,UI 显示的仍是旧任务的进度,造成用户看到 “无限循环处理同一文件” 的假象。

环境排查

  • RAGFlow 镜像版本:swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.23.1(r0.23.1)
  • GitHub workspace commit ID:对应 v0.23.1 tag
  • 数据库类型:确认使用的是 MySQL(而非 MariaDB),因为 MariaDB 在部分版本中会导致解析进度显示异常
  • Redis 任务队列:检查是否有堆积或未清理的旧 task

解决步骤

  1. 重启 ragflow_server(可优先尝试):此操作通常能即刻恢复前后端进度同步。
  2. 清理 Redis 任务队列:清除 Redis 中可能残留的旧 vectorization task,防止新任务被错误复用旧锁。
  3. 确认数据库为 MySQL 而非 MariaDB:如果当前使用 MariaDB,建议迁移至 MySQL,或升级到 v0.17.2 之后的版本(v0.23.1 已包含部分修复,但此 bug 仍存在)。
  4. 升级 RAGFlow:部分 progress display 相关 bug 在 v0.17.2 之后已有修复,可尝试更新到更新的版本。

验证方法

重启 ragflow_server 或清理 Redis 队列后,重新提交一个文档进行向量化,观察 Web 页面显示的 “正在处理” 文件是否与服务日志中实际处理的文件名一致,且不再重复处理同一文件。

参考来源

infiniflow/ragflow #13327

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13331

发表回复

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