Commit 7a2c310
committed
Introduce NativeEngines990KnnVectorsScorer to decouple native SIMD scoring selection from FaissMemoryOptimizedSearcher
Previously, FaissMemoryOptimizedSearcher was responsible for detecting
MMap-backed vectors and choosing between NativeRandomVectorScorer and
the default Java scorer. This logic is now extracted into a dedicated
FlatVectorsScorer decorator that sits in the codec scoring chain,
making native SIMD acceleration available to all scoring paths
(including HNSW graph traversal with prefetch support).
By placing NativeEngines990KnnVectorsScorer inside
PrefetchableFlatVectorScorer in the decorator chain, the native scorer
now benefits from prefetch-enabled bulk scoring during HNSW graph
traversal. Previously, NativeRandomVectorScorer was instantiated
directly in FaissMemoryOptimizedSearcher, bypassing the prefetch layer
entirely. With this change, PrefetchableFlatVectorScorer can wrap the
NativeRandomVectorScorer returned by NativeEngines990KnnVectorsScorer,
issuing prefetch hints for memory-mapped vector data before native SIMD
scoring, reducing memory access latency during graph neighbor evaluation.
Key changes:
- Add NativeEngines990KnnVectorsScorer which wraps a FlatVectorsScorer
delegate and transparently returns NativeRandomVectorScorer when the
bottom-level FloatVectorValues implements MMapVectorValues and the
similarity function is EUCLIDEAN or MAXIMUM_INNER_PRODUCT
- Simplify FaissMemoryOptimizedSearcher by removing the native scoring
branch and determineNativeFunctionType(); it now unconditionally
delegates to the FlatVectorsScorer
- Refactor NativeRandomVectorScorer to extend AbstractRandomVectorScorer,
removing manual maxOrd/ordToDoc/getAcceptOrds overrides, enabling it
to be wrapped by PrefetchableFlatVectorScorer for prefetch-enabled
bulk scoring during HNSW graph traversal
- Wire the new scorer into NativeEngines990KnnVectorsFormat between the
Lucene99 flat vectors scorer and PrefetchableFlatVectorScorer
- Add unit tests covering all routing branches
Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>1 parent 6c4d427 commit 7a2c310
File tree
6 files changed
+245
-86
lines changed- src
- main/java/org/opensearch/knn
- index/codec
- KNN990Codec
- scorer
- memoryoptsearch/faiss
- test/java/org/opensearch/knn/index/codec/scorer
6 files changed
+245
-86
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
38 | | - | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| |||
Lines changed: 76 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
Lines changed: 6 additions & 32 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | 12 | | |
14 | 13 | | |
15 | 14 | | |
| |||
29 | 28 | | |
30 | 29 | | |
31 | 30 | | |
32 | | - | |
33 | 31 | | |
34 | 32 | | |
35 | 33 | | |
| |||
58 | 56 | | |
59 | 57 | | |
60 | 58 | | |
61 | | - | |
62 | 59 | | |
63 | 60 | | |
64 | 61 | | |
| |||
90 | 87 | | |
91 | 88 | | |
92 | 89 | | |
93 | | - | |
94 | 90 | | |
95 | 91 | | |
96 | 92 | | |
| |||
106 | 102 | | |
107 | 103 | | |
108 | 104 | | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | 105 | | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
138 | 112 | | |
139 | 113 | | |
140 | 114 | | |
| |||
Lines changed: 7 additions & 53 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | 8 | | |
10 | | - | |
11 | 9 | | |
12 | 10 | | |
13 | 11 | | |
| |||
21 | 19 | | |
22 | 20 | | |
23 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
24 | 26 | | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
| 27 | + | |
39 | 28 | | |
40 | 29 | | |
41 | 30 | | |
| |||
52 | 41 | | |
53 | 42 | | |
54 | 43 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
| 44 | + | |
| 45 | + | |
60 | 46 | | |
61 | 47 | | |
62 | 48 | | |
| |||
87 | 73 | | |
88 | 74 | | |
89 | 75 | | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | 76 | | |
0 commit comments