{"record":{"id":"2a4e01dc0da417d7","repo":"SillyTavern/SillyTavern","slug":"extras-module-missing","errorCode":"extras_module_missing","errorMessage":"Vectors: Embeddings module missing","messagePattern":"Vectors: Embeddings module missing","errorType":"error_code","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"public/scripts/extensions/vectors/index.js","lineNumber":1109,"sourceCode":"    if (vectorApiRequiresUrl.includes(settings.source) && settings.use_alt_endpoint) {\n        if (!settings.alt_endpoint_url) {\n            throw new Error('Vectors: API URL missing', { cause: 'api_url_missing' });\n        }\n    } else {\n        if (settings.source === 'ollama' && !textgenerationwebui_settings.server_urls[textgen_types.OLLAMA] ||\n            settings.source === 'vllm' && !textgenerationwebui_settings.server_urls[textgen_types.VLLM] ||\n            settings.source === 'koboldcpp' && !textgenerationwebui_settings.server_urls[textgen_types.KOBOLDCPP] ||\n            settings.source === 'llamacpp' && !textgenerationwebui_settings.server_urls[textgen_types.LLAMACPP]) {\n            throw new Error('Vectors: API URL missing', { cause: 'api_url_missing' });\n        }\n    }\n\n    if (settings.source === 'ollama' && !settings.ollama_model || settings.source === 'vllm' && !settings.vllm_model) {\n        throw new Error('Vectors: API model missing', { cause: 'api_model_missing' });\n    }\n\n    if (settings.source === 'extras' && !modules.includes('embeddings')) {\n        throw new Error('Vectors: Embeddings module missing', { cause: 'extras_module_missing' });\n    }\n\n    if (settings.source === 'webllm' && (!isWebLlmSupported() || !settings.webllm_model)) {\n        throw new Error('Vectors: WebLLM is not supported', { cause: 'webllm_not_supported' });\n    }\n\n    if (settings.source === 'workers_ai' && !oai_settings.workers_ai_account_id) {\n        throw new Error('Vectors: Workers AI account ID missing', { cause: 'account_id_missing' });\n    }\n}\n\n/**\n * Deletes vector items from a collection\n * @param {string} collectionId - The collection to delete from\n * @param {number[]} hashes - The hashes of the items to delete\n * @returns {Promise<void>}\n */\nasync function deleteVectorItems(collectionId, hashes) {","sourceCodeStart":1091,"sourceCodeEnd":1127,"githubUrl":"https://github.com/SillyTavern/SillyTavern/blob/8172dcd0ee672d3cd9a5e5f7af134f91a45cd2b8/public/scripts/extensions/vectors/index.js#L1091-L1127","documentation":"Thrown when source is 'extras' but the connected Extras API does not report 'embeddings' in its modules list. SillyTavern-Extras is modular; if the embeddings module is not enabled (or not installed), it cannot produce vectors.","triggerScenarios":"Vector source set to 'Extras' while the Extras backend is running without the embeddings module enabled.","commonSituations":"Extras started without the embeddings flag/dependency; Extras process updated and the module name/availability changed; Extras connection points at a different instance that lacks embeddings.","solutions":["Restart SillyTavern-Extras with the embeddings module enabled (check its --enable-modules / config).","Verify the Extras base URL and API key in connection settings point at the right instance.","Confirm the modules list the server reports actually contains 'embeddings' (check the server response).","Switch the vector source to a built-in provider if you cannot run Extras embeddings."],"exampleFix":"null","handlingStrategy":"validation","validationCode":"if (settings.source === 'extras') {\n  const mods = Array.isArray(modules) ? modules : await fetchModules();\n  if (!mods.includes('embeddings')) {\n    // block; tell the user to enable the embeddings module in Extras\n  }\n}","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Before choosing the Extras vector source, confirm the modules list includes 'embeddings'.","Restart Extras with embeddings enabled after any config change.","Show the live modules list in the UI so the user can verify."],"tags":["configuration","embeddings","extras","validation"],"backgroundTag":null,"analyzedSha":"8172dcd0ee672d3cd9a5e5f7af134f91a45cd2b8","analyzedAt":"2026-08-13T07:48:40.832Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}