Skip to content

Commit fb72704

Browse files
Update default queries; update quick config fields; misc updates (#660) (#661)
* Change default to match query * Only show embedding field in quick config if unknown * add gear in header for newhomepage --------- (cherry picked from commit c729bec) Signed-off-by: Tyler Ohlsen <ohltyler@amazon.com> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 33a91c3 commit fb72704

File tree

4 files changed

+56
-29
lines changed

4 files changed

+56
-29
lines changed

public/pages/workflow_detail/components/header.tsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ export function WorkflowDetailHeader(props: WorkflowDetailHeaderProps) {
297297
} as TopNavMenuIconData,
298298
{
299299
iconType: 'exit',
300-
tooltip: 'Return to projects',
300+
tooltip: 'Return to workflows',
301301
ariaLabel: 'Exit',
302302
href: constructHrefWithDataSourceId(
303303
APP_PATH.WORKFLOWS,
@@ -312,6 +312,13 @@ export function WorkflowDetailHeader(props: WorkflowDetailHeaderProps) {
312312
run: () => setIntroFlyoutOpened(true),
313313
controlType: 'icon',
314314
} as TopNavMenuIconData,
315+
{
316+
iconType: 'gear',
317+
tooltip: 'Edit workflow settings',
318+
ariaLabel: 'Edit workflow settings',
319+
run: () => setIsEditWorkflowModalOpen(true),
320+
controlType: 'icon',
321+
} as TopNavMenuIconData,
315322
]}
316323
screenTitle={workflowName}
317324
showDataSourceMenu={dataSourceEnabled}

public/pages/workflows/new_workflow/quick_configure_modal.tsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -223,13 +223,11 @@ export function QuickConfigureModal(props: QuickConfigureModalProps) {
223223
const connector = connectors[selectedModel.connectorId];
224224
if (connector !== undefined) {
225225
const dimensions = getEmbeddingModelDimensions(connector);
226-
if (dimensions === undefined) {
227-
setUnknownEmbeddingLength(true);
228-
}
226+
// dimensions may be undefined. set state vars accordingly
229227
setUnknownEmbeddingLength(dimensions === undefined);
230228
setQuickConfigureFields({
231229
...quickConfigureFields,
232-
embeddingLength: getEmbeddingModelDimensions(connector),
230+
embeddingLength: dimensions,
233231
});
234232
}
235233
}

public/pages/workflows/new_workflow/quick_configure_optional_fields.tsx

+41-19
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {
2828
WORKFLOW_TYPE,
2929
} from '../../../../common';
3030
import { AppState } from '../../../store';
31-
import { parseModelInputs } from '../../../utils';
31+
import { getEmbeddingModelDimensions, parseModelInputs } from '../../../utils';
3232

3333
interface QuickConfigureOptionalFieldsProps {
3434
workflowType?: WORKFLOW_TYPE;
@@ -127,6 +127,24 @@ export function QuickConfigureOptionalFields(
127127
props.setFields({ ...props.fields, ...optionalFieldValues });
128128
}, [optionalFieldValues]);
129129

130+
// Keep track of if an embedding model is selected with an unknown embedding length.
131+
// Only expose the form field if it is unknown, else hide from the user.
132+
const [unknownEmbeddingLength, setUnknownEmbeddingLength] = useState<boolean>(
133+
false
134+
);
135+
useEffect(() => {
136+
const selectedModel = deployedModels.find(
137+
(model) => model.id === props.fields?.embeddingModelId
138+
);
139+
if (selectedModel?.connectorId !== undefined) {
140+
const connector = connectors[selectedModel.connectorId];
141+
if (connector !== undefined) {
142+
const dimensions = getEmbeddingModelDimensions(connector);
143+
setUnknownEmbeddingLength(dimensions === undefined);
144+
}
145+
}
146+
}, [props.fields?.embeddingModelId, deployedModels, connectors]);
147+
130148
return (
131149
<EuiAccordion
132150
id="optionalConfiguration"
@@ -202,24 +220,28 @@ export function QuickConfigureOptionalFields(
202220
}}
203221
/>
204222
</EuiCompressedFormRow>
205-
<EuiSpacer size="s" />
206-
<EuiCompressedFormRow
207-
fullWidth={true}
208-
label={'Embedding length'}
209-
isInvalid={false}
210-
helpText="The length / dimension of the generated vector embeddings. Autofilled values may be inaccurate."
211-
>
212-
<EuiCompressedFieldNumber
213-
fullWidth={true}
214-
value={props.fields?.embeddingLength || ''}
215-
onChange={(e) => {
216-
setOptionalFieldValues({
217-
...optionalFieldValues,
218-
embeddingLength: Number(e.target.value),
219-
});
220-
}}
221-
/>
222-
</EuiCompressedFormRow>
223+
{unknownEmbeddingLength && (
224+
<>
225+
<EuiSpacer size="s" />
226+
<EuiCompressedFormRow
227+
fullWidth={true}
228+
label={'Embedding length'}
229+
isInvalid={false}
230+
helpText="The length / dimension of the generated vector embeddings."
231+
>
232+
<EuiCompressedFieldNumber
233+
fullWidth={true}
234+
value={props.fields?.embeddingLength || ''}
235+
onChange={(e) => {
236+
setOptionalFieldValues({
237+
...optionalFieldValues,
238+
embeddingLength: Number(e.target.value),
239+
});
240+
}}
241+
/>
242+
</EuiCompressedFormRow>
243+
</>
244+
)}
223245
</>
224246
)}
225247
{(props.workflowType === WORKFLOW_TYPE.RAG ||

public/pages/workflows/new_workflow/utils.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {
2828
SEMANTIC_SEARCH_QUERY_NEURAL,
2929
MULTIMODAL_SEARCH_QUERY_NEURAL,
3030
HYBRID_SEARCH_QUERY_MATCH_NEURAL,
31-
TERM_QUERY_TEXT,
31+
MATCH_QUERY_TEXT,
3232
} from '../../../../common';
3333
import { generateId } from '../../../utils';
3434
import semver from 'semver';
@@ -164,7 +164,7 @@ export function fetchSemanticSearchMetadata(version: string): UIState {
164164
});
165165

166166
baseState.config.search.request.value = customStringify(
167-
isPreV219 ? SEMANTIC_SEARCH_QUERY_NEURAL : TERM_QUERY_TEXT
167+
isPreV219 ? SEMANTIC_SEARCH_QUERY_NEURAL : MATCH_QUERY_TEXT
168168
);
169169

170170
baseState.config.search.enrichRequest.processors = isPreV219
@@ -224,7 +224,7 @@ export function fetchHybridSearchMetadata(version: string): UIState {
224224
});
225225

226226
baseState.config.search.request.value = customStringify(
227-
isPreV219 ? HYBRID_SEARCH_QUERY_MATCH_NEURAL : TERM_QUERY_TEXT
227+
isPreV219 ? HYBRID_SEARCH_QUERY_MATCH_NEURAL : MATCH_QUERY_TEXT
228228
);
229229

230230
baseState.config.search.enrichResponse.processors = [
@@ -263,9 +263,9 @@ export function fetchVectorSearchWithRAGMetadata(version: string): UIState {
263263
baseState.config.ingest.index.settings.value = customStringify({
264264
[`index.knn`]: true,
265265
});
266-
// Search config: term query => ML inference processor for generating embeddings =>
266+
// Search config: match query => ML inference processor for generating embeddings =>
267267
// ML inference processor for returning LLM-generated response of results
268-
baseState.config.search.request.value = customStringify(TERM_QUERY_TEXT);
268+
baseState.config.search.request.value = customStringify(MATCH_QUERY_TEXT);
269269
baseState.config.search.enrichRequest.processors = [
270270
injectQueryTemplateInProcessor(
271271
new MLSearchRequestProcessor().toObj(),

0 commit comments

Comments
 (0)