| import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app' |
| import type { |
| DefaultModelResponse, |
| Model, |
| } from '@/app/components/header/account-setting/model-provider-page/declarations' |
| import { RerankingModeEnum } from '@/models/datasets' |
|
|
| export const isReRankModelSelected = ({ |
| rerankDefaultModel, |
| isRerankDefaultModelValid, |
| retrievalConfig, |
| rerankModelList, |
| indexMethod, |
| }: { |
| rerankDefaultModel?: DefaultModelResponse |
| isRerankDefaultModelValid: boolean |
| retrievalConfig: RetrievalConfig |
| rerankModelList: Model[] |
| indexMethod?: string |
| }) => { |
| const rerankModelSelected = (() => { |
| if (retrievalConfig.reranking_model?.reranking_model_name) { |
| const provider = rerankModelList.find(({ provider }) => provider === retrievalConfig.reranking_model?.reranking_provider_name) |
|
|
| return provider?.models.find(({ model }) => model === retrievalConfig.reranking_model?.reranking_model_name) |
| } |
|
|
| if (isRerankDefaultModelValid) |
| return !!rerankDefaultModel |
|
|
| return false |
| })() |
|
|
| if ( |
| indexMethod === 'high_quality' |
| && (retrievalConfig.search_method === RETRIEVE_METHOD.hybrid && retrievalConfig.reranking_mode !== RerankingModeEnum.WeightedScore) |
| && !rerankModelSelected |
| ) |
| return false |
|
|
| return true |
| } |
|
|
| export const ensureRerankModelSelected = ({ |
| rerankDefaultModel, |
| indexMethod, |
| retrievalConfig, |
| }: { |
| rerankDefaultModel: DefaultModelResponse |
| retrievalConfig: RetrievalConfig |
| indexMethod?: string |
| }) => { |
| const rerankModel = retrievalConfig.reranking_model?.reranking_model_name ? retrievalConfig.reranking_model : undefined |
| if ( |
| indexMethod === 'high_quality' |
| && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.hybrid) |
| && !rerankModel |
| && rerankDefaultModel |
| ) { |
| return { |
| ...retrievalConfig, |
| reranking_model: { |
| reranking_provider_name: rerankDefaultModel.provider.provider, |
| reranking_model_name: rerankDefaultModel.model, |
| }, |
| } |
| } |
| return retrievalConfig |
| } |
|
|