快速结论:该报错通常发生在 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_id 从 bge-reranker-v2-m3 改为带厂商后缀的完整名称,例如 bge-reranker-v2-m3@VLLM 或 bge-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@VLLM或bge-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)。
解决步骤
- 打开 RAGFlow Web UI,进入 Retrieval Testing 页面,在 Rerank model 下拉菜单中复制当前租户可用的完整 rerank_id(通常形如
bge-reranker-v2-m3@VLLM或bge-reranker-v2-m3___VLLM)。 - 将 Python 调用中的
rerank_id参数替换为从下拉菜单复制的完整 ID,重新调用rag_object.retrieve()。 - 如果下拉菜单中没有可用的 rerank 模型,说明当前租户尚未授权任何 rerank 模型,必须联系管理员在后台注册模型:通过
/v1/api/add_llm接口或管理界面,指定llm_factory="VLLM"、llm_name="bge-reranker-v2-m3___VLLM"(或其他带后缀的规范名称),并确保status=1,绑定到当前租户。 - 若上述步骤后仍报错,管理员需查询
tenant_llm表,检查是否存在多条同名记录或状态为 0 的残留记录;如有冲突,清理后重新注册。
验证方法
修改 rerank_id 后再次调用 rag_object.retrieve(),若不再抛出 LookupError 且能正常返回排序后的检索结果,则说明问题已解决。也可以通过 RAGFlow Web UI 的 Retrieval Testing 页面用同一个 rerank 模型手动测试一次,确认 UI 侧能正常出结果后再回验 SDK 调用。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


