check-rerank-model.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import type { BackendModel } from '../../header/account-setting/model-page/declarations'
  2. import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app'
  3. export const isReRankModelSelected = ({
  4. rerankDefaultModel,
  5. isRerankDefaultModelVaild,
  6. retrievalConfig,
  7. indexMethod,
  8. }: {
  9. rerankDefaultModel?: BackendModel
  10. isRerankDefaultModelVaild: boolean
  11. retrievalConfig: RetrievalConfig
  12. indexMethod?: string
  13. }) => {
  14. const rerankModel = (retrievalConfig.reranking_model?.reranking_model_name ? retrievalConfig.reranking_model : undefined) || (isRerankDefaultModelVaild ? rerankDefaultModel : undefined)
  15. if (
  16. indexMethod === 'high_quality'
  17. && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.fullText)
  18. && !rerankModel
  19. )
  20. return false
  21. return true
  22. }
  23. export const ensureRerankModelSelected = ({
  24. rerankDefaultModel,
  25. indexMethod,
  26. retrievalConfig,
  27. }: {
  28. rerankDefaultModel: BackendModel
  29. retrievalConfig: RetrievalConfig
  30. indexMethod?: string
  31. }) => {
  32. const rerankModel = retrievalConfig.reranking_model?.reranking_model_name ? retrievalConfig.reranking_model : undefined
  33. if (
  34. indexMethod === 'high_quality'
  35. && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.fullText)
  36. && !rerankModel
  37. ) {
  38. return {
  39. ...retrievalConfig,
  40. reranking_model: {
  41. reranking_provider_name: rerankDefaultModel.model_provider.provider_name,
  42. reranking_model_name: rerankDefaultModel.model_name,
  43. },
  44. }
  45. }
  46. return retrievalConfig
  47. }