LookupError: Model(bge-reranker-v2-m3) not authorized

该报错通常发生在 RAGFlow 通过 Python SDK 调用 retrieve 接口时,传入的 rerank_id 与当前租户在后台注册的模型名称不一致(缺少厂商后缀)或尚未被授权。优先排查 rerank_id 是否使用了带 @VLLM / ___VLLM 后缀的完整模型名。

快速结论:该报错通常发生在 RAGFlow 通过 Python SDK 调用 retrieve 接口时,传入的 rerank_id 与当前租户在后台注册的模型名称不一致(缺少厂商后缀)或尚未被授权。优先排查 rerank_id 是否使用了带 @VLLM / ___VLLM 后缀的完整模型名。

适用环境:RAGFlow(infiniflow/ragflow),Python 3.10(.venv 环境),vLLM 作为 rerank 模型推理服务(owned_by: "vllm")。Issue 未明确版本号,操作系统、CUDA、显卡信息缺省,不做推测。

最快修复方案:暂无确认的一步修复方案。可优先尝试将 rerank_idbge-reranker-v2-m3 改为带厂商后缀的完整名称,例如 bge-reranker-v2-m3@VLLMbge-reranker-v2-m3___VLLM,然后再调用 retrieve 接口。

注意事项:该方案基于 Issue 评论中维护者的经验性总结(来自 #8017、#8856、#11187 等关联 Issue),尚未在本 Issue 中得到用户回执验证。若改为带后缀名称后仍然报错,可能原因是 tenant_llm 表中该租户的模型记录状态异常(status 不为 1),需要管理员介入检查或重新注册。

问题场景

用户在使用 RAGFlow Python SDK(rag_object.retrieve())做检索测试时,传入 rerank_id="bge-reranker-v2-m3" 作为重排序模型参数。虽然通过浏览器访问 /v1/models 接口能看到该模型已在 vLLM 中注册(id: "bge-reranker-v2-m3"),但 RAGFlow 后端在执行 LLMBundle 初始化时仍抛出 LookupError,提示该模型未被授权给当前租户。

报错原文

File "/ragflow/api/apps/sdk/doc.py", line 1453, in retrieval_test
    rerank_mdl = LLMBundle(kb.tenant_id, LLMType.RERANK, llm_name=req["rerank_id"])
  File "/ragflow/api/db/services/tenant_llm_service.py", line 256, in __init__
    self.mdl = TenantLLMService.model_instance(tenant_id, llm_type, llm_name, lang=lang, **kwargs)
  File "/ragflow/.venv/lib/python3.10/site-packages/peewee.py", line 3128, in inner
    return fn(*args, **kwargs)
  File "/ragflow/api/db/services/tenant_llm_service.py", line 138, in model_instance
    model_config = TenantLLMService.get_model_config(tenant_id, llm_type, llm_name)
  File "/ragflow/api/db/services/tenant_llm_service.py", line 132, in get_model_config
    raise LookupError("Model({}) not authorized".format(mdlnm))
LookupError: Model(bge-reranker-v2-m3) not authorized

原因分析

核心问题不在 vLLM 侧,而在于 RAGFlow 的 TenantLLMService.model_instance()tenant_llm 表中查不到与 llm_name 精确匹配的记录。可能原因包括:

  • rerank_id 与注册名不一致:RAGFlow 后台注册的 rerank 模型名称通常带厂商后缀(如 bge-reranker-v2-m3@VLLMbge-reranker-v2-m3___VLLM),而用户直接使用了 vLLM /models 返回的裸模型名 bge-reranker-v2-m3,导致查表失败。
  • 模型未授权给当前租户:即使模型已在 vLLM 上线,如果管理员未通过后台 /add_llm 接口或管理界面为当前 tenant 注册该模型(且 status=1),当前租户无法调用。
  • 租户表数据异常:tenant_llm 表中可能存在冲突或失效记录(如多个同名记录、status 复位为 0)。

以上均为可能原因,Issue 中尚未给出数据库层面的直接日志或查询证据来锁定唯一根因。

环境排查

  • 登录 RAGFlow Web UI,进入 Retrieval Testing 页面,查看 Rerank model 下拉菜单中实际显示的有效 rerank_id(只有下拉菜单中的 ID 才被当前租户授权)。
  • 确认 vLLM 服务端 /v1/models 返回的模型 ID 与 RAGFlow 后台注册名称是否一致(注意后缀差异)。
  • 请管理员检查 tenant_llm 表中当前租户的 rerank 模型记录:llm_factory 是否为 VLLM、llm_name 是否包含正确的 ___VLLM@VLLM 后缀,以及 status 是否为 1。
  • 排查 Python SDK 请求中是否引入多余空格或大小写不一致(例如 bge-reranker-v2-M3)。

解决步骤

  1. 打开 RAGFlow Web UI,进入 Retrieval Testing 页面,在 Rerank model 下拉菜单中复制当前租户可用的完整 rerank_id(通常形如 bge-reranker-v2-m3@VLLMbge-reranker-v2-m3___VLLM)。
  2. 将 Python 调用中的 rerank_id 参数替换为从下拉菜单复制的完整 ID,重新调用 rag_object.retrieve()
  3. 如果下拉菜单中没有可用的 rerank 模型,说明当前租户尚未授权任何 rerank 模型,必须联系管理员在后台注册模型:通过 /v1/api/add_llm 接口或管理界面,指定 llm_factory="VLLM"llm_name="bge-reranker-v2-m3___VLLM"(或其他带后缀的规范名称),并确保 status=1,绑定到当前租户。
  4. 若上述步骤后仍报错,管理员需查询 tenant_llm 表,检查是否存在多条同名记录或状态为 0 的残留记录;如有冲突,清理后重新注册。

验证方法

修改 rerank_id 后再次调用 rag_object.retrieve(),若不再抛出 LookupError 且能正常返回排序后的检索结果,则说明问题已解决。也可以通过 RAGFlow Web UI 的 Retrieval Testing 页面用同一个 rerank 模型手动测试一次,确认 UI 侧能正常出结果后再回验 SDK 调用。

参考来源

infiniflow/ragflow #11811

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20439

发表回复

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