From fbe4b71f557ed6056c49d2178c9014de30b230ad Mon Sep 17 00:00:00 2001 From: Tyler Ohlsen Date: Tue, 4 Mar 2025 10:24:49 -0800 Subject: [PATCH 1/3] Change default to match query Signed-off-by: Tyler Ohlsen --- public/pages/workflows/new_workflow/utils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/pages/workflows/new_workflow/utils.ts b/public/pages/workflows/new_workflow/utils.ts index 067170d6..aeed4124 100644 --- a/public/pages/workflows/new_workflow/utils.ts +++ b/public/pages/workflows/new_workflow/utils.ts @@ -28,7 +28,7 @@ import { SEMANTIC_SEARCH_QUERY_NEURAL, MULTIMODAL_SEARCH_QUERY_NEURAL, HYBRID_SEARCH_QUERY_MATCH_NEURAL, - TERM_QUERY_TEXT, + MATCH_QUERY_TEXT, } from '../../../../common'; import { generateId } from '../../../utils'; import semver from 'semver'; @@ -164,7 +164,7 @@ export function fetchSemanticSearchMetadata(version: string): UIState { }); baseState.config.search.request.value = customStringify( - isPreV219 ? SEMANTIC_SEARCH_QUERY_NEURAL : TERM_QUERY_TEXT + isPreV219 ? SEMANTIC_SEARCH_QUERY_NEURAL : MATCH_QUERY_TEXT ); baseState.config.search.enrichRequest.processors = isPreV219 @@ -224,7 +224,7 @@ export function fetchHybridSearchMetadata(version: string): UIState { }); baseState.config.search.request.value = customStringify( - isPreV219 ? HYBRID_SEARCH_QUERY_MATCH_NEURAL : TERM_QUERY_TEXT + isPreV219 ? HYBRID_SEARCH_QUERY_MATCH_NEURAL : MATCH_QUERY_TEXT ); baseState.config.search.enrichResponse.processors = [ @@ -263,9 +263,9 @@ export function fetchVectorSearchWithRAGMetadata(version: string): UIState { baseState.config.ingest.index.settings.value = customStringify({ [`index.knn`]: true, }); - // Search config: term query => ML inference processor for generating embeddings => + // Search config: match query => ML inference processor for generating embeddings => // ML inference processor for returning LLM-generated response of results - baseState.config.search.request.value = customStringify(TERM_QUERY_TEXT); + baseState.config.search.request.value = customStringify(MATCH_QUERY_TEXT); baseState.config.search.enrichRequest.processors = [ injectQueryTemplateInProcessor( new MLSearchRequestProcessor().toObj(), From 2dcd532e824aa26e5120de8cbbf895da25f69506 Mon Sep 17 00:00:00 2001 From: Tyler Ohlsen Date: Tue, 4 Mar 2025 10:48:16 -0800 Subject: [PATCH 2/3] Only show embedding field in quick config if unknown Signed-off-by: Tyler Ohlsen --- .../new_workflow/quick_configure_modal.tsx | 6 +- .../quick_configure_optional_fields.tsx | 60 +++++++++++++------ 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/public/pages/workflows/new_workflow/quick_configure_modal.tsx b/public/pages/workflows/new_workflow/quick_configure_modal.tsx index 9515f415..06d5228a 100644 --- a/public/pages/workflows/new_workflow/quick_configure_modal.tsx +++ b/public/pages/workflows/new_workflow/quick_configure_modal.tsx @@ -223,13 +223,11 @@ export function QuickConfigureModal(props: QuickConfigureModalProps) { const connector = connectors[selectedModel.connectorId]; if (connector !== undefined) { const dimensions = getEmbeddingModelDimensions(connector); - if (dimensions === undefined) { - setUnknownEmbeddingLength(true); - } + // dimensions may be undefined. set state vars accordingly setUnknownEmbeddingLength(dimensions === undefined); setQuickConfigureFields({ ...quickConfigureFields, - embeddingLength: getEmbeddingModelDimensions(connector), + embeddingLength: dimensions, }); } } diff --git a/public/pages/workflows/new_workflow/quick_configure_optional_fields.tsx b/public/pages/workflows/new_workflow/quick_configure_optional_fields.tsx index 54e641c2..8f8c28e3 100644 --- a/public/pages/workflows/new_workflow/quick_configure_optional_fields.tsx +++ b/public/pages/workflows/new_workflow/quick_configure_optional_fields.tsx @@ -28,7 +28,7 @@ import { WORKFLOW_TYPE, } from '../../../../common'; import { AppState } from '../../../store'; -import { parseModelInputs } from '../../../utils'; +import { getEmbeddingModelDimensions, parseModelInputs } from '../../../utils'; interface QuickConfigureOptionalFieldsProps { workflowType?: WORKFLOW_TYPE; @@ -127,6 +127,24 @@ export function QuickConfigureOptionalFields( props.setFields({ ...props.fields, ...optionalFieldValues }); }, [optionalFieldValues]); + // Keep track of if an embedding model is selected with an unknown embedding length. + // Only expose the form field if it is unknown, else hide from the user. + const [unknownEmbeddingLength, setUnknownEmbeddingLength] = useState( + false + ); + useEffect(() => { + const selectedModel = deployedModels.find( + (model) => model.id === props.fields?.embeddingModelId + ); + if (selectedModel?.connectorId !== undefined) { + const connector = connectors[selectedModel.connectorId]; + if (connector !== undefined) { + const dimensions = getEmbeddingModelDimensions(connector); + setUnknownEmbeddingLength(dimensions === undefined); + } + } + }, [props.fields?.embeddingModelId, deployedModels, connectors]); + return ( - - - { - setOptionalFieldValues({ - ...optionalFieldValues, - embeddingLength: Number(e.target.value), - }); - }} - /> - + {unknownEmbeddingLength && ( + <> + + + { + setOptionalFieldValues({ + ...optionalFieldValues, + embeddingLength: Number(e.target.value), + }); + }} + /> + + + )} )} {(props.workflowType === WORKFLOW_TYPE.RAG || From 0f83df978cad849e09d48ac5267448fe6ff72700 Mon Sep 17 00:00:00 2001 From: Tyler Ohlsen Date: Tue, 4 Mar 2025 11:38:51 -0800 Subject: [PATCH 3/3] add gear in header for newhomepage Signed-off-by: Tyler Ohlsen --- public/pages/workflow_detail/components/header.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/public/pages/workflow_detail/components/header.tsx b/public/pages/workflow_detail/components/header.tsx index 387298af..ecf47200 100644 --- a/public/pages/workflow_detail/components/header.tsx +++ b/public/pages/workflow_detail/components/header.tsx @@ -297,7 +297,7 @@ export function WorkflowDetailHeader(props: WorkflowDetailHeaderProps) { } as TopNavMenuIconData, { iconType: 'exit', - tooltip: 'Return to projects', + tooltip: 'Return to workflows', ariaLabel: 'Exit', href: constructHrefWithDataSourceId( APP_PATH.WORKFLOWS, @@ -312,6 +312,13 @@ export function WorkflowDetailHeader(props: WorkflowDetailHeaderProps) { run: () => setIntroFlyoutOpened(true), controlType: 'icon', } as TopNavMenuIconData, + { + iconType: 'gear', + tooltip: 'Edit workflow settings', + ariaLabel: 'Edit workflow settings', + run: () => setIsEditWorkflowModalOpen(true), + controlType: 'icon', + } as TopNavMenuIconData, ]} screenTitle={workflowName} showDataSourceMenu={dataSourceEnabled}