From bddcb31fe234d323a9653fb9603f46c3b6579633 Mon Sep 17 00:00:00 2001 From: Yi Xiao <54782454+YIXIAO0@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:35:41 +0800 Subject: [PATCH] Fix: chatbot retrieval setting save issue (#9536) --- .../params-config/config-content.tsx | 9 ++++---- .../dataset-config/params-config/index.tsx | 22 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/web/app/components/app/configuration/dataset-config/params-config/config-content.tsx b/web/app/components/app/configuration/dataset-config/params-config/config-content.tsx index 04ae146645..0068a7abbf 100644 --- a/web/app/components/app/configuration/dataset-config/params-config/config-content.tsx +++ b/web/app/components/app/configuration/dataset-config/params-config/config-content.tsx @@ -60,6 +60,7 @@ const ConfigContent: FC = ({ const { modelList: rerankModelList, defaultModel: rerankDefaultModel, + currentModel: isRerankDefaultModelValid, } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank) const { @@ -160,14 +161,14 @@ const ConfigContent: FC = ({ const selectedRerankMode = datasetConfigs.reranking_mode || RerankingModeEnum.RerankingModel const canManuallyToggleRerank = useMemo(() => { - return !( - (selectedDatasetsMode.allInternal && selectedDatasetsMode.allEconomic) + return (selectedDatasetsMode.allInternal && selectedDatasetsMode.allEconomic) || selectedDatasetsMode.allExternal - ) }, [selectedDatasetsMode.allEconomic, selectedDatasetsMode.allExternal, selectedDatasetsMode.allInternal]) const showRerankModel = useMemo(() => { if (!canManuallyToggleRerank) + return true + else if (canManuallyToggleRerank && !isRerankDefaultModelValid) return false return datasetConfigs.reranking_enable @@ -179,7 +180,7 @@ const ConfigContent: FC = ({ }, [currentRerankModel, showRerankModel, t]) useEffect(() => { - if (!canManuallyToggleRerank && showRerankModel !== datasetConfigs.reranking_enable) { + if (canManuallyToggleRerank && showRerankModel !== datasetConfigs.reranking_enable) { onChange({ ...datasetConfigs, reranking_enable: showRerankModel, diff --git a/web/app/components/app/configuration/dataset-config/params-config/index.tsx b/web/app/components/app/configuration/dataset-config/params-config/index.tsx index 91d0e4e590..c8c8acccd3 100644 --- a/web/app/components/app/configuration/dataset-config/params-config/index.tsx +++ b/web/app/components/app/configuration/dataset-config/params-config/index.tsx @@ -42,23 +42,30 @@ const ParamsConfig = ({ allHighQuality, allHighQualityFullTextSearch, allHighQualityVectorSearch, - allInternal, allExternal, mixtureHighQualityAndEconomic, inconsistentEmbeddingModel, mixtureInternalAndExternal, } = getSelectedDatasetsMode(selectedDatasets) - const { datasets, retrieval_model, score_threshold_enabled, ...restConfigs } = datasetConfigs - let rerankEnable = restConfigs.reranking_enable - - if (((allInternal && allEconomic) || allExternal) && !restConfigs.reranking_model?.reranking_provider_name && rerankEnable === undefined) - rerankEnable = false if (allEconomic || allHighQuality || allHighQualityFullTextSearch || allHighQualityVectorSearch || (allExternal && selectedDatasets.length === 1)) setRerankSettingModalOpen(false) if (mixtureHighQualityAndEconomic || inconsistentEmbeddingModel || mixtureInternalAndExternal || (allExternal && selectedDatasets.length > 1)) setRerankSettingModalOpen(true) + }, [selectedDatasets]) + + useEffect(() => { + const { + allEconomic, + allInternal, + allExternal, + } = getSelectedDatasetsMode(selectedDatasets) + const { datasets, retrieval_model, score_threshold_enabled, ...restConfigs } = datasetConfigs + let rerankEnable = restConfigs.reranking_enable + + if (((allInternal && allEconomic) || allExternal) && !restConfigs.reranking_model?.reranking_provider_name && rerankEnable === undefined) + rerankEnable = false setTempDataSetConfigs({ ...getMultipleRetrievalConfig({ @@ -90,7 +97,7 @@ const ParamsConfig = ({ const isValid = () => { let errMsg = '' if (tempDataSetConfigs.retrieval_model === RETRIEVE_TYPE.multiWay) { - if (!tempDataSetConfigs.reranking_model?.reranking_model_name && (!rerankDefaultModel && isRerankDefaultModelValid)) + if (!tempDataSetConfigs.reranking_model?.reranking_model_name && (rerankDefaultModel && !isRerankDefaultModelValid)) errMsg = t('appDebug.datasetConfig.rerankModelRequired') } if (errMsg) { @@ -104,7 +111,6 @@ const ParamsConfig = ({ const handleSave = () => { if (!isValid()) return - const config = { ...tempDataSetConfigs } if (config.retrieval_model === RETRIEVE_TYPE.multiWay && !config.reranking_model) { config.reranking_model = {