{"record":{"id":"ff37eb6a46936d03","repo":"infiniflow/ragflow","slug":"embedding-model-s-not-found","errorCode":null,"errorMessage":"Embedding model(%s) not found","messagePattern":"Embedding model\\((.+?)\\) not found","errorType":"exception","errorClass":"LookupError","httpStatus":null,"severity":"error","filePath":"api/db/services/dialog_service.py","lineNumber":366,"sourceCode":"            answer = await chat_mdl.async_chat(system_prompt, msg, dialog.llm_setting, images=image_files)\n        user_content = msg[-1].get(\"content\", \"[content not available]\")\n        logging.debug(\"User: {}|Assistant: {}\".format(user_content, answer))\n        yield {\"answer\": answer, \"reference\": {}, \"audio_binary\": tts(tts_mdl, answer), \"prompt\": \"\", \"created_at\": time.time()}\n\n\ndef get_models(dialog, trace_context=None, langfuse_session_id=None):\n    embd_mdl, chat_mdl, rerank_mdl, tts_mdl = None, None, None, None\n    kbs = KnowledgebaseService.get_by_ids(dialog.kb_ids)\n    err = validate_dataset_embedding_models(kbs)\n    if err:\n        raise Exception(err)\n\n    if kbs and kbs[0].embd_id:\n        embd_owner_tenant_id = kbs[0].tenant_id\n        embd_model_config = resolve_model_config(embd_owner_tenant_id, LLMType.EMBEDDING, kbs[0].embd_id)\n        embd_mdl = LLMBundle(embd_owner_tenant_id, embd_model_config, trace_context=trace_context, langfuse_session_id=langfuse_session_id)\n        if not embd_mdl:\n            raise LookupError(\"Embedding model(%s) not found\" % kbs[0].embd_id)\n\n    if dialog.llm_id:\n        if dialog.tenant_llm_id:\n            try:\n                chat_model_config = get_model_config_by_id(dialog.tenant_id, LLMType.CHAT, dialog.tenant_llm_id)\n            except LookupError:\n                chat_model_config = resolve_model_config(dialog.tenant_id, LLMType.CHAT, dialog.llm_id)\n        else:\n            chat_model_config = resolve_model_config(dialog.tenant_id, LLMType.CHAT, dialog.llm_id)\n    else:\n        chat_model_config = get_tenant_default_model_by_type(dialog.tenant_id, LLMType.CHAT)\n\n    chat_mdl = LLMBundle(dialog.tenant_id, chat_model_config, trace_context=trace_context, langfuse_session_id=langfuse_session_id)\n\n    if dialog.rerank_id:\n        if dialog.tenant_rerank_id:\n            try:\n                rerank_model_config = get_model_config_by_id(dialog.tenant_id, LLMType.RERANK, dialog.tenant_rerank_id)","sourceCodeStart":348,"sourceCodeEnd":384,"githubUrl":"https://github.com/infiniflow/ragflow/blob/554fb1133ac3861732235ad9c377eb5e0a770665/api/db/services/dialog_service.py#L348-L384","documentation":"LookupError raised in get_models when LLMBundle construction for the embedding model returns falsy even though the first dataset has an embd_id. In practice LLMBundle raises on missing configuration, so this guard fires mainly when the bundle factory returns None — i.e. the embedding model reference exists on the dataset but cannot be resolved to a usable model instance for the owner tenant.","triggerScenarios":"Chat/ask against a dialog whose first kb has embd_id set, but resolve_model_config/LLMBundle yield nothing — e.g. model provider row deleted, tenant_model binding removed, or API key for the provider missing so the bundle cannot be constructed.","commonSituations":"Embedding provider uninstalled or disabled after datasets were built; tenant model configuration reset; switching from a composite model id whose instance no longer exists.","solutions":["Open the model provider settings and re-add/re-enable the embedding model named by kb.embd_id with a valid API key.","Verify the tenant_model row / tenant_embd_id binding still resolves for the dataset's owner tenant.","If the model is permanently gone, re-embed the dataset with a currently configured embedding model."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"cfg = resolve_model_config(kb.tenant_id, LLMType.EMBEDDING, kb.embd_id) if kb.embd_id else None\nif cfg is None:\n    raise ValueError(f\"embedding model {kb.embd_id!r} not resolvable for tenant {kb.tenant_id}\")","typeGuard":null,"tryCatchPattern":"try:\n    embd_mdl, chat_mdl, *_ = get_models(dialog)\nexcept LookupError as e:\n    # embedding/provider config broken: send user to model provider settings\n    report_model_config_error(str(e), dialog.kb_ids)","preventionTips":["Health-check configured models on startup or before chat (resolve each dataset's embd_id).","Warn in the UI when a dataset's embedding provider is disabled or keyless."],"tags":["lookup","embedding-model","model-provider","dialog"],"backgroundTag":null,"analyzedSha":"554fb1133ac3861732235ad9c377eb5e0a770665","analyzedAt":"2026-08-15T09:20:16.380Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}