mirror of
https://github.com/langgenius/dify.git
synced 2026-05-09 21:28:25 +08:00
Merge 56213b36e9 into 19bf36a716
This commit is contained in:
commit
ca267804fb
@ -17,7 +17,7 @@ import {
|
||||
RiPlayCircleLine,
|
||||
} from '@remixicon/react'
|
||||
import * as React from 'react'
|
||||
import { useCallback, useMemo, useState } from 'react'
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { v4 as uuid4 } from 'uuid'
|
||||
import ImageUploaderInRetrievalTesting from '@/app/components/datasets/common/image-uploader/image-uploader-in-retrieval-testing'
|
||||
@ -65,6 +65,7 @@ const QueryInput = ({
|
||||
}: QueryInputProps) => {
|
||||
const { t } = useTranslation()
|
||||
const isMultimodal = useDatasetDetailContextWithSelector(s => !!s.dataset?.is_multimodal)
|
||||
const datasetExternalRetrievalModel = useDatasetDetailContextWithSelector(s => s.dataset?.external_retrieval_model)
|
||||
const [isSettingsOpen, setIsSettingsOpen] = useState(false)
|
||||
const [externalRetrievalSettings, setExternalRetrievalSettings] = useState({
|
||||
top_k: 4,
|
||||
@ -72,6 +73,23 @@ const QueryInput = ({
|
||||
score_threshold_enabled: false,
|
||||
})
|
||||
|
||||
// dataset 是异步加载的,首次挂载时 external_retrieval_model 为 undefined,
|
||||
// useState 的初始值会被固化为上面的默认值。此处在 dataset 第一次就绪后
|
||||
// 一次性同步到本地 state,后续用户通过「设置」弹窗修改的值不会被覆盖。
|
||||
const hasSyncedExternalRetrievalSettingsRef = useRef(false)
|
||||
useEffect(() => {
|
||||
if (hasSyncedExternalRetrievalSettingsRef.current)
|
||||
return
|
||||
if (!datasetExternalRetrievalModel)
|
||||
return
|
||||
setExternalRetrievalSettings({
|
||||
top_k: datasetExternalRetrievalModel.top_k ?? 4,
|
||||
score_threshold: datasetExternalRetrievalModel.score_threshold ?? 0.5,
|
||||
score_threshold_enabled: datasetExternalRetrievalModel.score_threshold_enabled ?? false,
|
||||
})
|
||||
hasSyncedExternalRetrievalSettingsRef.current = true
|
||||
}, [datasetExternalRetrievalModel])
|
||||
|
||||
const text = useMemo(() => {
|
||||
return queries.find(query => query.content_type === 'text_query')?.content ?? ''
|
||||
}, [queries])
|
||||
|
||||
@ -132,7 +132,7 @@ export const useFormState = () => {
|
||||
return
|
||||
}
|
||||
|
||||
if (retrievalConfig.weights) {
|
||||
if (retrievalConfig?.weights) {
|
||||
retrievalConfig.weights.vector_setting.embedding_provider_name = embeddingModel.provider || ''
|
||||
retrievalConfig.weights.vector_setting.embedding_model_name = embeddingModel.model || ''
|
||||
}
|
||||
@ -191,20 +191,19 @@ export const useFormState = () => {
|
||||
}
|
||||
}
|
||||
|
||||
// Computed values
|
||||
const showMultiModalTip = useMemo(() => {
|
||||
return checkShowMultiModalTip({
|
||||
embeddingModel,
|
||||
rerankingEnable: retrievalConfig.reranking_enable,
|
||||
rerankingEnable: retrievalConfig?.reranking_enable,
|
||||
rerankModel: {
|
||||
rerankingProviderName: retrievalConfig.reranking_model.reranking_provider_name,
|
||||
rerankingModelName: retrievalConfig.reranking_model.reranking_model_name,
|
||||
rerankingProviderName: retrievalConfig?.reranking_model?.reranking_provider_name ?? '',
|
||||
rerankingModelName: retrievalConfig?.reranking_model?.reranking_model_name ?? '',
|
||||
},
|
||||
indexMethod,
|
||||
embeddingModelList,
|
||||
rerankModelList,
|
||||
})
|
||||
}, [embeddingModel, rerankModelList, retrievalConfig.reranking_enable, retrievalConfig.reranking_model, embeddingModelList, indexMethod])
|
||||
}, [embeddingModel, rerankModelList, retrievalConfig?.reranking_enable, retrievalConfig?.reranking_model, embeddingModelList, indexMethod])
|
||||
|
||||
return {
|
||||
// Context values
|
||||
|
||||
Loading…
Reference in New Issue
Block a user