Commit bfefe03
authored
Remove soar duplicate checking (elastic#132617)
Through our various benchmarking runs, I have noticed we do a silly
amount of work just handling duplicate vectors for overspill. When it
comes to block scoring, it is likely much better to just score the
duplicates, and deduplicate later. This indeed is the case, and the
performance increases as the number of vector ops increases.
## Multi-segment Cohere-wiki-768 8M
I ran every nprobe 5 times and picked the fastest.
### CANDIDATE
```
index_name index_type n_probe latency(ms) net_cpu_time(ms) avg_cpu_count QPS recall visited filter_selectivity
------------------------------ ---------- ------- ----------- ---------------- ------------- ------ ------ ---------- ------------------
cohere-wikipedia-docs-768d.vec ivf 10 7.12 0.00 0.00 140.45 0.80 83108.96 1.00
cohere-wikipedia-docs-768d.vec ivf 20 10.47 0.00 0.00 95.51 0.86 169324.80 1.00
cohere-wikipedia-docs-768d.vec ivf 50 19.86 0.00 0.00 50.35 0.91 461667.04 1.00
cohere-wikipedia-docs-768d.vec ivf 100 33.65 0.00 0.00 29.72 0.94 950007.20 1.00
cohere-wikipedia-docs-768d.vec ivf 200 57.04 0.00 0.00 17.53 0.95 1797631.04 1.00
cohere-wikipedia-docs-768d.vec ivf 500 124.30 0.00 0.00 8.05 0.96 4334902.24 1.00
cohere-wikipedia-docs-768d.vec ivf 1000 236.78 0.00 0.00 4.22 0.96 8521820.48 1.00
```
### BASELINE
```
index_name index_type n_probe latency(ms) net_cpu_time(ms) avg_cpu_count QPS recall visited filter_selectivity
------------------------------ ---------- ------- ----------- ---------------- ------------- ------ ------ ---------- ------------------
cohere-wikipedia-docs-768d.vec ivf 10 7.21 0.00 0.00 138.70 0.81 74077.53 1.00
cohere-wikipedia-docs-768d.vec ivf 20 10.83 0.00 0.00 92.34 0.86 144966.33 1.00
cohere-wikipedia-docs-768d.vec ivf 50 21.75 0.00 0.00 45.98 0.91 365150.68 1.00
cohere-wikipedia-docs-768d.vec ivf 100 38.25 0.00 0.00 26.14 0.93 698105.96 1.00
cohere-wikipedia-docs-768d.vec ivf 200 65.61 0.00 0.00 15.24 0.95 1278157.01 1.00
cohere-wikipedia-docs-768d.vec ivf 500 148.98 0.00 0.00 6.71 0.95 2890457.27 1.00
cohere-wikipedia-docs-768d.vec ivf 1000 281.02 0.00 0.00 3.56 0.95 4939370.44 1.00
```
## Single segment Cohere-wiki-1024 1M
My thought being that maybe larger vectors will make block scoring more
expensive, so picking individual vectors would be better. Same
methodology as above
### Candidate
```
index_name index_type n_probe latency(ms) net_cpu_time(ms) avg_cpu_count QPS recall visited filter_selectivity
---------------- ---------- ------- ----------- ---------------- ------------- ------- ------ --------- ------------------
wiki1024en.train ivf 10 0.63 0.00 0.00 1587.30 0.81 6389.60 1.00
wiki1024en.train ivf 20 0.86 0.00 0.00 1162.79 0.88 12528.48 1.00
wiki1024en.train ivf 50 1.43 0.00 0.00 699.30 0.93 30627.04 1.00
wiki1024en.train ivf 100 2.30 0.00 0.00 434.78 0.95 61259.84 1.00
wiki1024en.train ivf 200 4.12 0.00 0.00 242.72 0.97 122569.44 1.00
wiki1024en.train ivf 500 9.64 0.00 0.00 103.73 0.98 307816.80 1.00
wiki1024en.train ivf 1000 18.79 0.00 0.00 53.22 0.98 618772.32 1.00
```
### Baseline
```
index_name index_type n_probe latency(ms) net_cpu_time(ms) avg_cpu_count QPS recall visited filter_selectivity
---------------- ---------- ------- ----------- ---------------- ------------- ------- ------ --------- ------------------
wiki1024en.train ivf 10 0.65 0.00 0.00 1538.46 0.82 5680.72 1.00
wiki1024en.train ivf 20 0.84 0.00 0.00 1190.48 0.88 10677.40 1.00
wiki1024en.train ivf 50 1.49 0.00 0.00 671.14 0.94 24431.26 1.00
wiki1024en.train ivf 100 2.41 0.00 0.00 414.94 0.96 47000.85 1.00
wiki1024en.train ivf 200 4.56 0.00 0.00 219.30 0.97 91284.42 1.00
wiki1024en.train ivf 500 10.56 0.00 0.00 94.70 0.98 218185.33 1.00
wiki1024en.train ivf 1000 20.81 0.00 0.00 48.05 0.98 412137.05 1.00
```1 parent f8b2ed9 commit bfefe03
File tree
3 files changed
+33
-26
lines changed- server/src/main/java/org/elasticsearch
- index/codec/vectors
- search/vectors
3 files changed
+33
-26
lines changedLines changed: 11 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | | - | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
297 | | - | |
298 | | - | |
| 297 | + | |
299 | 298 | | |
300 | 299 | | |
301 | | - | |
| 300 | + | |
302 | 301 | | |
303 | 302 | | |
304 | 303 | | |
| |||
312 | 311 | | |
313 | 312 | | |
314 | 313 | | |
315 | | - | |
| 314 | + | |
316 | 315 | | |
317 | 316 | | |
318 | 317 | | |
| |||
342 | 341 | | |
343 | 342 | | |
344 | 343 | | |
345 | | - | |
| 344 | + | |
346 | 345 | | |
347 | 346 | | |
348 | 347 | | |
349 | 348 | | |
350 | 349 | | |
351 | | - | |
| 350 | + | |
352 | 351 | | |
353 | 352 | | |
354 | 353 | | |
| |||
419 | 418 | | |
420 | 419 | | |
421 | 420 | | |
422 | | - | |
| 421 | + | |
| 422 | + | |
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
426 | | - | |
| 426 | + | |
427 | 427 | | |
428 | 428 | | |
429 | 429 | | |
| |||
447 | 447 | | |
448 | 448 | | |
449 | 449 | | |
450 | | - | |
| 450 | + | |
451 | 451 | | |
452 | 452 | | |
453 | 453 | | |
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
479 | | - | |
| 479 | + | |
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
| |||
Lines changed: 2 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | 32 | | |
34 | 33 | | |
35 | 34 | | |
36 | 35 | | |
37 | | - | |
38 | 36 | | |
39 | 37 | | |
40 | 38 | | |
| |||
224 | 222 | | |
225 | 223 | | |
226 | 224 | | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | 225 | | |
235 | 226 | | |
236 | 227 | | |
| |||
248 | 239 | | |
249 | 240 | | |
250 | 241 | | |
251 | | - | |
| 242 | + | |
252 | 243 | | |
253 | 244 | | |
254 | 245 | | |
| |||
316 | 307 | | |
317 | 308 | | |
318 | 309 | | |
319 | | - | |
| 310 | + | |
320 | 311 | | |
321 | 312 | | |
322 | 313 | | |
| |||
Lines changed: 20 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
| |||
115 | 117 | | |
116 | 118 | | |
117 | 119 | | |
118 | | - | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
119 | 124 | | |
120 | 125 | | |
121 | 126 | | |
| |||
135 | 140 | | |
136 | 141 | | |
137 | 142 | | |
138 | | - | |
139 | | - | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
140 | 155 | | |
| 156 | + | |
141 | 157 | | |
142 | 158 | | |
143 | | - | |
| 159 | + | |
144 | 160 | | |
145 | 161 | | |
146 | 162 | | |
| |||
0 commit comments