@@ -94,9 +94,10 @@ export const getMultipleRetrievalConfig = (
94
94
multipleRetrievalConfig : MultipleRetrievalConfig ,
95
95
selectedDatasets : DataSet [ ] ,
96
96
originalDatasets : DataSet [ ] ,
97
- isValidRerankModel ?: boolean ,
97
+ validRerankModel ?: { provider ?: string ; model ?: string } ,
98
98
) => {
99
99
const shouldSetWeightDefaultValue = xorBy ( selectedDatasets , originalDatasets , 'id' ) . length > 0
100
+ const rerankModelIsValid = validRerankModel ?. provider && validRerankModel ?. model
100
101
101
102
const {
102
103
allHighQuality,
@@ -128,18 +129,10 @@ export const getMultipleRetrievalConfig = (
128
129
reranking_enable : ( ( allInternal && allEconomic ) || allExternal ) ? reranking_enable : true ,
129
130
}
130
131
131
- if ( allEconomic || mixtureHighQualityAndEconomic || inconsistentEmbeddingModel || allExternal || mixtureInternalAndExternal )
132
- result . reranking_mode = RerankingModeEnum . RerankingModel
133
-
134
- if ( allHighQuality && ! inconsistentEmbeddingModel && reranking_mode === undefined && allInternal )
135
- result . reranking_mode = RerankingModeEnum . WeightedScore
136
-
137
- if ( allHighQuality && ! inconsistentEmbeddingModel && ( reranking_mode === RerankingModeEnum . WeightedScore || reranking_mode === undefined ) && allInternal && ! weights ) {
138
- if ( ! isValidRerankModel )
139
- result . reranking_mode = RerankingModeEnum . WeightedScore
140
- else
141
- result . reranking_mode = RerankingModeEnum . RerankingModel
132
+ if ( ! rerankModelIsValid )
133
+ result . reranking_model = undefined
142
134
135
+ const setDefaultWeights = ( ) => {
143
136
result . weights = {
144
137
vector_setting : {
145
138
vector_weight : allHighQualityVectorSearch
@@ -160,31 +153,85 @@ export const getMultipleRetrievalConfig = (
160
153
}
161
154
}
162
155
163
- if ( shouldSetWeightDefaultValue && allHighQuality && ! inconsistentEmbeddingModel && ( reranking_mode === RerankingModeEnum . WeightedScore || reranking_mode === undefined || ! isValidRerankModel ) && allInternal && weights ) {
164
- if ( ! isValidRerankModel )
165
- result . reranking_mode = RerankingModeEnum . WeightedScore
166
- else
156
+ if ( allEconomic || mixtureHighQualityAndEconomic || inconsistentEmbeddingModel || allExternal || mixtureInternalAndExternal ) {
157
+ result . reranking_mode = RerankingModeEnum . RerankingModel
158
+
159
+ if ( rerankModelIsValid ) {
167
160
result . reranking_mode = RerankingModeEnum . RerankingModel
161
+ result . reranking_model = {
162
+ provider : validRerankModel ?. provider || '' ,
163
+ model : validRerankModel ?. model || '' ,
164
+ }
165
+ }
166
+ else {
167
+ result . reranking_model = undefined
168
+ }
169
+ }
168
170
169
- result . weights = {
170
- vector_setting : {
171
- vector_weight : allHighQualityVectorSearch
172
- ? DEFAULT_WEIGHTED_SCORE . allHighQualityVectorSearch . semantic
173
- : allHighQualityFullTextSearch
174
- ? DEFAULT_WEIGHTED_SCORE . allHighQualityFullTextSearch . semantic
175
- : DEFAULT_WEIGHTED_SCORE . other . semantic ,
176
- embedding_provider_name : selectedDatasets [ 0 ] . embedding_model_provider ,
177
- embedding_model_name : selectedDatasets [ 0 ] . embedding_model ,
178
- } ,
179
- keyword_setting : {
180
- keyword_weight : allHighQualityVectorSearch
181
- ? DEFAULT_WEIGHTED_SCORE . allHighQualityVectorSearch . keyword
182
- : allHighQualityFullTextSearch
183
- ? DEFAULT_WEIGHTED_SCORE . allHighQualityFullTextSearch . keyword
184
- : DEFAULT_WEIGHTED_SCORE . other . keyword ,
185
- } ,
171
+ if ( allHighQuality && ! inconsistentEmbeddingModel && allInternal ) {
172
+ if ( ! reranking_mode ) {
173
+ if ( validRerankModel ?. provider && validRerankModel ?. model ) {
174
+ result . reranking_mode = RerankingModeEnum . RerankingModel
175
+ result . reranking_model = {
176
+ provider : validRerankModel . provider ,
177
+ model : validRerankModel . model ,
178
+ }
179
+ }
180
+ else {
181
+ result . reranking_mode = RerankingModeEnum . WeightedScore
182
+ setDefaultWeights ( )
183
+ }
184
+ }
185
+
186
+ if ( reranking_mode === RerankingModeEnum . WeightedScore && ! weights )
187
+ setDefaultWeights ( )
188
+
189
+ if ( reranking_mode === RerankingModeEnum . WeightedScore && weights && shouldSetWeightDefaultValue ) {
190
+ if ( rerankModelIsValid ) {
191
+ result . reranking_mode = RerankingModeEnum . RerankingModel
192
+ result . reranking_model = {
193
+ provider : validRerankModel . provider || '' ,
194
+ model : validRerankModel . model || '' ,
195
+ }
196
+ }
197
+ else {
198
+ setDefaultWeights ( )
199
+ }
200
+ }
201
+
202
+ if ( reranking_mode === RerankingModeEnum . RerankingModel && ! rerankModelIsValid && shouldSetWeightDefaultValue ) {
203
+ result . reranking_mode = RerankingModeEnum . WeightedScore
204
+ setDefaultWeights ( )
186
205
}
187
206
}
188
207
189
208
return result
190
209
}
210
+
211
+ export const checkoutRerankModelConfigedInRetrievalSettings = (
212
+ datasets : DataSet [ ] ,
213
+ multipleRetrievalConfig ?: MultipleRetrievalConfig ,
214
+ ) => {
215
+ if ( ! multipleRetrievalConfig )
216
+ return true
217
+
218
+ const {
219
+ allEconomic,
220
+ allExternal,
221
+ } = getSelectedDatasetsMode ( datasets )
222
+
223
+ const {
224
+ reranking_enable,
225
+ reranking_mode,
226
+ reranking_model,
227
+ } = multipleRetrievalConfig
228
+
229
+ if ( reranking_mode === RerankingModeEnum . RerankingModel && ( ! reranking_model ?. provider || ! reranking_model ?. model ) ) {
230
+ if ( ( allEconomic || allExternal ) && ! reranking_enable )
231
+ return true
232
+
233
+ return false
234
+ }
235
+
236
+ return true
237
+ }
0 commit comments