From 14103a43fdbf74b1e7ebb330858359d8deed0e32 Mon Sep 17 00:00:00 2001 From: weberm1 Date: Mon, 2 Jun 2025 09:00:24 +0200 Subject: [PATCH] Feat: Added reindixing functions for individual rag config --- src/lib/apis/knowledge/index.ts | 28 ++++++++++++++ .../workspace/common/RagConfigModal.svelte | 38 +++++++++++++++++-- 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/lib/apis/knowledge/index.ts b/src/lib/apis/knowledge/index.ts index 888c90c6b..843a2d9a6 100644 --- a/src/lib/apis/knowledge/index.ts +++ b/src/lib/apis/knowledge/index.ts @@ -375,3 +375,31 @@ export const reindexKnowledgeFiles = async (token: string) => { return res; }; + +export const reindexSpecificKnowledgeFiles = async (token: string, id: string) => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/knowledge/reindex/${id}`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + error = err.detail; + console.error(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; \ No newline at end of file diff --git a/src/lib/components/workspace/common/RagConfigModal.svelte b/src/lib/components/workspace/common/RagConfigModal.svelte index afc5b9358..1fe225884 100644 --- a/src/lib/components/workspace/common/RagConfigModal.svelte +++ b/src/lib/components/workspace/common/RagConfigModal.svelte @@ -8,7 +8,7 @@ import Tooltip from '$lib/components/common/Tooltip.svelte'; import Textarea from '$lib/components/common/Textarea.svelte'; - import { createNewKnowledge, getKnowledgeBases } from '$lib/apis/knowledge'; + import { createNewKnowledge, getKnowledgeBases, reindexSpecificKnowledgeFiles} from '$lib/apis/knowledge'; import { knowledge, user } from '$lib/stores'; import { @@ -48,6 +48,8 @@ let OllamaUrl = RAGConfig.ollama_config?.url || ""; let OllamaKey = RAGConfig.ollama_config?.key || ""; + let needsReindex = false; + function resetLocalState() { if (!RAGConfig) return; @@ -61,6 +63,7 @@ OllamaUrl = RAGConfig.ollama_config?.url || ""; OllamaKey = RAGConfig.ollama_config?.key || ""; + needsReindex = false; } // Automatically reset on modal open @@ -227,6 +230,18 @@ localRAGConfig.openai_config = {"key": OpenAIKey, "url": OpenAIUrl} localRAGConfig.ollama_config = {"key": OllamaKey, "url": OllamaUrl} + if (needsReindex) { + // Reindex knowledge files if reranking model changed + const reindexResponse = await reindexSpecificKnowledgeFiles(localStorage.token, knowledgeId, + ); + + if (reindexResponse.status === true) { + toast.success($i18n.t('Knowledge files reindexed successfully.')); + } else { + toast.error($i18n.t('Failed to reindex knowledge files.')); + } + } + dispatch('update', localRAGConfig) loading = false; }; @@ -494,6 +509,14 @@ required on:input={() => { }} + on:change={() => { + if ( + embeddingModel !== "" && + embeddingModel !== localRAGConfig.RAG_EMBEDDING_MODEL + ) { + needsReindex = true; + } + }} /> @@ -577,13 +600,22 @@ class="flex-1 w-full rounded-lg text-sm bg-transparent outline-hidden p-2 border border-gray-300" bind:value={embeddingModel} required + on:change={() => { + if ( + embeddingModel !== "" && + embeddingModel !== localRAGConfig.RAG_EMBEDDING_MODEL + ) { + needsReindex = true; + console.log('needsReindex set to', needsReindex); + } + }} > {#if embeddingModel && embeddingModel.trim() !== ''}