[Question]: why my RAPTOR always use the wrong embedding model?

RAGFlow 的 RAPTOR 任务没有继承你在知识库中设置的默认 Embedding 模型,而是错误地调用了 SiliconFlow 的 Embedding API,导致长文本触发 “input must have less than 512 tokens” 报错。优先检查 RAPTOR 相关配

快速结论:RAGFlow 的 RAPTOR 任务没有继承你在知识库中设置的默认 Embedding 模型,而是错误地调用了 SiliconFlow 的 Embedding API,导致长文本触发 “input must have less than 512 tokens” 报错。优先检查 RAPTOR 相关配置是否显式指定了 `BAAI/bge-large-zh-v1.5@BAAI` 这样的“模型名@供应商”格式。

适用环境:RAGFlow,涉及 RAPTOR 递归摘要任务、SiliconFlow(硅基流动)Embedding API、BAAI/bge-large-zh-v1.5 Embedding 模型;操作系统、Python、CUDA 版本在 Issue 中未明确,不补充。

最快修复方案:暂无确认的一步修复方案。根据 Issue 中的机器人回复,可优先尝试在任务配置中显式指定 Embedding 模型及工厂,格式为 `BAAI/bge-large-zh-v1.5@BAAI`,避免使用默认的 SiliconFlow 模型。

注意事项:该建议来自自动回复机器人,尚未得到用户验证;实际修复效果取决于 RAGFlow 版本对模型工厂解析的支持情况,请勿直接照搬为最终结论。

问题场景

用户在 RAGFlow 中启用了 RAPTOR(递归摘要)解析功能解析一份泰国财税 PDF 文档。知识库中默认 Embedding 模型设置为 BAAI/bge-large-zh-v1.5,默认对话/总结模型为 SiliconFlow 的 Qwen3。解析过程中 RAPTOR 任务触发了文本摘要,摘要结果需要再次向量化,此时系统没有调用用户设置的 BAAI/bge-large-zh-v1.5,而是调用了 https://api.siliconflow.cn/v1/embeddings,最终因输入 token 超过 512 上限而报错。

报错原文

[ERROR][Exception]: Exceptions from Trio nursery (1 sub-exception) -- SILICONFLOWEmbed.encode got invalid response from https://api.siliconflow.cn/v1/embeddings, text_batch:['**总结:**...'], res:{'code': 20042, 'message': 'input must have less than 512 tokens', 'data': None}

handle_task got exception for task ... "task_type": "raptor"

原因分析

可能原因:

  • RAPTOR 任务在向量化摘要文本时,没有读取知识库(KB)下设置的 embd_id(即 BAAI/bge-large-zh-v1.5@BAAI),而是回退到了租户或系统级的默认 Embedding 供应商(SiliconFlow)。
  • RAGFlow 中不同任务的模型引用机制可能存在差异;RAPTOR 的 embedding 调用路径可能来自 Chat 模型配置或全局默认配置,而不是文档解析时的 KB 配置。
  • SiliconFlow 的 BGE 或 Embedding 模型对单次输入长度限制为 512 token,而 RAPTOR 摘要生成的文本已经超过了该限制,触发上游 API 拒绝。

环境排查

  • 确认 RAGFlow 版本;不同版本对 “模型名@工厂名” 的解析逻辑可能不同。
  • 检查知识库(KB)的“嵌入模型”设置是否确实保存为 BAAI/bge-large-zh-v1.5@BAAI
  • 检查系统设置中的默认 Embedding 模型是否被设置成了 SiliconFlow 下的某个模型。
  • 检查任务日志中 embd_id 字段值是否为 BAAI/bge-large-zh-v1.5@BAAI;如果为空或显示为 SiliconFlow 模型,则说明配置未生效。
  • 确认使用的 SiliconFlow API Key 是否有权限访问所选的 Embedding 模型。

解决步骤

  1. 打开 RAGFlow 知识库设置,检查“Embedding 模型”字段,确认当前值为 BAAI/bge-large-zh-v1.5@BAAI,而不是只有模型名没有工厂前缀。
  2. 可优先尝试:将模型名改成带工厂前缀的完整格式,例如 BAAI/bge-large-zh-v1.5@BAAI,保存后重新解析文档。
  3. 如果问题依旧,检查 RAGFlow 全局“模型设置”或“供应商设置”中的默认 Embedding 模型是否被 SiliconFlow 抢占;若有,请将全局默认 Embedding 模型改回 BAAI/bge-large-zh-v1.5@BAAI
  4. 查看 RAPTOR 相关参数(如 max_tokenthresholdmax_cluster),确认摘要长度限制不会超过 Embedding 模型的 token 上限。
  5. 如果为 SiliconFlow 的 embedding 服务所限,考虑更换支持更长上下文的 Embedding 模型,或在本地部署 BGE 模型以避免第三方 API 限制。
  6. 若以上均无法解决,请在 GitHub Issue 中补充你的 RAGFlow 版本号以及完整的配置截图(注意打码 API Key)。

验证方法

重新触发 RAPTOR 解析任务,观察日志中 task_typeraptor 的任务是否仍调用 api.siliconflow.cn/v1/embeddings;若调用的是你指定的模型工厂(如 BAAI 本地或 HuggingFace 端点),且不再出现 input must have less than 512 tokens 错误,则说明修复成功。同时检查知识库中是否成功生成了 RAPTOR 摘要块。

参考来源

infiniflow/ragflow #7679

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21465

发表回复

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