diff --git a/agent/tools/retrieval.py b/agent/tools/retrieval.py index 4496f497ae..0ccf056a29 100644 --- a/agent/tools/retrieval.py +++ b/agent/tools/retrieval.py @@ -201,6 +201,7 @@ class Retrieval(ToolBase, ABC): self._param.top_n, self._param.similarity_threshold, 1 - self._param.keywords_similarity_weight, + top=self._param.top_k, doc_ids=doc_ids, aggs=True, rerank_mdl=rerank_mdl, diff --git a/web/src/components/similarity-slider/index.tsx b/web/src/components/similarity-slider/index.tsx index c950688869..f822bf20d7 100644 --- a/web/src/components/similarity-slider/index.tsx +++ b/web/src/components/similarity-slider/index.tsx @@ -16,7 +16,8 @@ import { NumberInput } from '../ui/input'; interface SimilaritySliderFormFieldProps { similarityName?: string; - vectorSimilarityWeightName?: string; + similarityWeightName?: string; + similarityWeightType?: 'vector' | 'keyword'; isTooltipShown?: boolean; numberInputClassName?: string; } @@ -44,14 +45,21 @@ export const initialVectorSimilarityWeightValue = { export function SimilaritySliderFormField({ similarityName = 'similarity_threshold', - vectorSimilarityWeightName = 'vector_similarity_weight', + similarityWeightName = 'vector_similarity_weight', + similarityWeightType = 'vector', isTooltipShown, numberInputClassName, }: SimilaritySliderFormFieldProps) { const { t } = useTranslate('knowledgeDetails'); const form = useFormContext(); - const isVector = - vectorSimilarityWeightName.indexOf('vector_similarity_weight') > -1; + const isVector = similarityWeightType === 'vector'; + const normalizeWeight = (weight: number) => Number(weight.toFixed(2)); + const getVectorWeight = (weight: number) => + normalizeWeight(isVector ? weight : 1 - weight); + const getFullTextWeight = (weight: number) => + normalizeWeight(isVector ? 1 - weight : weight); + const getStoredWeight = (vectorWeight: number) => + normalizeWeight(isVector ? vectorWeight : 1 - vectorWeight); return ( <> @@ -66,7 +74,7 @@ export function SimilaritySliderFormField({ > ( - {field.value.toFixed(2)} + {getVectorWeight(field.value).toFixed(2)}
@@ -103,12 +111,14 @@ export function SimilaritySliderFormField({ full-text - {(1 - field.value).toFixed(2)} + {getFullTextWeight(field.value).toFixed(2)}
field.onChange(getStoredWeight(value))} max={1} step={0.01} min={0} @@ -126,6 +136,8 @@ export function SimilaritySliderFormField({ min={0} step={0.01} {...field} + value={getVectorWeight(field.value)} + onChange={(value) => field.onChange(getStoredWeight(value))} > diff --git a/web/src/pages/agent/form/retrieval-form/next.tsx b/web/src/pages/agent/form/retrieval-form/next.tsx index 44a6fe9ad5..6e831cedf2 100644 --- a/web/src/pages/agent/form/retrieval-form/next.tsx +++ b/web/src/pages/agent/form/retrieval-form/next.tsx @@ -169,7 +169,8 @@ function RetrievalForm({ node }: INextOperatorForm) { {t('flow.advancedSettings')}}>
diff --git a/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx b/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx index 84cb0896c0..c84f07efaa 100644 --- a/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx +++ b/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx @@ -48,7 +48,8 @@ const RetrievalForm = () => { {t('flow.advancedSettings')}}> diff --git a/web/src/pages/next-search/search-setting.tsx b/web/src/pages/next-search/search-setting.tsx index 697e7369e8..cb658eea5e 100644 --- a/web/src/pages/next-search/search-setting.tsx +++ b/web/src/pages/next-search/search-setting.tsx @@ -422,7 +422,7 @@ const SearchSetting: React.FC = ({ {/* Rerank Model */}