enable switching embedding models in the UI

This commit is contained in:
phact 2025-10-11 00:04:27 -04:00
parent 88d73625b5
commit bd7341af88
2 changed files with 18 additions and 7 deletions

View file

@ -34,20 +34,25 @@ export const EmbeddingModelInput = ({
modelsData, modelsData,
currentProvider = "openai", currentProvider = "openai",
}: EmbeddingModelInputProps) => { }: EmbeddingModelInputProps) => {
const isDisabled = Boolean(disabled);
const tooltipMessage = isDisabled
? "Locked to keep embeddings consistent"
: "Choose the embedding model for ingest and retrieval";
return ( return (
<LabelWrapper <LabelWrapper
helperText="Model used for knowledge ingest and retrieval" helperText="Model used for knowledge ingest and retrieval"
id="embedding-model-select" id="embedding-model-select"
label="Embedding model" label="Embedding model"
> >
<Select disabled={disabled} value={value} onValueChange={onChange}> <Select disabled={isDisabled} value={value} onValueChange={onChange}>
<Tooltip delayDuration={0}> <Tooltip delayDuration={0}>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<SelectTrigger disabled id="embedding-model-select"> <SelectTrigger disabled={isDisabled} id="embedding-model-select">
<SelectValue placeholder="Select an embedding model" /> <SelectValue placeholder="Select an embedding model" />
</SelectTrigger> </SelectTrigger>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent>Locked to keep embeddings consistent</TooltipContent> <TooltipContent>{tooltipMessage}</TooltipContent>
</Tooltip> </Tooltip>
<SelectContent> <SelectContent>
<ModelSelectItems <ModelSelectItems

View file

@ -243,6 +243,8 @@ function KnowledgeSourcesPage() {
updateFlowSettingMutation.mutate({ embedding_model: newModel }); updateFlowSettingMutation.mutate({ embedding_model: newModel });
}; };
const isEmbeddingModelSelectDisabled = updateFlowSettingMutation.isPending;
// Update chunk size setting with debounce // Update chunk size setting with debounce
const handleChunkSizeChange = (value: string) => { const handleChunkSizeChange = (value: string) => {
const numValue = Math.max(0, parseInt(value) || 0); const numValue = Math.max(0, parseInt(value) || 0);
@ -1029,8 +1031,7 @@ function KnowledgeSourcesPage() {
label="Embedding model" label="Embedding model"
> >
<Select <Select
// Disabled until API supports multiple embedding models disabled={isEmbeddingModelSelectDisabled}
disabled={true}
value={ value={
settings.knowledge?.embedding_model || settings.knowledge?.embedding_model ||
modelsData?.embedding_models?.find((m) => m.default) modelsData?.embedding_models?.find((m) => m.default)
@ -1041,12 +1042,17 @@ function KnowledgeSourcesPage() {
> >
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<SelectTrigger disabled id="embedding-model-select"> <SelectTrigger
disabled={isEmbeddingModelSelectDisabled}
id="embedding-model-select"
>
<SelectValue placeholder="Select an embedding model" /> <SelectValue placeholder="Select an embedding model" />
</SelectTrigger> </SelectTrigger>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>
Locked to keep embeddings consistent {isEmbeddingModelSelectDisabled
? "Please wait while we update your settings"
: "Choose the embedding model used for new ingests"}
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
<SelectContent> <SelectContent>