fix: search method

This commit is contained in:
zxhlyh 2025-07-29 11:10:16 +08:00
parent 657e813c7f
commit 446301a443
5 changed files with 23 additions and 5 deletions

View File

@ -46,7 +46,7 @@ export const useRetrievalSetting = (indexMethod?: IndexMethodEnum) => {
}, [t])
const InvertedIndexOption: Option = useMemo(() => {
return {
id: RetrievalSearchMethodEnum.keywordSearch,
id: RetrievalSearchMethodEnum.invertedIndex,
icon: HybridSearch as any,
title: t('dataset.retrieval.invertedIndex.title'),
description: t('dataset.retrieval.invertedIndex.description'),

View File

@ -194,7 +194,7 @@ const SearchMethodOption = ({
isScoreThresholdEnabled={isScoreThresholdEnabled}
onScoreThresholdEnabledChange={onScoreThresholdEnabledChange}
readonly={readonly}
hiddenScoreThreshold={searchMethod === RetrievalSearchMethodEnum.keywordSearch}
hiddenScoreThreshold={searchMethod === RetrievalSearchMethodEnum.invertedIndex}
/>
</div>
</OptionCard>

View File

@ -15,6 +15,7 @@ import type {
KnowledgeBaseNodeType,
RerankingModel,
} from '../types'
import { isHighQualitySearchMethod } from '../utils'
export const useConfig = (id: string) => {
const store = useStoreApi()
@ -36,10 +37,18 @@ export const useConfig = (id: string) => {
const handleChunkStructureChange = useCallback((chunkStructure: ChunkStructureEnum) => {
const nodeData = getNodeData()
const { indexing_technique } = nodeData?.data
const {
indexing_technique,
retrieval_model,
} = nodeData?.data
const { search_method } = retrieval_model || {}
handleNodeDataUpdate({
chunk_structure: chunkStructure,
indexing_technique: (chunkStructure === ChunkStructureEnum.parent_child || chunkStructure === ChunkStructureEnum.question_answer) ? IndexMethodEnum.QUALIFIED : indexing_technique,
retrieval_model: {
...retrieval_model,
search_method: ((chunkStructure === ChunkStructureEnum.parent_child || chunkStructure === ChunkStructureEnum.question_answer) && !isHighQualitySearchMethod(search_method)) ? RetrievalSearchMethodEnum.semantic : search_method,
},
})
}, [handleNodeDataUpdate, getNodeData])
@ -50,7 +59,7 @@ export const useConfig = (id: string) => {
draft.indexing_technique = indexMethod
if (indexMethod === IndexMethodEnum.ECONOMICAL)
draft.retrieval_model.search_method = RetrievalSearchMethodEnum.keywordSearch
draft.retrieval_model.search_method = RetrievalSearchMethodEnum.invertedIndex
else if (indexMethod === IndexMethodEnum.QUALIFIED)
draft.retrieval_model.search_method = RetrievalSearchMethodEnum.semantic
}))

View File

@ -13,6 +13,6 @@ export const useSettingsDisplay = () => {
[RetrievalSearchMethodEnum.semantic]: t('dataset.retrieval.semantic_search.title'),
[RetrievalSearchMethodEnum.fullText]: t('dataset.retrieval.full_text_search.title'),
[RetrievalSearchMethodEnum.hybrid]: t('dataset.retrieval.hybrid_search.title'),
[RetrievalSearchMethodEnum.keywordSearch]: t('dataset.retrieval.invertedIndex.title'),
[RetrievalSearchMethodEnum.invertedIndex]: t('dataset.retrieval.invertedIndex.title'),
}
}

View File

@ -0,0 +1,9 @@
import {
RetrievalSearchMethodEnum,
} from './types'
export const isHighQualitySearchMethod = (searchMethod: RetrievalSearchMethodEnum) => {
return searchMethod === RetrievalSearchMethodEnum.semantic
|| searchMethod === RetrievalSearchMethodEnum.hybrid
|| searchMethod === RetrievalSearchMethodEnum.fullText
}