@@ -306,6 +306,98 @@ setup:
306
306
- match : { hits.hits.0._score: $rescore_score0 }
307
307
- match : { hits.hits.1._score: $rescore_score1 }
308
308
- match : { hits.hits.2._score: $rescore_score2 }
309
+
310
+ ---
311
+ " Test index configured rescore vector with on-disk rescore " :
312
+ - requires :
313
+ cluster_features : [ "mapper.vectors.diskbbq_on_disk_rescoring" ]
314
+ reason : Needs on_disk_rescoring feature for DiskBBQ
315
+ - skip :
316
+ features : " headers"
317
+ - do :
318
+ indices.create :
319
+ index : bbq_on_disk_rescore_ivf
320
+ body :
321
+ settings :
322
+ index :
323
+ number_of_shards : 1
324
+ mappings :
325
+ properties :
326
+ vector :
327
+ type : dense_vector
328
+ dims : 64
329
+ index : true
330
+ similarity : max_inner_product
331
+ index_options :
332
+ type : bbq_disk
333
+ on_disk_rescore : true
334
+ rescore_vector :
335
+ oversample : 1.5
336
+
337
+ - do :
338
+ bulk :
339
+ index : bbq_on_disk_rescore_ivf
340
+ refresh : true
341
+ body : |
342
+ { "index": {"_id": "1"}}
343
+ { "vector": [0.077, 0.32 , -0.205, 0.63 , 0.032, 0.201, 0.167, -0.313, 0.176, 0.531, -0.375, 0.334, -0.046, 0.078, -0.349, 0.272, 0.307, -0.083, 0.504, 0.255, -0.404, 0.289, -0.226, -0.132, -0.216, 0.49 , 0.039, 0.507, -0.307, 0.107, 0.09 , -0.265, -0.285, 0.336, -0.272, 0.369, -0.282, 0.086, -0.132, 0.475, -0.224, 0.203, 0.439, 0.064, 0.246, -0.396, 0.297, 0.242, -0.028, 0.321, -0.022, -0.009, -0.001 , 0.031, -0.533, 0.45, -0.683, 1.331, 0.194, -0.157, -0.1 , -0.279, -0.098, -0.176] }
344
+ { "index": {"_id": "2"}}
345
+ { "vector": [0.196, 0.514, 0.039, 0.555, -0.042, 0.242, 0.463, -0.348, -0.08 , 0.442, -0.067, -0.05 , -0.001, 0.298, -0.377, 0.048, 0.307, 0.159, 0.278, 0.119, -0.057, 0.333, -0.289, -0.438, -0.014, 0.361, -0.169, 0.292, -0.229, 0.123, 0.031, -0.138, -0.139, 0.315, -0.216, 0.322, -0.445, -0.059, 0.071, 0.429, -0.602, -0.142, 0.11 , 0.192, 0.259, -0.241, 0.181, -0.166, 0.082, 0.107, -0.05 , 0.155, 0.011, 0.161, -0.486, 0.569, -0.489, 0.901, 0.208, 0.011, -0.209, -0.153, -0.27 , -0.013] }
346
+ { "index": {"_id": "3"}}
347
+ { "vector": [0.196, 0.514, 0.039, 0.555, -0.042, 0.242, 0.463, -0.348, -0.08 , 0.442, -0.067, -0.05 , -0.001, 0.298, -0.377, 0.048, 0.307, 0.159, 0.278, 0.119, -0.057, 0.333, -0.289, -0.438, -0.014, 0.361, -0.169, 0.292, -0.229, 0.123, 0.031, -0.138, -0.139, 0.315, -0.216, 0.322, -0.445, -0.059, 0.071, 0.429, -0.602, -0.142, 0.11 , 0.192, 0.259, -0.241, 0.181, -0.166, 0.082, 0.107, -0.05 , 0.155, 0.011, 0.161, -0.486, 0.569, -0.489, 0.901, 0.208, 0.011, -0.209, -0.153, -0.27 , -0.013] }
348
+
349
+ - do :
350
+ headers :
351
+ Content-Type : application/json
352
+ search :
353
+ rest_total_hits_as_int : true
354
+ index : bbq_on_disk_rescore_ivf
355
+ body :
356
+ knn :
357
+ field : vector
358
+ query_vector : [ 0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
359
+ 0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
360
+ 0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
361
+ -0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
362
+ -0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
363
+ -0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
364
+ -0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
365
+ -0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158 ]
366
+ k : 3
367
+ num_candidates : 3
368
+
369
+ - match : { hits.total: 3 }
370
+ - set : { hits.hits.0._score: rescore_score0 }
371
+ - set : { hits.hits.1._score: rescore_score1 }
372
+ - set : { hits.hits.2._score: rescore_score2 }
373
+
374
+ - do :
375
+ headers :
376
+ Content-Type : application/json
377
+ search :
378
+ rest_total_hits_as_int : true
379
+ index : bbq_on_disk_rescore_ivf
380
+ body :
381
+ query :
382
+ script_score :
383
+ query : { match_all: { } }
384
+ script :
385
+ source : " double similarity = dotProduct(params.query_vector, 'vector'); return similarity < 0 ? 1 / (1 + -1 * similarity) : similarity + 1"
386
+ params :
387
+ query_vector : [ 0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
388
+ 0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
389
+ 0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
390
+ -0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
391
+ -0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
392
+ -0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
393
+ -0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
394
+ -0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158 ]
395
+
396
+ # Compare scores as hit IDs may change depending on how things are distributed
397
+ - match : { hits.total: 3 }
398
+ - match : { hits.hits.0._score: $rescore_score0 }
399
+ - match : { hits.hits.1._score: $rescore_score1 }
400
+ - match : { hits.hits.2._score: $rescore_score2 }
309
401
---
310
402
" Test index configured rescore vector updateable and settable to 0 " :
311
403
- do :
0 commit comments