faiss 0.2.0 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +7 -7
  5. data/ext/faiss/extconf.rb +6 -3
  6. data/ext/faiss/numo.hpp +4 -4
  7. data/ext/faiss/utils.cpp +1 -1
  8. data/ext/faiss/utils.h +1 -1
  9. data/lib/faiss/version.rb +1 -1
  10. data/vendor/faiss/faiss/AutoTune.cpp +292 -291
  11. data/vendor/faiss/faiss/AutoTune.h +55 -56
  12. data/vendor/faiss/faiss/Clustering.cpp +365 -194
  13. data/vendor/faiss/faiss/Clustering.h +102 -35
  14. data/vendor/faiss/faiss/IVFlib.cpp +171 -195
  15. data/vendor/faiss/faiss/IVFlib.h +48 -51
  16. data/vendor/faiss/faiss/Index.cpp +85 -103
  17. data/vendor/faiss/faiss/Index.h +54 -48
  18. data/vendor/faiss/faiss/Index2Layer.cpp +126 -224
  19. data/vendor/faiss/faiss/Index2Layer.h +22 -36
  20. data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +407 -0
  21. data/vendor/faiss/faiss/IndexAdditiveQuantizer.h +195 -0
  22. data/vendor/faiss/faiss/IndexBinary.cpp +45 -37
  23. data/vendor/faiss/faiss/IndexBinary.h +140 -132
  24. data/vendor/faiss/faiss/IndexBinaryFlat.cpp +73 -53
  25. data/vendor/faiss/faiss/IndexBinaryFlat.h +29 -24
  26. data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +46 -43
  27. data/vendor/faiss/faiss/IndexBinaryFromFloat.h +16 -15
  28. data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +215 -232
  29. data/vendor/faiss/faiss/IndexBinaryHNSW.h +25 -24
  30. data/vendor/faiss/faiss/IndexBinaryHash.cpp +182 -177
  31. data/vendor/faiss/faiss/IndexBinaryHash.h +41 -34
  32. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +489 -461
  33. data/vendor/faiss/faiss/IndexBinaryIVF.h +97 -68
  34. data/vendor/faiss/faiss/IndexFlat.cpp +115 -176
  35. data/vendor/faiss/faiss/IndexFlat.h +42 -59
  36. data/vendor/faiss/faiss/IndexFlatCodes.cpp +67 -0
  37. data/vendor/faiss/faiss/IndexFlatCodes.h +47 -0
  38. data/vendor/faiss/faiss/IndexHNSW.cpp +372 -348
  39. data/vendor/faiss/faiss/IndexHNSW.h +57 -41
  40. data/vendor/faiss/faiss/IndexIVF.cpp +545 -453
  41. data/vendor/faiss/faiss/IndexIVF.h +169 -118
  42. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +316 -0
  43. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h +121 -0
  44. data/vendor/faiss/faiss/IndexIVFFlat.cpp +247 -252
  45. data/vendor/faiss/faiss/IndexIVFFlat.h +48 -51
  46. data/vendor/faiss/faiss/IndexIVFPQ.cpp +459 -517
  47. data/vendor/faiss/faiss/IndexIVFPQ.h +75 -67
  48. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +406 -372
  49. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +82 -57
  50. data/vendor/faiss/faiss/IndexIVFPQR.cpp +104 -102
  51. data/vendor/faiss/faiss/IndexIVFPQR.h +33 -28
  52. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +163 -150
  53. data/vendor/faiss/faiss/IndexIVFSpectralHash.h +38 -25
  54. data/vendor/faiss/faiss/IndexLSH.cpp +66 -113
  55. data/vendor/faiss/faiss/IndexLSH.h +20 -38
  56. data/vendor/faiss/faiss/IndexLattice.cpp +42 -56
  57. data/vendor/faiss/faiss/IndexLattice.h +11 -16
  58. data/vendor/faiss/faiss/IndexNNDescent.cpp +229 -0
  59. data/vendor/faiss/faiss/IndexNNDescent.h +72 -0
  60. data/vendor/faiss/faiss/IndexNSG.cpp +301 -0
  61. data/vendor/faiss/faiss/IndexNSG.h +85 -0
  62. data/vendor/faiss/faiss/IndexPQ.cpp +387 -495
  63. data/vendor/faiss/faiss/IndexPQ.h +64 -82
  64. data/vendor/faiss/faiss/IndexPQFastScan.cpp +143 -170
  65. data/vendor/faiss/faiss/IndexPQFastScan.h +46 -32
  66. data/vendor/faiss/faiss/IndexPreTransform.cpp +120 -150
  67. data/vendor/faiss/faiss/IndexPreTransform.h +33 -36
  68. data/vendor/faiss/faiss/IndexRefine.cpp +139 -127
  69. data/vendor/faiss/faiss/IndexRefine.h +32 -23
  70. data/vendor/faiss/faiss/IndexReplicas.cpp +147 -153
  71. data/vendor/faiss/faiss/IndexReplicas.h +62 -56
  72. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +111 -172
  73. data/vendor/faiss/faiss/IndexScalarQuantizer.h +41 -59
  74. data/vendor/faiss/faiss/IndexShards.cpp +256 -240
  75. data/vendor/faiss/faiss/IndexShards.h +85 -73
  76. data/vendor/faiss/faiss/MatrixStats.cpp +112 -97
  77. data/vendor/faiss/faiss/MatrixStats.h +7 -10
  78. data/vendor/faiss/faiss/MetaIndexes.cpp +135 -157
  79. data/vendor/faiss/faiss/MetaIndexes.h +40 -34
  80. data/vendor/faiss/faiss/MetricType.h +7 -7
  81. data/vendor/faiss/faiss/VectorTransform.cpp +654 -475
  82. data/vendor/faiss/faiss/VectorTransform.h +64 -89
  83. data/vendor/faiss/faiss/clone_index.cpp +78 -73
  84. data/vendor/faiss/faiss/clone_index.h +4 -9
  85. data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +33 -38
  86. data/vendor/faiss/faiss/gpu/GpuAutoTune.h +11 -9
  87. data/vendor/faiss/faiss/gpu/GpuCloner.cpp +198 -171
  88. data/vendor/faiss/faiss/gpu/GpuCloner.h +53 -35
  89. data/vendor/faiss/faiss/gpu/GpuClonerOptions.cpp +12 -14
  90. data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +27 -25
  91. data/vendor/faiss/faiss/gpu/GpuDistance.h +116 -112
  92. data/vendor/faiss/faiss/gpu/GpuFaissAssert.h +1 -2
  93. data/vendor/faiss/faiss/gpu/GpuIcmEncoder.h +60 -0
  94. data/vendor/faiss/faiss/gpu/GpuIndex.h +134 -137
  95. data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +76 -73
  96. data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +173 -162
  97. data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +67 -64
  98. data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +89 -86
  99. data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +150 -141
  100. data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +101 -103
  101. data/vendor/faiss/faiss/gpu/GpuIndicesOptions.h +17 -16
  102. data/vendor/faiss/faiss/gpu/GpuResources.cpp +116 -128
  103. data/vendor/faiss/faiss/gpu/GpuResources.h +182 -186
  104. data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +433 -422
  105. data/vendor/faiss/faiss/gpu/StandardGpuResources.h +131 -130
  106. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +468 -456
  107. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +25 -19
  108. data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +22 -20
  109. data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +9 -8
  110. data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +39 -44
  111. data/vendor/faiss/faiss/gpu/perf/IndexWrapper.h +16 -14
  112. data/vendor/faiss/faiss/gpu/perf/PerfClustering.cpp +77 -71
  113. data/vendor/faiss/faiss/gpu/perf/PerfIVFPQAdd.cpp +109 -88
  114. data/vendor/faiss/faiss/gpu/perf/WriteIndex.cpp +75 -64
  115. data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +230 -215
  116. data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +80 -86
  117. data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +284 -277
  118. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +416 -416
  119. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +611 -517
  120. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +166 -164
  121. data/vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp +61 -53
  122. data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +274 -238
  123. data/vendor/faiss/faiss/gpu/test/TestUtils.h +73 -57
  124. data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +47 -50
  125. data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +79 -72
  126. data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +140 -146
  127. data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.h +69 -71
  128. data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +21 -16
  129. data/vendor/faiss/faiss/gpu/utils/Timer.cpp +25 -29
  130. data/vendor/faiss/faiss/gpu/utils/Timer.h +30 -29
  131. data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +503 -0
  132. data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +175 -0
  133. data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +90 -120
  134. data/vendor/faiss/faiss/impl/AuxIndexStructures.h +81 -65
  135. data/vendor/faiss/faiss/impl/FaissAssert.h +73 -58
  136. data/vendor/faiss/faiss/impl/FaissException.cpp +56 -48
  137. data/vendor/faiss/faiss/impl/FaissException.h +41 -29
  138. data/vendor/faiss/faiss/impl/HNSW.cpp +606 -617
  139. data/vendor/faiss/faiss/impl/HNSW.h +179 -200
  140. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +855 -0
  141. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +244 -0
  142. data/vendor/faiss/faiss/impl/NNDescent.cpp +487 -0
  143. data/vendor/faiss/faiss/impl/NNDescent.h +154 -0
  144. data/vendor/faiss/faiss/impl/NSG.cpp +679 -0
  145. data/vendor/faiss/faiss/impl/NSG.h +199 -0
  146. data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +484 -454
  147. data/vendor/faiss/faiss/impl/PolysemousTraining.h +52 -55
  148. data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +26 -47
  149. data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +469 -459
  150. data/vendor/faiss/faiss/impl/ProductQuantizer.h +76 -87
  151. data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +758 -0
  152. data/vendor/faiss/faiss/impl/ResidualQuantizer.h +188 -0
  153. data/vendor/faiss/faiss/impl/ResultHandler.h +96 -132
  154. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +647 -707
  155. data/vendor/faiss/faiss/impl/ScalarQuantizer.h +48 -46
  156. data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +129 -131
  157. data/vendor/faiss/faiss/impl/ThreadedIndex.h +61 -55
  158. data/vendor/faiss/faiss/impl/index_read.cpp +631 -480
  159. data/vendor/faiss/faiss/impl/index_write.cpp +547 -407
  160. data/vendor/faiss/faiss/impl/io.cpp +76 -95
  161. data/vendor/faiss/faiss/impl/io.h +31 -41
  162. data/vendor/faiss/faiss/impl/io_macros.h +60 -29
  163. data/vendor/faiss/faiss/impl/kmeans1d.cpp +301 -0
  164. data/vendor/faiss/faiss/impl/kmeans1d.h +48 -0
  165. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +137 -186
  166. data/vendor/faiss/faiss/impl/lattice_Zn.h +40 -51
  167. data/vendor/faiss/faiss/impl/platform_macros.h +29 -8
  168. data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +77 -124
  169. data/vendor/faiss/faiss/impl/pq4_fast_scan.h +39 -48
  170. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +41 -52
  171. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +80 -117
  172. data/vendor/faiss/faiss/impl/simd_result_handlers.h +109 -137
  173. data/vendor/faiss/faiss/index_factory.cpp +619 -397
  174. data/vendor/faiss/faiss/index_factory.h +8 -6
  175. data/vendor/faiss/faiss/index_io.h +23 -26
  176. data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +67 -75
  177. data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +22 -24
  178. data/vendor/faiss/faiss/invlists/DirectMap.cpp +96 -112
  179. data/vendor/faiss/faiss/invlists/DirectMap.h +29 -33
  180. data/vendor/faiss/faiss/invlists/InvertedLists.cpp +307 -364
  181. data/vendor/faiss/faiss/invlists/InvertedLists.h +151 -151
  182. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +29 -34
  183. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +17 -18
  184. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +257 -293
  185. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +50 -45
  186. data/vendor/faiss/faiss/python/python_callbacks.cpp +23 -26
  187. data/vendor/faiss/faiss/python/python_callbacks.h +9 -16
  188. data/vendor/faiss/faiss/utils/AlignedTable.h +79 -44
  189. data/vendor/faiss/faiss/utils/Heap.cpp +40 -48
  190. data/vendor/faiss/faiss/utils/Heap.h +186 -209
  191. data/vendor/faiss/faiss/utils/WorkerThread.cpp +67 -76
  192. data/vendor/faiss/faiss/utils/WorkerThread.h +32 -33
  193. data/vendor/faiss/faiss/utils/distances.cpp +305 -312
  194. data/vendor/faiss/faiss/utils/distances.h +170 -122
  195. data/vendor/faiss/faiss/utils/distances_simd.cpp +498 -508
  196. data/vendor/faiss/faiss/utils/extra_distances-inl.h +117 -0
  197. data/vendor/faiss/faiss/utils/extra_distances.cpp +113 -232
  198. data/vendor/faiss/faiss/utils/extra_distances.h +30 -29
  199. data/vendor/faiss/faiss/utils/hamming-inl.h +260 -209
  200. data/vendor/faiss/faiss/utils/hamming.cpp +375 -469
  201. data/vendor/faiss/faiss/utils/hamming.h +62 -85
  202. data/vendor/faiss/faiss/utils/ordered_key_value.h +16 -18
  203. data/vendor/faiss/faiss/utils/partitioning.cpp +393 -318
  204. data/vendor/faiss/faiss/utils/partitioning.h +26 -21
  205. data/vendor/faiss/faiss/utils/quantize_lut.cpp +78 -66
  206. data/vendor/faiss/faiss/utils/quantize_lut.h +22 -20
  207. data/vendor/faiss/faiss/utils/random.cpp +39 -63
  208. data/vendor/faiss/faiss/utils/random.h +13 -16
  209. data/vendor/faiss/faiss/utils/simdlib.h +4 -2
  210. data/vendor/faiss/faiss/utils/simdlib_avx2.h +88 -85
  211. data/vendor/faiss/faiss/utils/simdlib_emulated.h +226 -165
  212. data/vendor/faiss/faiss/utils/simdlib_neon.h +832 -0
  213. data/vendor/faiss/faiss/utils/utils.cpp +304 -287
  214. data/vendor/faiss/faiss/utils/utils.h +54 -49
  215. metadata +29 -4
@@ -10,15 +10,13 @@
10
10
  #ifndef FAISS_INDEX_BINARY_IVF_H
11
11
  #define FAISS_INDEX_BINARY_IVF_H
12
12
 
13
-
14
13
  #include <vector>
15
14
 
15
+ #include <faiss/Clustering.h>
16
16
  #include <faiss/IndexBinary.h>
17
17
  #include <faiss/IndexIVF.h>
18
- #include <faiss/Clustering.h>
19
18
  #include <faiss/utils/Heap.h>
20
19
 
21
-
22
20
  namespace faiss {
23
21
 
24
22
  struct BinaryInvertedListScanner;
@@ -34,11 +32,11 @@ struct BinaryInvertedListScanner;
34
32
  */
35
33
  struct IndexBinaryIVF : IndexBinary {
36
34
  /// Access to the actual data
37
- InvertedLists *invlists;
35
+ InvertedLists* invlists;
38
36
  bool own_invlists;
39
37
 
40
- size_t nprobe; ///< number of probes at query time
41
- size_t max_codes; ///< max nb of codes to visit to do a query
38
+ size_t nprobe; ///< number of probes at query time
39
+ size_t max_codes; ///< max nb of codes to visit to do a query
42
40
 
43
41
  /** Select between using a heap or counting to select the k smallest values
44
42
  * when scanning inverted lists.
@@ -48,20 +46,20 @@ struct IndexBinaryIVF : IndexBinary {
48
46
  /// map for direct access to the elements. Enables reconstruct().
49
47
  DirectMap direct_map;
50
48
 
51
- IndexBinary *quantizer; ///< quantizer that maps vectors to inverted lists
52
- size_t nlist; ///< number of possible key values
49
+ IndexBinary* quantizer; ///< quantizer that maps vectors to inverted lists
50
+ size_t nlist; ///< number of possible key values
53
51
 
54
- bool own_fields; ///< whether object owns the quantizer
52
+ bool own_fields; ///< whether object owns the quantizer
55
53
 
56
54
  ClusteringParameters cp; ///< to override default clustering params
57
- Index *clustering_index; ///< to override index used during clustering
55
+ Index* clustering_index; ///< to override index used during clustering
58
56
 
59
57
  /** The Inverted file takes a quantizer (an IndexBinary) on input,
60
58
  * which implements the function mapping a vector to a list
61
59
  * identifier. The pointer is borrowed: the quantizer should not
62
60
  * be deleted while the IndexBinaryIVF is in use.
63
61
  */
64
- IndexBinaryIVF(IndexBinary *quantizer, size_t d, size_t nlist);
62
+ IndexBinaryIVF(IndexBinary* quantizer, size_t d, size_t nlist);
65
63
 
66
64
  IndexBinaryIVF();
67
65
 
@@ -70,15 +68,23 @@ struct IndexBinaryIVF : IndexBinary {
70
68
  void reset() override;
71
69
 
72
70
  /// Trains the quantizer
73
- void train(idx_t n, const uint8_t *x) override;
71
+ void train(idx_t n, const uint8_t* x) override;
74
72
 
75
- void add(idx_t n, const uint8_t *x) override;
73
+ void add(idx_t n, const uint8_t* x) override;
76
74
 
77
- void add_with_ids(idx_t n, const uint8_t *x, const idx_t *xids) override;
75
+ void add_with_ids(idx_t n, const uint8_t* x, const idx_t* xids) override;
78
76
 
79
- /// same as add_with_ids, with precomputed coarse quantizer
80
- void add_core (idx_t n, const uint8_t * x, const idx_t *xids,
81
- const idx_t *precomputed_idx);
77
+ /** Implementation of vector addition where the vector assignments are
78
+ * predefined.
79
+ *
80
+ * @param precomputed_idx quantization indices for the input vectors
81
+ * (size n)
82
+ */
83
+ void add_core(
84
+ idx_t n,
85
+ const uint8_t* x,
86
+ const idx_t* xids,
87
+ const idx_t* precomputed_idx);
82
88
 
83
89
  /** Search a set of vectors, that are pre-quantized by the IVF
84
90
  * quantizer. Fill in the corresponding heaps with the query
@@ -97,25 +103,43 @@ struct IndexBinaryIVF : IndexBinary {
97
103
  * instead of ids (used for reranking).
98
104
  * @param params used to override the object's search parameters
99
105
  */
100
- void search_preassigned(idx_t n, const uint8_t *x, idx_t k,
101
- const idx_t *assign,
102
- const int32_t *centroid_dis,
103
- int32_t *distances, idx_t *labels,
104
- bool store_pairs,
105
- const IVFSearchParameters *params=nullptr
106
- ) const;
107
-
108
- virtual BinaryInvertedListScanner *get_InvertedListScanner (
109
- bool store_pairs=false) const;
106
+ void search_preassigned(
107
+ idx_t n,
108
+ const uint8_t* x,
109
+ idx_t k,
110
+ const idx_t* assign,
111
+ const int32_t* centroid_dis,
112
+ int32_t* distances,
113
+ idx_t* labels,
114
+ bool store_pairs,
115
+ const IVFSearchParameters* params = nullptr) const;
116
+
117
+ virtual BinaryInvertedListScanner* get_InvertedListScanner(
118
+ bool store_pairs = false) const;
110
119
 
111
120
  /** assign the vectors, then call search_preassign */
112
- void search(idx_t n, const uint8_t *x, idx_t k,
113
- int32_t *distances, idx_t *labels) const override;
114
-
115
- void range_search(idx_t n, const uint8_t *x, int radius,
116
- RangeSearchResult *result) const override;
117
-
118
- void reconstruct(idx_t key, uint8_t *recons) const override;
121
+ void search(
122
+ idx_t n,
123
+ const uint8_t* x,
124
+ idx_t k,
125
+ int32_t* distances,
126
+ idx_t* labels) const override;
127
+
128
+ void range_search(
129
+ idx_t n,
130
+ const uint8_t* x,
131
+ int radius,
132
+ RangeSearchResult* result) const override;
133
+
134
+ void range_search_preassigned(
135
+ idx_t n,
136
+ const uint8_t* x,
137
+ int radius,
138
+ const idx_t* assign,
139
+ const int32_t* centroid_dis,
140
+ RangeSearchResult* result) const;
141
+
142
+ void reconstruct(idx_t key, uint8_t* recons) const override;
119
143
 
120
144
  /** Reconstruct a subset of the indexed vectors.
121
145
  *
@@ -126,7 +150,7 @@ struct IndexBinaryIVF : IndexBinary {
126
150
  * @param ni nb of vectors to reconstruct
127
151
  * @param recons output array of reconstructed vectors, size ni * d / 8
128
152
  */
129
- void reconstruct_n(idx_t i0, idx_t ni, uint8_t *recons) const override;
153
+ void reconstruct_n(idx_t i0, idx_t ni, uint8_t* recons) const override;
130
154
 
131
155
  /** Similar to search, but also reconstructs the stored vectors (or an
132
156
  * approximation in the case of lossy coding) for the search results.
@@ -137,9 +161,13 @@ struct IndexBinaryIVF : IndexBinary {
137
161
  *
138
162
  * @param recons reconstructed vectors size (n, k, d / 8)
139
163
  */
140
- void search_and_reconstruct(idx_t n, const uint8_t *x, idx_t k,
141
- int32_t *distances, idx_t *labels,
142
- uint8_t *recons) const override;
164
+ void search_and_reconstruct(
165
+ idx_t n,
166
+ const uint8_t* x,
167
+ idx_t k,
168
+ int32_t* distances,
169
+ idx_t* labels,
170
+ uint8_t* recons) const override;
143
171
 
144
172
  /** Reconstruct a vector given the location in terms of (inv list index +
145
173
  * inv list offset) instead of the id.
@@ -148,9 +176,10 @@ struct IndexBinaryIVF : IndexBinary {
148
176
  * the inv list offset is computed by search_preassigned() with
149
177
  * `store_pairs` set.
150
178
  */
151
- virtual void reconstruct_from_offset(idx_t list_no, idx_t offset,
152
- uint8_t* recons) const;
153
-
179
+ virtual void reconstruct_from_offset(
180
+ idx_t list_no,
181
+ idx_t offset,
182
+ uint8_t* recons) const;
154
183
 
155
184
  /// Dataset manipulation functions
156
185
  size_t remove_ids(const IDSelector& sel) override;
@@ -160,34 +189,33 @@ struct IndexBinaryIVF : IndexBinary {
160
189
  * sequential ids, this would be this->ntotal */
161
190
  virtual void merge_from(IndexBinaryIVF& other, idx_t add_id);
162
191
 
163
- size_t get_list_size(size_t list_no) const
164
- { return invlists->list_size(list_no); }
192
+ size_t get_list_size(size_t list_no) const {
193
+ return invlists->list_size(list_no);
194
+ }
165
195
 
166
196
  /** intialize a direct map
167
197
  *
168
198
  * @param new_maintain_direct_map if true, create a direct map,
169
199
  * else clear it
170
200
  */
171
- void make_direct_map(bool new_maintain_direct_map=true);
201
+ void make_direct_map(bool new_maintain_direct_map = true);
172
202
 
173
- void set_direct_map_type (DirectMap::Type type);
203
+ void set_direct_map_type(DirectMap::Type type);
174
204
 
175
- void replace_invlists(InvertedLists *il, bool own=false);
205
+ void replace_invlists(InvertedLists* il, bool own = false);
176
206
  };
177
207
 
178
-
179
208
  struct BinaryInvertedListScanner {
180
-
181
209
  using idx_t = Index::idx_t;
182
210
 
183
211
  /// from now on we handle this query.
184
- virtual void set_query (const uint8_t *query_vector) = 0;
212
+ virtual void set_query(const uint8_t* query_vector) = 0;
185
213
 
186
214
  /// following codes come from this inverted list
187
- virtual void set_list (idx_t list_no, uint8_t coarse_dis) = 0;
215
+ virtual void set_list(idx_t list_no, uint8_t coarse_dis) = 0;
188
216
 
189
217
  /// compute a single query-to-code distance
190
- virtual uint32_t distance_to_code (const uint8_t *code) const = 0;
218
+ virtual uint32_t distance_to_code(const uint8_t* code) const = 0;
191
219
 
192
220
  /** compute the distances to codes. (distances, labels) should be
193
221
  * organized as a min- or max-heap
@@ -199,23 +227,24 @@ struct BinaryInvertedListScanner {
199
227
  * @param labels heap labels (size k)
200
228
  * @param k heap size
201
229
  */
202
- virtual size_t scan_codes (size_t n,
203
- const uint8_t *codes,
204
- const idx_t *ids,
205
- int32_t *distances, idx_t *labels,
206
- size_t k) const = 0;
207
-
208
- virtual void scan_codes_range (size_t n,
209
- const uint8_t *codes,
210
- const idx_t *ids,
211
- int radius,
212
- RangeQueryResult &result) const = 0;
213
-
214
- virtual ~BinaryInvertedListScanner () {}
215
-
230
+ virtual size_t scan_codes(
231
+ size_t n,
232
+ const uint8_t* codes,
233
+ const idx_t* ids,
234
+ int32_t* distances,
235
+ idx_t* labels,
236
+ size_t k) const = 0;
237
+
238
+ virtual void scan_codes_range(
239
+ size_t n,
240
+ const uint8_t* codes,
241
+ const idx_t* ids,
242
+ int radius,
243
+ RangeQueryResult& result) const = 0;
244
+
245
+ virtual ~BinaryInvertedListScanner() {}
216
246
  };
217
247
 
248
+ } // namespace faiss
218
249
 
219
- } // namespace faiss
220
-
221
- #endif // FAISS_INDEX_BINARY_IVF_H
250
+ #endif // FAISS_INDEX_BINARY_IVF_H