check-rerank-model.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app'
  2. import type {
  3. DefaultModelResponse,
  4. Model,
  5. } from '@/app/components/header/account-setting/model-provider-page/declarations'
  6. export const isReRankModelSelected = ({
  7. rerankDefaultModel,
  8. isRerankDefaultModelVaild,
  9. retrievalConfig,
  10. rerankModelList,
  11. indexMethod,
  12. }: {
  13. rerankDefaultModel?: DefaultModelResponse
  14. isRerankDefaultModelVaild: boolean
  15. retrievalConfig: RetrievalConfig
  16. rerankModelList: Model[]
  17. indexMethod?: string
  18. }) => {
  19. const rerankModelSelected = (() => {
  20. if (retrievalConfig.reranking_model?.reranking_model_name) {
  21. const provider = rerankModelList.find(({ provider }) => provider === retrievalConfig.reranking_model?.reranking_provider_name)
  22. return provider?.models.find(({ model }) => model === retrievalConfig.reranking_model?.reranking_model_name)
  23. }
  24. if (isRerankDefaultModelVaild)
  25. return !!rerankDefaultModel
  26. return false
  27. })()
  28. if (
  29. indexMethod === 'high_quality'
  30. && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.hybrid)
  31. && !rerankModelSelected
  32. )
  33. return false
  34. return true
  35. }
  36. export const ensureRerankModelSelected = ({
  37. rerankDefaultModel,
  38. indexMethod,
  39. retrievalConfig,
  40. }: {
  41. rerankDefaultModel: DefaultModelResponse
  42. retrievalConfig: RetrievalConfig
  43. indexMethod?: string
  44. }) => {
  45. const rerankModel = retrievalConfig.reranking_model?.reranking_model_name ? retrievalConfig.reranking_model : undefined
  46. if (
  47. indexMethod === 'high_quality'
  48. && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.hybrid)
  49. && !rerankModel
  50. ) {
  51. return {
  52. ...retrievalConfig,
  53. reranking_model: {
  54. reranking_provider_name: rerankDefaultModel.provider.provider,
  55. reranking_model_name: rerankDefaultModel.model,
  56. },
  57. }
  58. }
  59. return retrievalConfig
  60. }