From 3b1e77a6d49a5a136a70fad30cffe28b7cc1b7ca Mon Sep 17 00:00:00 2001 From: Idriss Sbaaoui <112825897+6ba3i@users.noreply.github.com> Date: Thu, 26 Mar 2026 21:01:07 +0800 Subject: [PATCH] Fix: shared KB embedding authorization for team members (#13809) ### What problem does this PR solve? fixes issue #13799 where team members get model not authorized when running RAG on an admin-shared knowledge base after the admin changes the KB embedding model (for example to bge-m3). ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/db/services/dialog_service.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/api/db/services/dialog_service.py b/api/db/services/dialog_service.py index 4289f507b5..dcd7cd6af6 100644 --- a/api/db/services/dialog_service.py +++ b/api/db/services/dialog_service.py @@ -257,8 +257,9 @@ def get_models(dialog): raise Exception("**ERROR**: Knowledge bases use different embedding models.") if embedding_list: - embd_model_config = get_model_config_by_type_and_name(dialog.tenant_id, LLMType.EMBEDDING, embedding_list[0]) - embd_mdl = LLMBundle(dialog.tenant_id, embd_model_config) + embd_owner_tenant_id = kbs[0].tenant_id + embd_model_config = get_model_config_by_type_and_name(embd_owner_tenant_id, LLMType.EMBEDDING, embedding_list[0]) + embd_mdl = LLMBundle(embd_owner_tenant_id, embd_model_config) if not embd_mdl: raise LookupError("Embedding model(%s) not found" % embedding_list[0]) @@ -1367,8 +1368,9 @@ async def async_ask(question, kb_ids, tenant_id, chat_llm_name=None, search_conf is_knowledge_graph = all([kb.parser_id == ParserType.KG for kb in kbs]) retriever = settings.retriever if not is_knowledge_graph else settings.kg_retriever - embd_model_config = get_model_config_by_type_and_name(tenant_id, LLMType.EMBEDDING, embedding_list[0]) - embd_mdl = LLMBundle(tenant_id, embd_model_config) + embd_owner_tenant_id = kbs[0].tenant_id + embd_model_config = get_model_config_by_type_and_name(embd_owner_tenant_id, LLMType.EMBEDDING, embedding_list[0]) + embd_mdl = LLMBundle(embd_owner_tenant_id, embd_model_config) chat_model_config = get_model_config_by_type_and_name(tenant_id, LLMType.CHAT, chat_llm_name) chat_mdl = LLMBundle(tenant_id, chat_model_config) if rerank_id: @@ -1449,9 +1451,11 @@ async def gen_mindmap(question, kb_ids, tenant_id, search_config={}): tenant_ids = list(set([kb.tenant_id for kb in kbs])) if tenant_embedding_list[0]: embd_model_config = get_model_config_by_id(tenant_embedding_list[0]) + embd_owner_tenant_id = kbs[0].tenant_id else: - embd_model_config = get_model_config_by_type_and_name(tenant_id, LLMType.EMBEDDING, kbs[0].embd_id) - embd_mdl = LLMBundle(tenant_id, embd_model_config) + embd_owner_tenant_id = kbs[0].tenant_id + embd_model_config = get_model_config_by_type_and_name(embd_owner_tenant_id, LLMType.EMBEDDING, kbs[0].embd_id) + embd_mdl = LLMBundle(embd_owner_tenant_id, embd_model_config) chat_id = search_config.get("chat_id", "") if chat_id: chat_model_config = get_model_config_by_type_and_name(tenant_id, LLMType.CHAT, chat_id)