diff --git a/frontend/src/components/cloud-picker/ingest-settings.tsx b/frontend/src/components/cloud-picker/ingest-settings.tsx index a9ed0c8f..511943ca 100644 --- a/frontend/src/components/cloud-picker/ingest-settings.tsx +++ b/frontend/src/components/cloud-picker/ingest-settings.tsx @@ -21,8 +21,16 @@ import { TooltipTrigger, } from "@/components/ui/tooltip"; import { ModelSelectItems } from "@/app/settings/helpers/model-select-item"; -import { getFallbackModels } from "@/app/settings/helpers/model-helpers"; +import { getFallbackModels, type ModelProvider } from "@/app/settings/helpers/model-helpers"; import { NumberInput } from "@/components/ui/inputs/number-input"; +import { useGetSettingsQuery } from "@/app/api/queries/useGetSettingsQuery"; +import { + useGetOpenAIModelsQuery, + useGetOllamaModelsQuery, + useGetIBMModelsQuery, +} from "@/app/api/queries/useGetModelsQuery"; +import { useAuth } from "@/contexts/auth-context"; +import { useEffect } from "react"; interface IngestSettingsProps { isOpen: boolean; @@ -37,18 +45,65 @@ export const IngestSettings = ({ settings, onSettingsChange, }: IngestSettingsProps) => { - // Default settings + const { isAuthenticated, isNoAuthMode } = useAuth(); + + // Fetch settings from API to get current embedding model + const { data: apiSettings = {} } = useGetSettingsQuery({ + enabled: isAuthenticated || isNoAuthMode, + }); + + // Get the current provider from API settings + const currentProvider = (apiSettings.provider?.model_provider || + "openai") as ModelProvider; + + // Fetch available models based on provider + const { data: openaiModelsData } = useGetOpenAIModelsQuery(undefined, { + enabled: (isAuthenticated || isNoAuthMode) && currentProvider === "openai", + }); + + const { data: ollamaModelsData } = useGetOllamaModelsQuery(undefined, { + enabled: (isAuthenticated || isNoAuthMode) && currentProvider === "ollama", + }); + + const { data: ibmModelsData } = useGetIBMModelsQuery(undefined, { + enabled: (isAuthenticated || isNoAuthMode) && currentProvider === "watsonx", + }); + + // Select the appropriate models data based on provider + const modelsData = + currentProvider === "openai" + ? openaiModelsData + : currentProvider === "ollama" + ? ollamaModelsData + : currentProvider === "watsonx" + ? ibmModelsData + : openaiModelsData; + + // Get embedding model from API settings + const apiEmbeddingModel = + apiSettings.knowledge?.embedding_model || + modelsData?.embedding_models?.find((m) => m.default)?.value || + "text-embedding-3-small"; + + // Default settings - use API embedding model const defaultSettings: IngestSettingsType = { chunkSize: 1000, chunkOverlap: 200, ocr: false, pictureDescriptions: false, - embeddingModel: "text-embedding-3-small", + embeddingModel: apiEmbeddingModel, }; // Use provided settings or defaults const currentSettings = settings || defaultSettings; + // Update settings when API embedding model changes + useEffect(() => { + if (apiEmbeddingModel && (!settings || settings.embeddingModel !== apiEmbeddingModel)) { + onSettingsChange?.({ ...currentSettings, embeddingModel: apiEmbeddingModel }); + } + }, [apiEmbeddingModel]); + const handleSettingsChange = (newSettings: Partial) => { const updatedSettings = { ...currentSettings, ...newSettings }; onSettingsChange?.(updatedSettings); @@ -73,38 +128,32 @@ export const IngestSettings = ({
- {/* Embedding model selection - currently disabled */} + {/* Embedding model selection */}