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
@@ -5,8 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- // -*- c++ -*-
9
-
10
8
  #ifndef FAISS_INDEX_PQ_H
11
9
  #define FAISS_INDEX_PQ_H
12
10
 
@@ -14,68 +12,47 @@
14
12
 
15
13
  #include <vector>
16
14
 
17
- #include <faiss/Index.h>
18
- #include <faiss/impl/ProductQuantizer.h>
15
+ #include <faiss/IndexFlatCodes.h>
19
16
  #include <faiss/impl/PolysemousTraining.h>
17
+ #include <faiss/impl/ProductQuantizer.h>
20
18
  #include <faiss/impl/platform_macros.h>
21
19
 
22
-
23
20
  namespace faiss {
24
21
 
25
-
26
22
  /** Index based on a product quantizer. Stored vectors are
27
23
  * approximated by PQ codes. */
28
- struct IndexPQ: Index {
29
-
24
+ struct IndexPQ : IndexFlatCodes {
30
25
  /// The product quantizer used to encode the vectors
31
26
  ProductQuantizer pq;
32
27
 
33
- /// Codes. Size ntotal * pq.code_size
34
- std::vector<uint8_t> codes;
35
-
36
28
  /** Constructor.
37
29
  *
38
30
  * @param d dimensionality of the input vectors
39
31
  * @param M number of subquantizers
40
32
  * @param nbits number of bit per subvector index
41
33
  */
42
- IndexPQ (int d, ///< dimensionality of the input vectors
43
- size_t M, ///< number of subquantizers
44
- size_t nbits, ///< number of bit per subvector index
45
- MetricType metric = METRIC_L2);
34
+ IndexPQ(int d, ///< dimensionality of the input vectors
35
+ size_t M, ///< number of subquantizers
36
+ size_t nbits, ///< number of bit per subvector index
37
+ MetricType metric = METRIC_L2);
46
38
 
47
- IndexPQ ();
39
+ IndexPQ();
48
40
 
49
41
  void train(idx_t n, const float* x) override;
50
42
 
51
- void add(idx_t n, const float* x) override;
52
-
53
43
  void search(
54
- idx_t n,
55
- const float* x,
56
- idx_t k,
57
- float* distances,
58
- idx_t* labels) const override;
59
-
60
- void reset() override;
61
-
62
- void reconstruct_n(idx_t i0, idx_t ni, float* recons) const override;
63
-
64
- void reconstruct(idx_t key, float* recons) const override;
65
-
66
- size_t remove_ids(const IDSelector& sel) override;
44
+ idx_t n,
45
+ const float* x,
46
+ idx_t k,
47
+ float* distances,
48
+ idx_t* labels) const override;
67
49
 
68
50
  /* The standalone codec interface */
69
- size_t sa_code_size () const override;
70
-
71
- void sa_encode (idx_t n, const float *x,
72
- uint8_t *bytes) const override;
73
-
74
- void sa_decode (idx_t n, const uint8_t *bytes,
75
- float *x) const override;
51
+ void sa_encode(idx_t n, const float* x, uint8_t* bytes) const override;
76
52
 
53
+ void sa_decode(idx_t n, const uint8_t* bytes, float* x) const override;
77
54
 
78
- DistanceComputer * get_distance_computer() const override;
55
+ DistanceComputer* get_distance_computer() const override;
79
56
 
80
57
  /******************************************************
81
58
  * Polysemous codes implementation
@@ -87,12 +64,12 @@ struct IndexPQ: Index {
87
64
 
88
65
  /// how to perform the search in search_core
89
66
  enum Search_type_t {
90
- ST_PQ, ///< asymmetric product quantizer (default)
91
- ST_HE, ///< Hamming distance on codes
92
- ST_generalized_HE, ///< nb of same codes
93
- ST_SDC, ///< symmetric product quantizer (SDC)
94
- ST_polysemous, ///< HE filter (using ht) + PQ combination
95
- ST_polysemous_generalize, ///< Filter on generalized Hamming
67
+ ST_PQ, ///< asymmetric product quantizer (default)
68
+ ST_HE, ///< Hamming distance on codes
69
+ ST_generalized_HE, ///< nb of same codes
70
+ ST_SDC, ///< symmetric product quantizer (SDC)
71
+ ST_polysemous, ///< HE filter (using ht) + PQ combination
72
+ ST_polysemous_generalize, ///< Filter on generalized Hamming
96
73
  };
97
74
 
98
75
  Search_type_t search_type;
@@ -105,16 +82,23 @@ struct IndexPQ: Index {
105
82
  int polysemous_ht;
106
83
 
107
84
  // actual polysemous search
108
- void search_core_polysemous (idx_t n, const float *x, idx_t k,
109
- float *distances, idx_t *labels) const;
85
+ void search_core_polysemous(
86
+ idx_t n,
87
+ const float* x,
88
+ idx_t k,
89
+ float* distances,
90
+ idx_t* labels) const;
110
91
 
111
92
  /// prepare query for a polysemous search, but instead of
112
93
  /// computing the result, just get the histogram of Hamming
113
94
  /// distances. May be computed on a provided dataset if xb != NULL
114
95
  /// @param dist_histogram (M * nbits + 1)
115
- void hamming_distance_histogram (idx_t n, const float *x,
116
- idx_t nb, const float *xb,
117
- int64_t *dist_histogram);
96
+ void hamming_distance_histogram(
97
+ idx_t n,
98
+ const float* x,
99
+ idx_t nb,
100
+ const float* xb,
101
+ int64_t* dist_histogram);
118
102
 
119
103
  /** compute pairwise distances between queries and database
120
104
  *
@@ -122,80 +106,78 @@ struct IndexPQ: Index {
122
106
  * @param x query vector, size n * d
123
107
  * @param dis output distances, size n * ntotal
124
108
  */
125
- void hamming_distance_table (idx_t n, const float *x,
126
- int32_t *dis) const;
127
-
109
+ void hamming_distance_table(idx_t n, const float* x, int32_t* dis) const;
128
110
  };
129
111
 
130
-
131
112
  /// statistics are robust to internal threading, but not if
132
113
  /// IndexPQ::search is called by multiple threads
133
114
  struct IndexPQStats {
134
- size_t nq; // nb of queries run
135
- size_t ncode; // nb of codes visited
115
+ size_t nq; // nb of queries run
116
+ size_t ncode; // nb of codes visited
136
117
 
137
118
  size_t n_hamming_pass; // nb of passed Hamming distance tests (for polysemy)
138
119
 
139
- IndexPQStats () {reset (); }
140
- void reset ();
120
+ IndexPQStats() {
121
+ reset();
122
+ }
123
+ void reset();
141
124
  };
142
125
 
143
126
  FAISS_API extern IndexPQStats indexPQ_stats;
144
127
 
145
-
146
-
147
128
  /** Quantizer where centroids are virtual: they are the Cartesian
148
129
  * product of sub-centroids. */
149
- struct MultiIndexQuantizer: Index {
130
+ struct MultiIndexQuantizer : Index {
150
131
  ProductQuantizer pq;
151
132
 
152
- MultiIndexQuantizer (int d, ///< dimension of the input vectors
153
- size_t M, ///< number of subquantizers
154
- size_t nbits); ///< number of bit per subvector index
133
+ MultiIndexQuantizer(
134
+ int d, ///< dimension of the input vectors
135
+ size_t M, ///< number of subquantizers
136
+ size_t nbits); ///< number of bit per subvector index
155
137
 
156
138
  void train(idx_t n, const float* x) override;
157
139
 
158
140
  void search(
159
- idx_t n, const float* x, idx_t k,
160
- float* distances, idx_t* labels) const override;
141
+ idx_t n,
142
+ const float* x,
143
+ idx_t k,
144
+ float* distances,
145
+ idx_t* labels) const override;
161
146
 
162
147
  /// add and reset will crash at runtime
163
148
  void add(idx_t n, const float* x) override;
164
149
  void reset() override;
165
150
 
166
- MultiIndexQuantizer () {}
151
+ MultiIndexQuantizer() {}
167
152
 
168
153
  void reconstruct(idx_t key, float* recons) const override;
169
154
  };
170
155
 
171
-
172
156
  /** MultiIndexQuantizer where the PQ assignmnet is performed by sub-indexes
173
157
  */
174
- struct MultiIndexQuantizer2: MultiIndexQuantizer {
175
-
158
+ struct MultiIndexQuantizer2 : MultiIndexQuantizer {
176
159
  /// M Indexes on d / M dimensions
177
160
  std::vector<Index*> assign_indexes;
178
161
  bool own_fields;
179
162
 
180
- MultiIndexQuantizer2 (
181
- int d, size_t M, size_t nbits,
182
- Index **indexes);
163
+ MultiIndexQuantizer2(int d, size_t M, size_t nbits, Index** indexes);
183
164
 
184
- MultiIndexQuantizer2 (
185
- int d, size_t nbits,
186
- Index *assign_index_0,
187
- Index *assign_index_1);
165
+ MultiIndexQuantizer2(
166
+ int d,
167
+ size_t nbits,
168
+ Index* assign_index_0,
169
+ Index* assign_index_1);
188
170
 
189
171
  void train(idx_t n, const float* x) override;
190
172
 
191
173
  void search(
192
- idx_t n, const float* x, idx_t k,
193
- float* distances, idx_t* labels) const override;
194
-
174
+ idx_t n,
175
+ const float* x,
176
+ idx_t k,
177
+ float* distances,
178
+ idx_t* labels) const override;
195
179
  };
196
180
 
197
-
198
181
  } // namespace faiss
199
182
 
200
-
201
183
  #endif