Skip to content

Commit fa975de

Browse files
committed
Change similarity to MIP in tests
1 parent 83238a5 commit fa975de

File tree

3 files changed

+77
-42
lines changed

3 files changed

+77
-42
lines changed

rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/210_knn_search_profile.yml

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,11 @@ setup:
1818
number_of_shards: 1
1919
mappings:
2020
properties:
21-
name:
22-
type: keyword
2321
vector:
2422
type: dense_vector
2523
dims: 64
2624
index: true
27-
similarity: l2_norm
28-
index_options:
29-
type: bbq_hnsw
30-
another_vector:
31-
type: dense_vector
32-
dims: 64
33-
index: true
34-
similarity: l2_norm
25+
similarity: max_inner_product
3526
index_options:
3627
type: bbq_hnsw
3728

@@ -40,9 +31,14 @@ setup:
4031
index: bbq_hnsw
4132
id: "1"
4233
body:
43-
name: cow.jpg
44-
vector: [ 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0, 230.0, 300.33, -34.8988, 15.555, -200.0 ]
45-
another_vector: [ 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0, 130.0, 115.0, -1.02, 15.555, -100.0 ]
34+
vector: [0.077, 0.32 , -0.205, 0.63 , 0.032, 0.201, 0.167, -0.313,
35+
0.176, 0.531, -0.375, 0.334, -0.046, 0.078, -0.349, 0.272,
36+
0.307, -0.083, 0.504, 0.255, -0.404, 0.289, -0.226, -0.132,
37+
-0.216, 0.49 , 0.039, 0.507, -0.307, 0.107, 0.09 , -0.265,
38+
-0.285, 0.336, -0.272, 0.369, -0.282, 0.086, -0.132, 0.475,
39+
-0.224, 0.203, 0.439, 0.064, 0.246, -0.396, 0.297, 0.242,
40+
-0.028, 0.321, -0.022, -0.009, -0.001 , 0.031, -0.533, 0.45,
41+
-0.683, 1.331, 0.194, -0.157, -0.1 , -0.279, -0.098, -0.176]
4642
# Flush in order to provoke a merge later
4743
- do:
4844
indices.flush:
@@ -53,9 +49,14 @@ setup:
5349
index: bbq_hnsw
5450
id: "2"
5551
body:
56-
name: moose.jpg
57-
vector: [ 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0, -0.5, 100.0, -13, 14.8, -156.0 ]
58-
another_vector: [ 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120, -0.5, 50.0, -1, 1, 120 ]
52+
vector: [0.196, 0.514, 0.039, 0.555, -0.042, 0.242, 0.463, -0.348,
53+
-0.08 , 0.442, -0.067, -0.05 , -0.001, 0.298, -0.377, 0.048,
54+
0.307, 0.159, 0.278, 0.119, -0.057, 0.333, -0.289, -0.438,
55+
-0.014, 0.361, -0.169, 0.292, -0.229, 0.123, 0.031, -0.138,
56+
-0.139, 0.315, -0.216, 0.322, -0.445, -0.059, 0.071, 0.429,
57+
-0.602, -0.142, 0.11 , 0.192, 0.259, -0.241, 0.181, -0.166,
58+
0.082, 0.107, -0.05 , 0.155, 0.011, 0.161, -0.486, 0.569,
59+
-0.489, 0.901, 0.208, 0.011, -0.209, -0.153, -0.27 , -0.013]
5960
# Flush in order to provoke a merge later
6061
- do:
6162
indices.flush:
@@ -67,8 +68,14 @@ setup:
6768
id: "3"
6869
body:
6970
name: rabbit.jpg
70-
vector: [ 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0, 0.5, 111.3, -13.0, 14.8, -156.0 ]
71-
another_vector: [ 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0, -0.5, 11.0, 0, 12, 111.0 ]
71+
vector: [0.139, 0.178, -0.117, 0.399, 0.014, -0.139, 0.347, -0.33 ,
72+
0.139, 0.34 , -0.052, -0.052, -0.249, 0.327, -0.288, 0.049,
73+
0.464, 0.338, 0.516, 0.247, -0.104, 0.259, -0.209, -0.246,
74+
-0.11 , 0.323, 0.091, 0.442, -0.254, 0.195, -0.109, -0.058,
75+
-0.279, 0.402, -0.107, 0.308, -0.273, 0.019, 0.082, 0.399,
76+
-0.658, -0.03 , 0.276, 0.041, 0.187, -0.331, 0.165, 0.017,
77+
0.171, -0.203, -0.198, 0.115, -0.007, 0.337, -0.444, 0.615,
78+
-0.657, 1.285, 0.2 , -0.062, 0.038, 0.089, -0.068, -0.058]
7279
# Flush in order to provoke a merge later
7380
- do:
7481
indices.flush:
@@ -78,21 +85,8 @@ setup:
7885
indices.forcemerge:
7986
index: bbq_hnsw
8087
max_num_segments: 1
81-
8288
---
8389
"Profile rescored knn search":
84-
- do:
85-
search:
86-
index: bbq_hnsw
87-
body:
88-
profile: true
89-
knn:
90-
field: vector
91-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0 ]
92-
k: 3
93-
num_candidates: 3
94-
95-
- match: { profile.shards.0.dfs.knn.0.vector_operations_count: 3 }
9690

9791
- do:
9892
search:
@@ -101,7 +95,14 @@ setup:
10195
profile: true
10296
knn:
10397
field: vector
104-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0 ]
98+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
99+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
100+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
101+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
102+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
103+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
104+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
105+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
105106
k: 3
106107
num_candidates: 3
107108
"rescore_vector":
@@ -118,10 +119,17 @@ setup:
118119
profile: true
119120
knn:
120121
field: vector
121-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0 ]
122+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
123+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
124+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
125+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
126+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
127+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
128+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
129+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
122130
k: 3
123131
num_candidates: 3
124-
similarity: 100000.0
132+
similarity: 100000
125133
"rescore_vector":
126134
"num_candidates_factor": 2.0
127135

rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/41_knn_search_bbq_hnsw.yml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,14 @@ setup:
129129
body:
130130
knn:
131131
field: vector
132-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0]
132+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
133+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
134+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
135+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
136+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
137+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
138+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
139+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
133140
k: 3
134141
num_candidates: 3
135142
rescore_vector:
@@ -152,9 +159,16 @@ setup:
152159
script_score:
153160
query: {match_all: {} }
154161
script:
155-
source: "1.0 / (1.0 + Math.pow(l2norm(params.query_vector, 'vector'), 2.0))"
162+
source: "double similarity = dotProduct(params.query_vector, 'vector'); return similarity < 0 ? 1 / (1 + -1 * similarity) : similarity + 1"
156163
params:
157-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0 ]
164+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
165+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
166+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
167+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17 ,
168+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
169+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
170+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
171+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
158172

159173
# Compare scores as hit IDs may change depending on how things are distributed
160174
- match: { hits.total: 3 }

rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/42_knn_search_bbq_flat.yml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,14 @@ setup:
128128
body:
129129
knn:
130130
field: vector
131-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0]
131+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
132+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
133+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
134+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17,
135+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
136+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
137+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
138+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
132139
k: 3
133140
num_candidates: 3
134141
rescore_vector:
@@ -150,12 +157,18 @@ setup:
150157
body:
151158
query:
152159
script_score:
153-
query: {match_all: {} }
160+
query: { match_all: {} }
154161
script:
155-
source: "1.0 / (1.0 + Math.pow(l2norm(params.query_vector, 'vector'), 2.0))"
162+
source: "double similarity = dotProduct(params.query_vector, 'vector'); return similarity < 0 ? 1 / (1 + -1 * similarity) : similarity + 1"
156163
params:
157-
query_vector: [ 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0, -0.5, 90.0, -10, 14.8, -156.0]
158-
164+
query_vector: [0.128, 0.067, -0.08 , 0.395, -0.11 , -0.259, 0.473, -0.393,
165+
0.292, 0.571, -0.491, 0.444, -0.288, 0.198, -0.343, 0.015,
166+
0.232, 0.088, 0.228, 0.151, -0.136, 0.236, -0.273, -0.259,
167+
-0.217, 0.359, -0.207, 0.352, -0.142, 0.192, -0.061, -0.17,
168+
-0.343, 0.189, -0.221, 0.32 , -0.301, -0.1 , 0.005, 0.232,
169+
-0.344, 0.136, 0.252, 0.157, -0.13 , -0.244, 0.193, -0.034,
170+
-0.12 , -0.193, -0.102, 0.252, -0.185, -0.167, -0.575, 0.582,
171+
-0.426, 0.983, 0.212, 0.204, 0.03 , -0.276, -0.425, -0.158]
159172
# Compare scores as hit IDs may change depending on how things are distributed
160173
- match: { hits.total: 3 }
161174
- match: { hits.hits.0._score: $rescore_score0 }

0 commit comments

Comments
 (0)