Fix: chatbot retrieval setting save issue (#9536)

This commit is contained in:
Yi Xiao 2024-10-21 14:35:41 +08:00 committed by GitHub
parent b411a89703
commit bddcb31fe2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 12 deletions

View File

@ -60,6 +60,7 @@ const ConfigContent: FC<Props> = ({
const { const {
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelValid,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const { const {
@ -160,14 +161,14 @@ const ConfigContent: FC<Props> = ({
const selectedRerankMode = datasetConfigs.reranking_mode || RerankingModeEnum.RerankingModel const selectedRerankMode = datasetConfigs.reranking_mode || RerankingModeEnum.RerankingModel
const canManuallyToggleRerank = useMemo(() => { const canManuallyToggleRerank = useMemo(() => {
return !( return (selectedDatasetsMode.allInternal && selectedDatasetsMode.allEconomic)
(selectedDatasetsMode.allInternal && selectedDatasetsMode.allEconomic)
|| selectedDatasetsMode.allExternal || selectedDatasetsMode.allExternal
)
}, [selectedDatasetsMode.allEconomic, selectedDatasetsMode.allExternal, selectedDatasetsMode.allInternal]) }, [selectedDatasetsMode.allEconomic, selectedDatasetsMode.allExternal, selectedDatasetsMode.allInternal])
const showRerankModel = useMemo(() => { const showRerankModel = useMemo(() => {
if (!canManuallyToggleRerank) if (!canManuallyToggleRerank)
return true
else if (canManuallyToggleRerank && !isRerankDefaultModelValid)
return false return false
return datasetConfigs.reranking_enable return datasetConfigs.reranking_enable
@ -179,7 +180,7 @@ const ConfigContent: FC<Props> = ({
}, [currentRerankModel, showRerankModel, t]) }, [currentRerankModel, showRerankModel, t])
useEffect(() => { useEffect(() => {
if (!canManuallyToggleRerank && showRerankModel !== datasetConfigs.reranking_enable) { if (canManuallyToggleRerank && showRerankModel !== datasetConfigs.reranking_enable) {
onChange({ onChange({
...datasetConfigs, ...datasetConfigs,
reranking_enable: showRerankModel, reranking_enable: showRerankModel,

View File

@ -42,23 +42,30 @@ const ParamsConfig = ({
allHighQuality, allHighQuality,
allHighQualityFullTextSearch, allHighQualityFullTextSearch,
allHighQualityVectorSearch, allHighQualityVectorSearch,
allInternal,
allExternal, allExternal,
mixtureHighQualityAndEconomic, mixtureHighQualityAndEconomic,
inconsistentEmbeddingModel, inconsistentEmbeddingModel,
mixtureInternalAndExternal, mixtureInternalAndExternal,
} = getSelectedDatasetsMode(selectedDatasets) } = 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)) if (allEconomic || allHighQuality || allHighQualityFullTextSearch || allHighQualityVectorSearch || (allExternal && selectedDatasets.length === 1))
setRerankSettingModalOpen(false) setRerankSettingModalOpen(false)
if (mixtureHighQualityAndEconomic || inconsistentEmbeddingModel || mixtureInternalAndExternal || (allExternal && selectedDatasets.length > 1)) if (mixtureHighQualityAndEconomic || inconsistentEmbeddingModel || mixtureInternalAndExternal || (allExternal && selectedDatasets.length > 1))
setRerankSettingModalOpen(true) 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({ setTempDataSetConfigs({
...getMultipleRetrievalConfig({ ...getMultipleRetrievalConfig({
@ -90,7 +97,7 @@ const ParamsConfig = ({
const isValid = () => { const isValid = () => {
let errMsg = '' let errMsg = ''
if (tempDataSetConfigs.retrieval_model === RETRIEVE_TYPE.multiWay) { 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') errMsg = t('appDebug.datasetConfig.rerankModelRequired')
} }
if (errMsg) { if (errMsg) {
@ -104,7 +111,6 @@ const ParamsConfig = ({
const handleSave = () => { const handleSave = () => {
if (!isValid()) if (!isValid())
return return
const config = { ...tempDataSetConfigs } const config = { ...tempDataSetConfigs }
if (config.retrieval_model === RETRIEVE_TYPE.multiWay && !config.reranking_model) { if (config.retrieval_model === RETRIEVE_TYPE.multiWay && !config.reranking_model) {
config.reranking_model = { config.reranking_model = {