mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	 7709d9df20
			
		
	
	
		7709d9df20
		
			
		
	
	
	
	
		
			
			Co-authored-by: NFish <douxc512@gmail.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: twwu <twwu@dify.ai> Co-authored-by: jZonG <jzongcode@gmail.com>
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 'use client'
 | |
| import type { FC } from 'react'
 | |
| import React from 'react'
 | |
| import { useTranslation } from 'react-i18next'
 | |
| import Image from 'next/image'
 | |
| import { retrievalIcon } from '../../create/icons'
 | |
| import type { RetrievalConfig } from '@/types/app'
 | |
| import { RETRIEVE_METHOD } from '@/types/app'
 | |
| import RadioCard from '@/app/components/base/radio-card'
 | |
| 
 | |
| type Props = {
 | |
|   value: RetrievalConfig
 | |
| }
 | |
| 
 | |
| export const getIcon = (type: RETRIEVE_METHOD) => {
 | |
|   return ({
 | |
|     [RETRIEVE_METHOD.semantic]: retrievalIcon.vector,
 | |
|     [RETRIEVE_METHOD.fullText]: retrievalIcon.fullText,
 | |
|     [RETRIEVE_METHOD.hybrid]: retrievalIcon.hybrid,
 | |
|     [RETRIEVE_METHOD.invertedIndex]: retrievalIcon.vector,
 | |
|     [RETRIEVE_METHOD.keywordSearch]: retrievalIcon.vector,
 | |
|   })[type] || retrievalIcon.vector
 | |
| }
 | |
| 
 | |
| const EconomicalRetrievalMethodConfig: FC<Props> = ({
 | |
|   // type,
 | |
|   value,
 | |
| }) => {
 | |
|   const { t } = useTranslation()
 | |
|   const type = value.search_method
 | |
|   const icon = <Image className='size-3.5 text-util-colors-purple-purple-600' src={getIcon(type)} alt='' />
 | |
|   return (
 | |
|     <div className='space-y-2'>
 | |
|       <RadioCard
 | |
|         icon={icon}
 | |
|         title={t(`dataset.retrieval.${type}.title`)}
 | |
|         description={t(`dataset.retrieval.${type}.description`)}
 | |
|         noRadio
 | |
|         chosenConfigWrapClassName='!pb-3'
 | |
|         chosenConfig={
 | |
|           <div className='flex flex-wrap text-xs font-normal leading-[18px]'>
 | |
|             {value.reranking_model.reranking_model_name && (
 | |
|               <div className='mr-8 flex space-x-1'>
 | |
|                 <div className='text-gray-500'>{t('common.modelProvider.rerankModel.key')}</div>
 | |
|                 <div className='font-medium text-gray-800'>{value.reranking_model.reranking_model_name}</div>
 | |
|               </div>
 | |
|             )}
 | |
| 
 | |
|             <div className='mr-8 flex space-x-1'>
 | |
|               <div className='text-gray-500'>{t('appDebug.datasetConfig.top_k')}</div>
 | |
|               <div className='font-medium text-gray-800'>{value.top_k}</div>
 | |
|             </div>
 | |
| 
 | |
|             <div className='mr-8 flex space-x-1'>
 | |
|               <div className='text-gray-500'>{t('appDebug.datasetConfig.score_threshold')}</div>
 | |
|               <div className='font-medium text-gray-800'>{value.score_threshold}</div>
 | |
|             </div>
 | |
|           </div>
 | |
|         }
 | |
|       />
 | |
|     </div>
 | |
|   )
 | |
| }
 | |
| export default React.memo(EconomicalRetrievalMethodConfig)
 |