faiss 0.2.0 → 0.2.1

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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/faiss/version.rb +1 -1
  4. data/vendor/faiss/faiss/AutoTune.cpp +292 -291
  5. data/vendor/faiss/faiss/AutoTune.h +55 -56
  6. data/vendor/faiss/faiss/Clustering.cpp +334 -195
  7. data/vendor/faiss/faiss/Clustering.h +88 -35
  8. data/vendor/faiss/faiss/IVFlib.cpp +171 -195
  9. data/vendor/faiss/faiss/IVFlib.h +48 -51
  10. data/vendor/faiss/faiss/Index.cpp +85 -103
  11. data/vendor/faiss/faiss/Index.h +54 -48
  12. data/vendor/faiss/faiss/Index2Layer.cpp +139 -164
  13. data/vendor/faiss/faiss/Index2Layer.h +22 -22
  14. data/vendor/faiss/faiss/IndexBinary.cpp +45 -37
  15. data/vendor/faiss/faiss/IndexBinary.h +140 -132
  16. data/vendor/faiss/faiss/IndexBinaryFlat.cpp +73 -53
  17. data/vendor/faiss/faiss/IndexBinaryFlat.h +29 -24
  18. data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +46 -43
  19. data/vendor/faiss/faiss/IndexBinaryFromFloat.h +16 -15
  20. data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +215 -232
  21. data/vendor/faiss/faiss/IndexBinaryHNSW.h +25 -24
  22. data/vendor/faiss/faiss/IndexBinaryHash.cpp +182 -177
  23. data/vendor/faiss/faiss/IndexBinaryHash.h +41 -34
  24. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +489 -461
  25. data/vendor/faiss/faiss/IndexBinaryIVF.h +97 -68
  26. data/vendor/faiss/faiss/IndexFlat.cpp +116 -147
  27. data/vendor/faiss/faiss/IndexFlat.h +35 -46
  28. data/vendor/faiss/faiss/IndexHNSW.cpp +372 -348
  29. data/vendor/faiss/faiss/IndexHNSW.h +57 -41
  30. data/vendor/faiss/faiss/IndexIVF.cpp +474 -454
  31. data/vendor/faiss/faiss/IndexIVF.h +146 -113
  32. data/vendor/faiss/faiss/IndexIVFFlat.cpp +248 -250
  33. data/vendor/faiss/faiss/IndexIVFFlat.h +48 -51
  34. data/vendor/faiss/faiss/IndexIVFPQ.cpp +457 -516
  35. data/vendor/faiss/faiss/IndexIVFPQ.h +74 -66
  36. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +406 -372
  37. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +82 -57
  38. data/vendor/faiss/faiss/IndexIVFPQR.cpp +104 -102
  39. data/vendor/faiss/faiss/IndexIVFPQR.h +33 -28
  40. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +125 -133
  41. data/vendor/faiss/faiss/IndexIVFSpectralHash.h +19 -21
  42. data/vendor/faiss/faiss/IndexLSH.cpp +75 -96
  43. data/vendor/faiss/faiss/IndexLSH.h +21 -26
  44. data/vendor/faiss/faiss/IndexLattice.cpp +42 -56
  45. data/vendor/faiss/faiss/IndexLattice.h +11 -16
  46. data/vendor/faiss/faiss/IndexNNDescent.cpp +231 -0
  47. data/vendor/faiss/faiss/IndexNNDescent.h +72 -0
  48. data/vendor/faiss/faiss/IndexNSG.cpp +303 -0
  49. data/vendor/faiss/faiss/IndexNSG.h +85 -0
  50. data/vendor/faiss/faiss/IndexPQ.cpp +405 -464
  51. data/vendor/faiss/faiss/IndexPQ.h +64 -67
  52. data/vendor/faiss/faiss/IndexPQFastScan.cpp +143 -170
  53. data/vendor/faiss/faiss/IndexPQFastScan.h +46 -32
  54. data/vendor/faiss/faiss/IndexPreTransform.cpp +120 -150
  55. data/vendor/faiss/faiss/IndexPreTransform.h +33 -36
  56. data/vendor/faiss/faiss/IndexRefine.cpp +115 -131
  57. data/vendor/faiss/faiss/IndexRefine.h +22 -23
  58. data/vendor/faiss/faiss/IndexReplicas.cpp +147 -153
  59. data/vendor/faiss/faiss/IndexReplicas.h +62 -56
  60. data/vendor/faiss/faiss/IndexResidual.cpp +291 -0
  61. data/vendor/faiss/faiss/IndexResidual.h +152 -0
  62. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +120 -155
  63. data/vendor/faiss/faiss/IndexScalarQuantizer.h +41 -45
  64. data/vendor/faiss/faiss/IndexShards.cpp +256 -240
  65. data/vendor/faiss/faiss/IndexShards.h +85 -73
  66. data/vendor/faiss/faiss/MatrixStats.cpp +112 -97
  67. data/vendor/faiss/faiss/MatrixStats.h +7 -10
  68. data/vendor/faiss/faiss/MetaIndexes.cpp +135 -157
  69. data/vendor/faiss/faiss/MetaIndexes.h +40 -34
  70. data/vendor/faiss/faiss/MetricType.h +7 -7
  71. data/vendor/faiss/faiss/VectorTransform.cpp +652 -474
  72. data/vendor/faiss/faiss/VectorTransform.h +61 -89
  73. data/vendor/faiss/faiss/clone_index.cpp +77 -73
  74. data/vendor/faiss/faiss/clone_index.h +4 -9
  75. data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +33 -38
  76. data/vendor/faiss/faiss/gpu/GpuAutoTune.h +11 -9
  77. data/vendor/faiss/faiss/gpu/GpuCloner.cpp +197 -170
  78. data/vendor/faiss/faiss/gpu/GpuCloner.h +53 -35
  79. data/vendor/faiss/faiss/gpu/GpuClonerOptions.cpp +12 -14
  80. data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +27 -25
  81. data/vendor/faiss/faiss/gpu/GpuDistance.h +116 -112
  82. data/vendor/faiss/faiss/gpu/GpuFaissAssert.h +1 -2
  83. data/vendor/faiss/faiss/gpu/GpuIndex.h +134 -137
  84. data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +76 -73
  85. data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +173 -162
  86. data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +67 -64
  87. data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +89 -86
  88. data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +150 -141
  89. data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +101 -103
  90. data/vendor/faiss/faiss/gpu/GpuIndicesOptions.h +17 -16
  91. data/vendor/faiss/faiss/gpu/GpuResources.cpp +116 -128
  92. data/vendor/faiss/faiss/gpu/GpuResources.h +182 -186
  93. data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +433 -422
  94. data/vendor/faiss/faiss/gpu/StandardGpuResources.h +131 -130
  95. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +468 -456
  96. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +25 -19
  97. data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +22 -20
  98. data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +9 -8
  99. data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +39 -44
  100. data/vendor/faiss/faiss/gpu/perf/IndexWrapper.h +16 -14
  101. data/vendor/faiss/faiss/gpu/perf/PerfClustering.cpp +77 -71
  102. data/vendor/faiss/faiss/gpu/perf/PerfIVFPQAdd.cpp +109 -88
  103. data/vendor/faiss/faiss/gpu/perf/WriteIndex.cpp +75 -64
  104. data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +230 -215
  105. data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +80 -86
  106. data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +284 -277
  107. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +416 -416
  108. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +611 -517
  109. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +166 -164
  110. data/vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp +61 -53
  111. data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +274 -238
  112. data/vendor/faiss/faiss/gpu/test/TestUtils.h +73 -57
  113. data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +47 -50
  114. data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +79 -72
  115. data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +140 -146
  116. data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.h +69 -71
  117. data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +21 -16
  118. data/vendor/faiss/faiss/gpu/utils/Timer.cpp +25 -29
  119. data/vendor/faiss/faiss/gpu/utils/Timer.h +30 -29
  120. data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +270 -0
  121. data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +115 -0
  122. data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +90 -120
  123. data/vendor/faiss/faiss/impl/AuxIndexStructures.h +81 -65
  124. data/vendor/faiss/faiss/impl/FaissAssert.h +73 -58
  125. data/vendor/faiss/faiss/impl/FaissException.cpp +56 -48
  126. data/vendor/faiss/faiss/impl/FaissException.h +41 -29
  127. data/vendor/faiss/faiss/impl/HNSW.cpp +595 -611
  128. data/vendor/faiss/faiss/impl/HNSW.h +179 -200
  129. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +672 -0
  130. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +172 -0
  131. data/vendor/faiss/faiss/impl/NNDescent.cpp +487 -0
  132. data/vendor/faiss/faiss/impl/NNDescent.h +154 -0
  133. data/vendor/faiss/faiss/impl/NSG.cpp +682 -0
  134. data/vendor/faiss/faiss/impl/NSG.h +199 -0
  135. data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +484 -454
  136. data/vendor/faiss/faiss/impl/PolysemousTraining.h +52 -55
  137. data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +26 -47
  138. data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +469 -459
  139. data/vendor/faiss/faiss/impl/ProductQuantizer.h +76 -87
  140. data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +448 -0
  141. data/vendor/faiss/faiss/impl/ResidualQuantizer.h +130 -0
  142. data/vendor/faiss/faiss/impl/ResultHandler.h +96 -132
  143. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +648 -701
  144. data/vendor/faiss/faiss/impl/ScalarQuantizer.h +48 -46
  145. data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +129 -131
  146. data/vendor/faiss/faiss/impl/ThreadedIndex.h +61 -55
  147. data/vendor/faiss/faiss/impl/index_read.cpp +547 -479
  148. data/vendor/faiss/faiss/impl/index_write.cpp +497 -407
  149. data/vendor/faiss/faiss/impl/io.cpp +75 -94
  150. data/vendor/faiss/faiss/impl/io.h +31 -41
  151. data/vendor/faiss/faiss/impl/io_macros.h +40 -29
  152. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +137 -186
  153. data/vendor/faiss/faiss/impl/lattice_Zn.h +40 -51
  154. data/vendor/faiss/faiss/impl/platform_macros.h +29 -8
  155. data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +77 -124
  156. data/vendor/faiss/faiss/impl/pq4_fast_scan.h +39 -48
  157. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +41 -52
  158. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +80 -117
  159. data/vendor/faiss/faiss/impl/simd_result_handlers.h +109 -137
  160. data/vendor/faiss/faiss/index_factory.cpp +269 -218
  161. data/vendor/faiss/faiss/index_factory.h +6 -7
  162. data/vendor/faiss/faiss/index_io.h +23 -26
  163. data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +67 -75
  164. data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +22 -24
  165. data/vendor/faiss/faiss/invlists/DirectMap.cpp +96 -112
  166. data/vendor/faiss/faiss/invlists/DirectMap.h +29 -33
  167. data/vendor/faiss/faiss/invlists/InvertedLists.cpp +307 -364
  168. data/vendor/faiss/faiss/invlists/InvertedLists.h +151 -151
  169. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +29 -34
  170. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +17 -18
  171. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +257 -293
  172. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +50 -45
  173. data/vendor/faiss/faiss/python/python_callbacks.cpp +23 -26
  174. data/vendor/faiss/faiss/python/python_callbacks.h +9 -16
  175. data/vendor/faiss/faiss/utils/AlignedTable.h +79 -44
  176. data/vendor/faiss/faiss/utils/Heap.cpp +40 -48
  177. data/vendor/faiss/faiss/utils/Heap.h +186 -209
  178. data/vendor/faiss/faiss/utils/WorkerThread.cpp +67 -76
  179. data/vendor/faiss/faiss/utils/WorkerThread.h +32 -33
  180. data/vendor/faiss/faiss/utils/distances.cpp +301 -310
  181. data/vendor/faiss/faiss/utils/distances.h +133 -118
  182. data/vendor/faiss/faiss/utils/distances_simd.cpp +456 -516
  183. data/vendor/faiss/faiss/utils/extra_distances-inl.h +117 -0
  184. data/vendor/faiss/faiss/utils/extra_distances.cpp +113 -232
  185. data/vendor/faiss/faiss/utils/extra_distances.h +30 -29
  186. data/vendor/faiss/faiss/utils/hamming-inl.h +260 -209
  187. data/vendor/faiss/faiss/utils/hamming.cpp +375 -469
  188. data/vendor/faiss/faiss/utils/hamming.h +62 -85
  189. data/vendor/faiss/faiss/utils/ordered_key_value.h +16 -18
  190. data/vendor/faiss/faiss/utils/partitioning.cpp +393 -318
  191. data/vendor/faiss/faiss/utils/partitioning.h +26 -21
  192. data/vendor/faiss/faiss/utils/quantize_lut.cpp +78 -66
  193. data/vendor/faiss/faiss/utils/quantize_lut.h +22 -20
  194. data/vendor/faiss/faiss/utils/random.cpp +39 -63
  195. data/vendor/faiss/faiss/utils/random.h +13 -16
  196. data/vendor/faiss/faiss/utils/simdlib.h +4 -2
  197. data/vendor/faiss/faiss/utils/simdlib_avx2.h +88 -85
  198. data/vendor/faiss/faiss/utils/simdlib_emulated.h +226 -165
  199. data/vendor/faiss/faiss/utils/simdlib_neon.h +832 -0
  200. data/vendor/faiss/faiss/utils/utils.cpp +304 -287
  201. data/vendor/faiss/faiss/utils/utils.h +53 -48
  202. metadata +20 -2
@@ -15,9 +15,8 @@
15
15
  * the interface.
16
16
  */
17
17
 
18
- #include <vector>
19
18
  #include <faiss/Index.h>
20
-
19
+ #include <vector>
21
20
 
22
21
  namespace faiss {
23
22
 
@@ -31,10 +30,10 @@ namespace faiss {
31
30
  struct InvertedLists {
32
31
  typedef Index::idx_t idx_t;
33
32
 
34
- size_t nlist; ///< number of possible key values
35
- size_t code_size; ///< code size per vector in bytes
33
+ size_t nlist; ///< number of possible key values
34
+ size_t code_size; ///< code size per vector in bytes
36
35
 
37
- InvertedLists (size_t nlist, size_t code_size);
36
+ InvertedLists(size_t nlist, size_t code_size);
38
37
 
39
38
  /// used for BlockInvertedLists, where the codes are packed into groups
40
39
  /// and the individual code size is meaningless
@@ -51,70 +50,77 @@ struct InvertedLists {
51
50
  *
52
51
  * @return codes size list_size * code_size
53
52
  */
54
- virtual const uint8_t * get_codes (size_t list_no) const = 0;
53
+ virtual const uint8_t* get_codes(size_t list_no) const = 0;
55
54
 
56
55
  /** get the ids for an inverted list
57
56
  * must be released by release_ids
58
57
  *
59
58
  * @return ids size list_size
60
59
  */
61
- virtual const idx_t * get_ids (size_t list_no) const = 0;
60
+ virtual const idx_t* get_ids(size_t list_no) const = 0;
62
61
 
63
62
  /// release codes returned by get_codes (default implementation is nop
64
- virtual void release_codes (size_t list_no, const uint8_t *codes) const;
63
+ virtual void release_codes(size_t list_no, const uint8_t* codes) const;
65
64
 
66
65
  /// release ids returned by get_ids
67
- virtual void release_ids (size_t list_no, const idx_t *ids) const;
66
+ virtual void release_ids(size_t list_no, const idx_t* ids) const;
68
67
 
69
68
  /// @return a single id in an inverted list
70
- virtual idx_t get_single_id (size_t list_no, size_t offset) const;
69
+ virtual idx_t get_single_id(size_t list_no, size_t offset) const;
71
70
 
72
71
  /// @return a single code in an inverted list
73
72
  /// (should be deallocated with release_codes)
74
- virtual const uint8_t * get_single_code (
75
- size_t list_no, size_t offset) const;
73
+ virtual const uint8_t* get_single_code(size_t list_no, size_t offset) const;
76
74
 
77
75
  /// prepare the following lists (default does nothing)
78
76
  /// a list can be -1 hence the signed long
79
- virtual void prefetch_lists (const idx_t *list_nos, int nlist) const;
77
+ virtual void prefetch_lists(const idx_t* list_nos, int nlist) const;
80
78
 
81
79
  /*************************
82
80
  * writing functions */
83
81
 
84
82
  /// add one entry to an inverted list
85
- virtual size_t add_entry (size_t list_no, idx_t theid,
86
- const uint8_t *code);
83
+ virtual size_t add_entry(size_t list_no, idx_t theid, const uint8_t* code);
87
84
 
88
- virtual size_t add_entries (
89
- size_t list_no, size_t n_entry,
90
- const idx_t* ids, const uint8_t *code) = 0;
85
+ virtual size_t add_entries(
86
+ size_t list_no,
87
+ size_t n_entry,
88
+ const idx_t* ids,
89
+ const uint8_t* code) = 0;
91
90
 
92
- virtual void update_entry (size_t list_no, size_t offset,
93
- idx_t id, const uint8_t *code);
91
+ virtual void update_entry(
92
+ size_t list_no,
93
+ size_t offset,
94
+ idx_t id,
95
+ const uint8_t* code);
94
96
 
95
- virtual void update_entries (size_t list_no, size_t offset, size_t n_entry,
96
- const idx_t *ids, const uint8_t *code) = 0;
97
+ virtual void update_entries(
98
+ size_t list_no,
99
+ size_t offset,
100
+ size_t n_entry,
101
+ const idx_t* ids,
102
+ const uint8_t* code) = 0;
97
103
 
98
- virtual void resize (size_t list_no, size_t new_size) = 0;
104
+ virtual void resize(size_t list_no, size_t new_size) = 0;
99
105
 
100
- virtual void reset ();
106
+ virtual void reset();
101
107
 
102
108
  /// move all entries from oivf (empty on output)
103
- void merge_from (InvertedLists *oivf, size_t add_id);
109
+ void merge_from(InvertedLists* oivf, size_t add_id);
104
110
 
105
- virtual ~InvertedLists ();
111
+ virtual ~InvertedLists();
106
112
 
107
113
  /*************************
108
114
  * statistics */
109
115
 
110
116
  /// 1= perfectly balanced, >1: imbalanced
111
- double imbalance_factor () const;
117
+ double imbalance_factor() const;
112
118
 
113
119
  /// display some stats about the inverted lists
114
- void print_stats () const;
120
+ void print_stats() const;
115
121
 
116
122
  /// sum up list sizes
117
- size_t compute_ntotal () const;
123
+ size_t compute_ntotal() const;
118
124
 
119
125
  /**************************************
120
126
  * Scoped inverted lists (for automatic deallocation)
@@ -138,71 +144,76 @@ struct InvertedLists {
138
144
  */
139
145
 
140
146
  struct ScopedIds {
141
- const InvertedLists *il;
142
- const idx_t *ids;
147
+ const InvertedLists* il;
148
+ const idx_t* ids;
143
149
  size_t list_no;
144
150
 
145
- ScopedIds (const InvertedLists *il, size_t list_no):
146
- il (il), ids (il->get_ids (list_no)), list_no (list_no)
147
- {}
151
+ ScopedIds(const InvertedLists* il, size_t list_no)
152
+ : il(il), ids(il->get_ids(list_no)), list_no(list_no) {}
148
153
 
149
- const idx_t *get() {return ids; }
154
+ const idx_t* get() {
155
+ return ids;
156
+ }
150
157
 
151
- idx_t operator [] (size_t i) const {
158
+ idx_t operator[](size_t i) const {
152
159
  return ids[i];
153
160
  }
154
161
 
155
- ~ScopedIds () {
156
- il->release_ids (list_no, ids);
162
+ ~ScopedIds() {
163
+ il->release_ids(list_no, ids);
157
164
  }
158
165
  };
159
166
 
160
167
  struct ScopedCodes {
161
- const InvertedLists *il;
162
- const uint8_t *codes;
168
+ const InvertedLists* il;
169
+ const uint8_t* codes;
163
170
  size_t list_no;
164
171
 
165
- ScopedCodes (const InvertedLists *il, size_t list_no):
166
- il (il), codes (il->get_codes (list_no)), list_no (list_no)
167
- {}
172
+ ScopedCodes(const InvertedLists* il, size_t list_no)
173
+ : il(il), codes(il->get_codes(list_no)), list_no(list_no) {}
168
174
 
169
- ScopedCodes (const InvertedLists *il, size_t list_no, size_t offset):
170
- il (il), codes (il->get_single_code (list_no, offset)),
171
- list_no (list_no)
172
- {}
175
+ ScopedCodes(const InvertedLists* il, size_t list_no, size_t offset)
176
+ : il(il),
177
+ codes(il->get_single_code(list_no, offset)),
178
+ list_no(list_no) {}
173
179
 
174
- const uint8_t *get() {return codes; }
180
+ const uint8_t* get() {
181
+ return codes;
182
+ }
175
183
 
176
- ~ScopedCodes () {
177
- il->release_codes (list_no, codes);
184
+ ~ScopedCodes() {
185
+ il->release_codes(list_no, codes);
178
186
  }
179
187
  };
180
-
181
-
182
188
  };
183
189
 
184
-
185
190
  /// simple (default) implementation as an array of inverted lists
186
- struct ArrayInvertedLists: InvertedLists {
187
- std::vector < std::vector<uint8_t> > codes; // binary codes, size nlist
188
- std::vector < std::vector<idx_t> > ids; ///< Inverted lists for indexes
191
+ struct ArrayInvertedLists : InvertedLists {
192
+ std::vector<std::vector<uint8_t>> codes; // binary codes, size nlist
193
+ std::vector<std::vector<idx_t>> ids; ///< Inverted lists for indexes
189
194
 
190
- ArrayInvertedLists (size_t nlist, size_t code_size);
195
+ ArrayInvertedLists(size_t nlist, size_t code_size);
191
196
 
192
197
  size_t list_size(size_t list_no) const override;
193
- const uint8_t * get_codes (size_t list_no) const override;
194
- const idx_t * get_ids (size_t list_no) const override;
198
+ const uint8_t* get_codes(size_t list_no) const override;
199
+ const idx_t* get_ids(size_t list_no) const override;
195
200
 
196
- size_t add_entries (
197
- size_t list_no, size_t n_entry,
198
- const idx_t* ids, const uint8_t *code) override;
201
+ size_t add_entries(
202
+ size_t list_no,
203
+ size_t n_entry,
204
+ const idx_t* ids,
205
+ const uint8_t* code) override;
199
206
 
200
- void update_entries (size_t list_no, size_t offset, size_t n_entry,
201
- const idx_t *ids, const uint8_t *code) override;
207
+ void update_entries(
208
+ size_t list_no,
209
+ size_t offset,
210
+ size_t n_entry,
211
+ const idx_t* ids,
212
+ const uint8_t* code) override;
202
213
 
203
- void resize (size_t list_no, size_t new_size) override;
214
+ void resize(size_t list_no, size_t new_size) override;
204
215
 
205
- ~ArrayInvertedLists () override;
216
+ ~ArrayInvertedLists() override;
206
217
  };
207
218
 
208
219
  /*****************************************************************
@@ -213,154 +224,143 @@ struct ArrayInvertedLists: InvertedLists {
213
224
  *****************************************************************/
214
225
 
215
226
  /// invlists that fail for all write functions
216
- struct ReadOnlyInvertedLists: InvertedLists {
217
-
218
- ReadOnlyInvertedLists (size_t nlist, size_t code_size):
219
- InvertedLists (nlist, code_size) {}
220
-
221
- size_t add_entries (
222
- size_t list_no, size_t n_entry,
223
- const idx_t* ids, const uint8_t *code) override;
224
-
225
- void update_entries (size_t list_no, size_t offset, size_t n_entry,
226
- const idx_t *ids, const uint8_t *code) override;
227
-
228
- void resize (size_t list_no, size_t new_size) override;
229
-
227
+ struct ReadOnlyInvertedLists : InvertedLists {
228
+ ReadOnlyInvertedLists(size_t nlist, size_t code_size)
229
+ : InvertedLists(nlist, code_size) {}
230
+
231
+ size_t add_entries(
232
+ size_t list_no,
233
+ size_t n_entry,
234
+ const idx_t* ids,
235
+ const uint8_t* code) override;
236
+
237
+ void update_entries(
238
+ size_t list_no,
239
+ size_t offset,
240
+ size_t n_entry,
241
+ const idx_t* ids,
242
+ const uint8_t* code) override;
243
+
244
+ void resize(size_t list_no, size_t new_size) override;
230
245
  };
231
246
 
232
-
233
247
  /// Horizontal stack of inverted lists
234
- struct HStackInvertedLists: ReadOnlyInvertedLists {
235
-
236
- std::vector<const InvertedLists *>ils;
248
+ struct HStackInvertedLists : ReadOnlyInvertedLists {
249
+ std::vector<const InvertedLists*> ils;
237
250
 
238
251
  /// build InvertedLists by concatenating nil of them
239
- HStackInvertedLists (int nil, const InvertedLists **ils);
252
+ HStackInvertedLists(int nil, const InvertedLists** ils);
240
253
 
241
254
  size_t list_size(size_t list_no) const override;
242
- const uint8_t * get_codes (size_t list_no) const override;
243
- const idx_t * get_ids (size_t list_no) const override;
244
-
245
- void prefetch_lists (const idx_t *list_nos, int nlist) const override;
255
+ const uint8_t* get_codes(size_t list_no) const override;
256
+ const idx_t* get_ids(size_t list_no) const override;
246
257
 
247
- void release_codes (size_t list_no, const uint8_t *codes) const override;
248
- void release_ids (size_t list_no, const idx_t *ids) const override;
258
+ void prefetch_lists(const idx_t* list_nos, int nlist) const override;
249
259
 
250
- idx_t get_single_id (size_t list_no, size_t offset) const override;
260
+ void release_codes(size_t list_no, const uint8_t* codes) const override;
261
+ void release_ids(size_t list_no, const idx_t* ids) const override;
251
262
 
252
- const uint8_t * get_single_code (
253
- size_t list_no, size_t offset) const override;
263
+ idx_t get_single_id(size_t list_no, size_t offset) const override;
254
264
 
265
+ const uint8_t* get_single_code(size_t list_no, size_t offset)
266
+ const override;
255
267
  };
256
268
 
257
269
  using ConcatenatedInvertedLists = HStackInvertedLists;
258
270
 
259
-
260
271
  /// vertical slice of indexes in another InvertedLists
261
- struct SliceInvertedLists: ReadOnlyInvertedLists {
262
- const InvertedLists *il;
272
+ struct SliceInvertedLists : ReadOnlyInvertedLists {
273
+ const InvertedLists* il;
263
274
  idx_t i0, i1;
264
275
 
265
- SliceInvertedLists(const InvertedLists *il, idx_t i0, idx_t i1);
276
+ SliceInvertedLists(const InvertedLists* il, idx_t i0, idx_t i1);
266
277
 
267
278
  size_t list_size(size_t list_no) const override;
268
- const uint8_t * get_codes (size_t list_no) const override;
269
- const idx_t * get_ids (size_t list_no) const override;
279
+ const uint8_t* get_codes(size_t list_no) const override;
280
+ const idx_t* get_ids(size_t list_no) const override;
270
281
 
271
- void release_codes (size_t list_no, const uint8_t *codes) const override;
272
- void release_ids (size_t list_no, const idx_t *ids) const override;
282
+ void release_codes(size_t list_no, const uint8_t* codes) const override;
283
+ void release_ids(size_t list_no, const idx_t* ids) const override;
273
284
 
274
- idx_t get_single_id (size_t list_no, size_t offset) const override;
285
+ idx_t get_single_id(size_t list_no, size_t offset) const override;
275
286
 
276
- const uint8_t * get_single_code (
277
- size_t list_no, size_t offset) const override;
287
+ const uint8_t* get_single_code(size_t list_no, size_t offset)
288
+ const override;
278
289
 
279
- void prefetch_lists (const idx_t *list_nos, int nlist) const override;
290
+ void prefetch_lists(const idx_t* list_nos, int nlist) const override;
280
291
  };
281
292
 
282
-
283
- struct VStackInvertedLists: ReadOnlyInvertedLists {
284
- std::vector<const InvertedLists *>ils;
293
+ struct VStackInvertedLists : ReadOnlyInvertedLists {
294
+ std::vector<const InvertedLists*> ils;
285
295
  std::vector<idx_t> cumsz;
286
296
 
287
297
  /// build InvertedLists by concatenating nil of them
288
- VStackInvertedLists (int nil, const InvertedLists **ils);
298
+ VStackInvertedLists(int nil, const InvertedLists** ils);
289
299
 
290
300
  size_t list_size(size_t list_no) const override;
291
- const uint8_t * get_codes (size_t list_no) const override;
292
- const idx_t * get_ids (size_t list_no) const override;
301
+ const uint8_t* get_codes(size_t list_no) const override;
302
+ const idx_t* get_ids(size_t list_no) const override;
293
303
 
294
- void release_codes (size_t list_no, const uint8_t *codes) const override;
295
- void release_ids (size_t list_no, const idx_t *ids) const override;
304
+ void release_codes(size_t list_no, const uint8_t* codes) const override;
305
+ void release_ids(size_t list_no, const idx_t* ids) const override;
296
306
 
297
- idx_t get_single_id (size_t list_no, size_t offset) const override;
307
+ idx_t get_single_id(size_t list_no, size_t offset) const override;
298
308
 
299
- const uint8_t * get_single_code (
300
- size_t list_no, size_t offset) const override;
301
-
302
- void prefetch_lists (const idx_t *list_nos, int nlist) const override;
309
+ const uint8_t* get_single_code(size_t list_no, size_t offset)
310
+ const override;
303
311
 
312
+ void prefetch_lists(const idx_t* list_nos, int nlist) const override;
304
313
  };
305
314
 
306
-
307
315
  /** use the first inverted lists if they are non-empty otherwise use the second
308
316
  *
309
317
  * This is useful if il1 has a few inverted lists that are too long,
310
318
  * and that il0 has replacement lists for those, with empty lists for
311
319
  * the others. */
312
- struct MaskedInvertedLists: ReadOnlyInvertedLists {
313
-
314
- const InvertedLists *il0;
315
- const InvertedLists *il1;
320
+ struct MaskedInvertedLists : ReadOnlyInvertedLists {
321
+ const InvertedLists* il0;
322
+ const InvertedLists* il1;
316
323
 
317
- MaskedInvertedLists (const InvertedLists *il0,
318
- const InvertedLists *il1);
324
+ MaskedInvertedLists(const InvertedLists* il0, const InvertedLists* il1);
319
325
 
320
326
  size_t list_size(size_t list_no) const override;
321
- const uint8_t * get_codes (size_t list_no) const override;
322
- const idx_t * get_ids (size_t list_no) const override;
327
+ const uint8_t* get_codes(size_t list_no) const override;
328
+ const idx_t* get_ids(size_t list_no) const override;
323
329
 
324
- void release_codes (size_t list_no, const uint8_t *codes) const override;
325
- void release_ids (size_t list_no, const idx_t *ids) const override;
330
+ void release_codes(size_t list_no, const uint8_t* codes) const override;
331
+ void release_ids(size_t list_no, const idx_t* ids) const override;
326
332
 
327
- idx_t get_single_id (size_t list_no, size_t offset) const override;
333
+ idx_t get_single_id(size_t list_no, size_t offset) const override;
328
334
 
329
- const uint8_t * get_single_code (
330
- size_t list_no, size_t offset) const override;
331
-
332
- void prefetch_lists (const idx_t *list_nos, int nlist) const override;
335
+ const uint8_t* get_single_code(size_t list_no, size_t offset)
336
+ const override;
333
337
 
338
+ void prefetch_lists(const idx_t* list_nos, int nlist) const override;
334
339
  };
335
340
 
336
-
337
341
  /** if the inverted list in il is smaller than maxsize then return it,
338
342
  * otherwise return an empty invlist */
339
- struct StopWordsInvertedLists: ReadOnlyInvertedLists {
340
-
341
- const InvertedLists *il0;
343
+ struct StopWordsInvertedLists : ReadOnlyInvertedLists {
344
+ const InvertedLists* il0;
342
345
  size_t maxsize;
343
346
 
344
- StopWordsInvertedLists (const InvertedLists *il, size_t maxsize);
347
+ StopWordsInvertedLists(const InvertedLists* il, size_t maxsize);
345
348
 
346
349
  size_t list_size(size_t list_no) const override;
347
- const uint8_t * get_codes (size_t list_no) const override;
348
- const idx_t * get_ids (size_t list_no) const override;
350
+ const uint8_t* get_codes(size_t list_no) const override;
351
+ const idx_t* get_ids(size_t list_no) const override;
349
352
 
350
- void release_codes (size_t list_no, const uint8_t *codes) const override;
351
- void release_ids (size_t list_no, const idx_t *ids) const override;
353
+ void release_codes(size_t list_no, const uint8_t* codes) const override;
354
+ void release_ids(size_t list_no, const idx_t* ids) const override;
352
355
 
353
- idx_t get_single_id (size_t list_no, size_t offset) const override;
356
+ idx_t get_single_id(size_t list_no, size_t offset) const override;
354
357
 
355
- const uint8_t * get_single_code (
356
- size_t list_no, size_t offset) const override;
357
-
358
- void prefetch_lists (const idx_t *list_nos, int nlist) const override;
358
+ const uint8_t* get_single_code(size_t list_no, size_t offset)
359
+ const override;
359
360
 
361
+ void prefetch_lists(const idx_t* list_nos, int nlist) const override;
360
362
  };
361
363
 
362
-
363
364
  } // namespace faiss
364
365
 
365
-
366
366
  #endif