faiss 0.5.3 → 0.6.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 (379) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/ext/faiss/ext.cpp +1 -1
  4. data/ext/faiss/extconf.rb +4 -4
  5. data/ext/faiss/index.cpp +63 -45
  6. data/ext/faiss/index_binary.cpp +37 -27
  7. data/ext/faiss/kmeans.cpp +9 -8
  8. data/ext/faiss/pca_matrix.cpp +9 -7
  9. data/ext/faiss/product_quantizer.cpp +13 -11
  10. data/ext/faiss/utils.cpp +4 -2
  11. data/ext/faiss/utils.h +4 -0
  12. data/lib/faiss/version.rb +1 -1
  13. data/lib/faiss.rb +1 -1
  14. data/vendor/faiss/faiss/AutoTune.cpp +214 -82
  15. data/vendor/faiss/faiss/AutoTune.h +14 -1
  16. data/vendor/faiss/faiss/Clustering.cpp +97 -249
  17. data/vendor/faiss/faiss/Clustering.h +18 -0
  18. data/vendor/faiss/faiss/IVFlib.cpp +67 -44
  19. data/vendor/faiss/faiss/Index.cpp +25 -12
  20. data/vendor/faiss/faiss/Index.h +26 -4
  21. data/vendor/faiss/faiss/Index2Layer.cpp +37 -53
  22. data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +68 -61
  23. data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +36 -34
  24. data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.h +4 -1
  25. data/vendor/faiss/faiss/IndexBinary.cpp +6 -3
  26. data/vendor/faiss/faiss/IndexBinary.h +4 -4
  27. data/vendor/faiss/faiss/IndexBinaryFlat.cpp +1 -1
  28. data/vendor/faiss/faiss/IndexBinaryFlat.h +1 -1
  29. data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +4 -4
  30. data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +92 -95
  31. data/vendor/faiss/faiss/IndexBinaryHNSW.h +9 -3
  32. data/vendor/faiss/faiss/IndexBinaryHash.cpp +45 -236
  33. data/vendor/faiss/faiss/IndexBinaryHash.h +6 -6
  34. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +120 -414
  35. data/vendor/faiss/faiss/IndexFastScan.cpp +105 -129
  36. data/vendor/faiss/faiss/IndexFastScan.h +35 -24
  37. data/vendor/faiss/faiss/IndexFlat.cpp +216 -152
  38. data/vendor/faiss/faiss/IndexFlat.h +32 -14
  39. data/vendor/faiss/faiss/IndexFlatCodes.cpp +88 -41
  40. data/vendor/faiss/faiss/IndexFlatCodes.h +7 -1
  41. data/vendor/faiss/faiss/IndexHNSW.cpp +299 -187
  42. data/vendor/faiss/faiss/IndexHNSW.h +30 -14
  43. data/vendor/faiss/faiss/IndexIDMap.cpp +26 -22
  44. data/vendor/faiss/faiss/IndexIDMap.h +9 -7
  45. data/vendor/faiss/faiss/IndexIVF.cpp +535 -405
  46. data/vendor/faiss/faiss/IndexIVF.h +47 -16
  47. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +77 -74
  48. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +105 -99
  49. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +6 -3
  50. data/vendor/faiss/faiss/IndexIVFFastScan.cpp +379 -249
  51. data/vendor/faiss/faiss/IndexIVFFastScan.h +65 -60
  52. data/vendor/faiss/faiss/IndexIVFFlat.cpp +41 -124
  53. data/vendor/faiss/faiss/IndexIVFFlat.h +32 -0
  54. data/vendor/faiss/faiss/IndexIVFFlatPanorama.cpp +89 -138
  55. data/vendor/faiss/faiss/IndexIVFFlatPanorama.h +3 -1
  56. data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp +18 -15
  57. data/vendor/faiss/faiss/IndexIVFPQ.cpp +77 -907
  58. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +184 -122
  59. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +3 -0
  60. data/vendor/faiss/faiss/IndexIVFPQR.cpp +23 -18
  61. data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +59 -60
  62. data/vendor/faiss/faiss/IndexIVFRaBitQ.h +4 -3
  63. data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp +564 -416
  64. data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.h +269 -111
  65. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +41 -127
  66. data/vendor/faiss/faiss/IndexIVFSpectralHash.h +1 -1
  67. data/vendor/faiss/faiss/IndexLSH.cpp +44 -25
  68. data/vendor/faiss/faiss/IndexLattice.cpp +41 -36
  69. data/vendor/faiss/faiss/IndexNNDescent.cpp +37 -21
  70. data/vendor/faiss/faiss/IndexNNDescent.h +2 -2
  71. data/vendor/faiss/faiss/IndexNSG.cpp +40 -23
  72. data/vendor/faiss/faiss/IndexNSG.h +0 -2
  73. data/vendor/faiss/faiss/IndexNeuralNetCodec.cpp +32 -12
  74. data/vendor/faiss/faiss/IndexPQ.cpp +129 -213
  75. data/vendor/faiss/faiss/IndexPQ.h +3 -2
  76. data/vendor/faiss/faiss/IndexPQFastScan.cpp +20 -14
  77. data/vendor/faiss/faiss/IndexPQFastScan.h +3 -0
  78. data/vendor/faiss/faiss/IndexPreTransform.cpp +25 -18
  79. data/vendor/faiss/faiss/IndexPreTransform.h +1 -1
  80. data/vendor/faiss/faiss/IndexRaBitQ.cpp +31 -43
  81. data/vendor/faiss/faiss/IndexRaBitQ.h +4 -3
  82. data/vendor/faiss/faiss/IndexRaBitQFastScan.cpp +135 -317
  83. data/vendor/faiss/faiss/IndexRaBitQFastScan.h +192 -34
  84. data/vendor/faiss/faiss/IndexRefine.cpp +30 -55
  85. data/vendor/faiss/faiss/IndexRefine.h +4 -4
  86. data/vendor/faiss/faiss/IndexReplicas.cpp +6 -6
  87. data/vendor/faiss/faiss/IndexRowwiseMinMax.cpp +15 -14
  88. data/vendor/faiss/faiss/IndexRowwiseMinMax.h +1 -1
  89. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +82 -14
  90. data/vendor/faiss/faiss/IndexShards.cpp +13 -13
  91. data/vendor/faiss/faiss/IndexShardsIVF.cpp +21 -15
  92. data/vendor/faiss/faiss/MatrixStats.cpp +5 -4
  93. data/vendor/faiss/faiss/MetaIndexes.cpp +19 -17
  94. data/vendor/faiss/faiss/MetaIndexes.h +1 -1
  95. data/vendor/faiss/faiss/MetricType.h +29 -6
  96. data/vendor/faiss/faiss/SuperKMeans.cpp +656 -0
  97. data/vendor/faiss/faiss/SuperKMeans.h +97 -0
  98. data/vendor/faiss/faiss/VectorTransform.cpp +349 -141
  99. data/vendor/faiss/faiss/VectorTransform.h +39 -16
  100. data/vendor/faiss/faiss/build.cpp +23 -0
  101. data/vendor/faiss/faiss/build.h +15 -0
  102. data/vendor/faiss/faiss/clone_index.cpp +55 -51
  103. data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h +47 -47
  104. data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +11 -0
  105. data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h +38 -38
  106. data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h +11 -0
  107. data/vendor/faiss/faiss/{cppcontrib/factory_tools.cpp → factory_tools.cpp} +6 -1
  108. data/vendor/faiss/faiss/gpu/GpuCloner.cpp +1 -1
  109. data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +6 -5
  110. data/vendor/faiss/faiss/gpu/GpuResources.h +1 -1
  111. data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +9 -9
  112. data/vendor/faiss/faiss/gpu/StandardGpuResources.h +4 -3
  113. data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +46 -0
  114. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +56 -0
  115. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +78 -1
  116. data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +72 -0
  117. data/vendor/faiss/faiss/gpu/test/TestUtils.h +23 -0
  118. data/vendor/faiss/faiss/gpu/utils/CuvsFilterConvert.h +1 -1
  119. data/vendor/faiss/faiss/gpu/utils/CuvsUtils.h +21 -10
  120. data/vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h +22 -0
  121. data/vendor/faiss/faiss/gpu_metal/MetalCloner.h +35 -0
  122. data/vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h +40 -0
  123. data/vendor/faiss/faiss/gpu_metal/MetalIndex.h +51 -0
  124. data/vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h +65 -0
  125. data/vendor/faiss/faiss/gpu_metal/MetalKernels.h +66 -0
  126. data/vendor/faiss/faiss/gpu_metal/MetalResources.h +79 -0
  127. data/vendor/faiss/faiss/gpu_metal/StandardMetalResources.h +35 -0
  128. data/vendor/faiss/faiss/impl/AdSampling.cpp +103 -0
  129. data/vendor/faiss/faiss/impl/AdSampling.h +35 -0
  130. data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +64 -34
  131. data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +1 -0
  132. data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +10 -9
  133. data/vendor/faiss/faiss/impl/AuxIndexStructures.h +3 -28
  134. data/vendor/faiss/faiss/impl/ClusteringHelpers.cpp +244 -0
  135. data/vendor/faiss/faiss/impl/ClusteringHelpers.h +94 -0
  136. data/vendor/faiss/faiss/impl/ClusteringInitialization.cpp +367 -0
  137. data/vendor/faiss/faiss/impl/ClusteringInitialization.h +107 -0
  138. data/vendor/faiss/faiss/impl/CodePacker.cpp +7 -3
  139. data/vendor/faiss/faiss/impl/CodePacker.h +11 -3
  140. data/vendor/faiss/faiss/impl/CodePackerRaBitQ.cpp +83 -0
  141. data/vendor/faiss/faiss/impl/CodePackerRaBitQ.h +47 -0
  142. data/vendor/faiss/faiss/impl/DistanceComputer.h +8 -8
  143. data/vendor/faiss/faiss/impl/FaissAssert.h +64 -3
  144. data/vendor/faiss/faiss/impl/FaissException.h +50 -3
  145. data/vendor/faiss/faiss/impl/HNSW.cpp +117 -351
  146. data/vendor/faiss/faiss/impl/HNSW.h +21 -40
  147. data/vendor/faiss/faiss/impl/IDSelector.cpp +15 -11
  148. data/vendor/faiss/faiss/impl/IDSelector.h +8 -8
  149. data/vendor/faiss/faiss/impl/InvertedListScannerStats.h +26 -0
  150. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +114 -102
  151. data/vendor/faiss/faiss/impl/NNDescent.cpp +63 -26
  152. data/vendor/faiss/faiss/impl/NNDescent.h +6 -2
  153. data/vendor/faiss/faiss/impl/NSG.cpp +44 -26
  154. data/vendor/faiss/faiss/impl/NSG.h +20 -10
  155. data/vendor/faiss/faiss/impl/Panorama.cpp +76 -52
  156. data/vendor/faiss/faiss/impl/Panorama.h +265 -78
  157. data/vendor/faiss/faiss/impl/PdxLayout.cpp +93 -0
  158. data/vendor/faiss/faiss/impl/PdxLayout.h +41 -0
  159. data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +62 -37
  160. data/vendor/faiss/faiss/impl/PolysemousTraining.h +3 -3
  161. data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +35 -35
  162. data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +21 -16
  163. data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +99 -80
  164. data/vendor/faiss/faiss/impl/Quantizer.h +2 -2
  165. data/vendor/faiss/faiss/impl/RaBitQUtils.cpp +135 -37
  166. data/vendor/faiss/faiss/impl/RaBitQUtils.h +148 -21
  167. data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +298 -301
  168. data/vendor/faiss/faiss/impl/RaBitQuantizer.h +3 -10
  169. data/vendor/faiss/faiss/impl/RaBitQuantizerMultiBit.cpp +15 -41
  170. data/vendor/faiss/faiss/impl/RaBitQuantizerMultiBit.h +0 -4
  171. data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +40 -32
  172. data/vendor/faiss/faiss/impl/ResidualQuantizer.h +1 -1
  173. data/vendor/faiss/faiss/impl/ResultHandler.h +218 -113
  174. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +119 -2362
  175. data/vendor/faiss/faiss/impl/ScalarQuantizer.h +27 -3
  176. data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +14 -11
  177. data/vendor/faiss/faiss/impl/VisitedTable.cpp +42 -0
  178. data/vendor/faiss/faiss/impl/VisitedTable.h +76 -0
  179. data/vendor/faiss/faiss/impl/approx_topk/approx_topk.h +276 -0
  180. data/vendor/faiss/faiss/impl/approx_topk/avx2.cpp +68 -0
  181. data/vendor/faiss/faiss/{utils → impl}/approx_topk/generic.h +15 -8
  182. data/vendor/faiss/faiss/impl/approx_topk/neon.cpp +68 -0
  183. data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h +169 -0
  184. data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h +117 -0
  185. data/vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h +146 -0
  186. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h +73 -0
  187. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h +270 -0
  188. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h +460 -0
  189. data/vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h +159 -0
  190. data/vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h +92 -0
  191. data/vendor/faiss/faiss/impl/binary_hamming/avx2.cpp +26 -0
  192. data/vendor/faiss/faiss/impl/binary_hamming/avx512.cpp +26 -0
  193. data/vendor/faiss/faiss/impl/binary_hamming/dispatch.h +143 -0
  194. data/vendor/faiss/faiss/impl/binary_hamming/neon.cpp +26 -0
  195. data/vendor/faiss/faiss/impl/binary_hamming/rvv.cpp +26 -0
  196. data/vendor/faiss/faiss/impl/expanded_scanners.h +163 -0
  197. data/vendor/faiss/faiss/impl/{FastScanDistancePostProcessing.h → fast_scan/FastScanDistancePostProcessing.h} +13 -6
  198. data/vendor/faiss/faiss/impl/{LookupTableScaler.h → fast_scan/LookupTableScaler.h} +16 -5
  199. data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h +237 -0
  200. data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h +185 -0
  201. data/vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h +229 -0
  202. data/vendor/faiss/faiss/impl/fast_scan/dispatching.h +268 -0
  203. data/vendor/faiss/faiss/impl/{pq4_fast_scan.cpp → fast_scan/fast_scan.cpp} +176 -4
  204. data/vendor/faiss/faiss/impl/fast_scan/fast_scan.h +341 -0
  205. data/vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp +36 -0
  206. data/vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp +40 -0
  207. data/vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp +120 -0
  208. data/vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp +104 -0
  209. data/vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h +213 -0
  210. data/vendor/faiss/faiss/impl/{pq4_fast_scan_search_qbs.cpp → fast_scan/kernels_simd512.h} +26 -348
  211. data/vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h +90 -0
  212. data/vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h +108 -0
  213. data/vendor/faiss/faiss/impl/{simd_result_handlers.h → fast_scan/simd_result_handlers.h} +290 -142
  214. data/vendor/faiss/faiss/impl/hnsw/LockVector.cpp +54 -0
  215. data/vendor/faiss/faiss/impl/hnsw/LockVector.h +64 -0
  216. data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp +91 -0
  217. data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h +64 -0
  218. data/vendor/faiss/faiss/impl/hnsw/avx2.cpp +104 -0
  219. data/vendor/faiss/faiss/impl/hnsw/avx512.cpp +111 -0
  220. data/vendor/faiss/faiss/impl/index_read.cpp +1950 -505
  221. data/vendor/faiss/faiss/impl/index_read_utils.h +1 -2
  222. data/vendor/faiss/faiss/impl/index_write.cpp +112 -21
  223. data/vendor/faiss/faiss/impl/io.cpp +6 -6
  224. data/vendor/faiss/faiss/impl/io_macros.h +33 -16
  225. data/vendor/faiss/faiss/impl/kmeans1d.cpp +10 -10
  226. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +81 -40
  227. data/vendor/faiss/faiss/impl/lattice_Zn.h +6 -6
  228. data/vendor/faiss/faiss/impl/mapped_io.cpp +15 -8
  229. data/vendor/faiss/faiss/impl/platform_macros.h +11 -4
  230. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h +549 -0
  231. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp +245 -0
  232. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h +105 -0
  233. data/vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h +106 -0
  234. data/vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp +21 -0
  235. data/vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp +21 -0
  236. data/vendor/faiss/faiss/impl/pq_code_distance/neon.cpp +21 -0
  237. data/vendor/faiss/faiss/impl/{code_distance/code_distance-avx2.h → pq_code_distance/pq_code_distance-avx2.h} +43 -220
  238. data/vendor/faiss/faiss/impl/{code_distance/code_distance-avx512.h → pq_code_distance/pq_code_distance-avx512.h} +25 -112
  239. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp +59 -0
  240. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h +96 -0
  241. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h +256 -0
  242. data/vendor/faiss/faiss/impl/{code_distance/code_distance-sve.h → pq_code_distance/pq_code_distance-sve.cpp} +57 -146
  243. data/vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp +68 -0
  244. data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +320 -483
  245. data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h +1 -1
  246. data/vendor/faiss/faiss/impl/scalar_quantizer/codecs.h +121 -0
  247. data/vendor/faiss/faiss/impl/scalar_quantizer/distance_computers.h +137 -0
  248. data/vendor/faiss/faiss/impl/scalar_quantizer/quantizers.h +371 -0
  249. data/vendor/faiss/faiss/impl/scalar_quantizer/scanners.h +190 -0
  250. data/vendor/faiss/faiss/impl/scalar_quantizer/similarities.h +94 -0
  251. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp +603 -0
  252. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp +597 -0
  253. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h +388 -0
  254. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp +630 -0
  255. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp +311 -0
  256. data/vendor/faiss/faiss/impl/scalar_quantizer/training.cpp +387 -0
  257. data/vendor/faiss/faiss/impl/scalar_quantizer/training.h +54 -0
  258. data/vendor/faiss/faiss/impl/simd_dispatch.h +173 -0
  259. data/vendor/faiss/faiss/impl/simdlib/simdlib.h +57 -0
  260. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_avx2.h +274 -171
  261. data/vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h +414 -0
  262. data/vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h +44 -0
  263. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_emulated.h +231 -166
  264. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_neon.h +275 -217
  265. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_ppc64.h +201 -160
  266. data/vendor/faiss/faiss/impl/svs_io.cpp +12 -3
  267. data/vendor/faiss/faiss/impl/svs_io.h +8 -2
  268. data/vendor/faiss/faiss/index_factory.cpp +115 -28
  269. data/vendor/faiss/faiss/index_io.h +53 -3
  270. data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +73 -20
  271. data/vendor/faiss/faiss/invlists/DirectMap.cpp +24 -14
  272. data/vendor/faiss/faiss/invlists/DirectMap.h +4 -3
  273. data/vendor/faiss/faiss/invlists/InvertedLists.cpp +157 -73
  274. data/vendor/faiss/faiss/invlists/InvertedLists.h +86 -23
  275. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +4 -4
  276. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +14 -14
  277. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +1 -1
  278. data/vendor/faiss/faiss/svs/IndexSVSFaissUtils.h +9 -19
  279. data/vendor/faiss/faiss/svs/IndexSVSFlat.cpp +2 -2
  280. data/vendor/faiss/faiss/svs/IndexSVSFlat.h +2 -0
  281. data/vendor/faiss/faiss/svs/IndexSVSIVF.cpp +350 -0
  282. data/vendor/faiss/faiss/svs/IndexSVSIVF.h +128 -0
  283. data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp +40 -0
  284. data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h +43 -0
  285. data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp +225 -0
  286. data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h +71 -0
  287. data/vendor/faiss/faiss/svs/IndexSVSVamana.cpp +25 -1
  288. data/vendor/faiss/faiss/svs/IndexSVSVamana.h +19 -2
  289. data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.h +1 -1
  290. data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.cpp +19 -2
  291. data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.h +14 -0
  292. data/vendor/faiss/faiss/utils/Heap.cpp +56 -10
  293. data/vendor/faiss/faiss/utils/Heap.h +21 -0
  294. data/vendor/faiss/faiss/utils/NeuralNet.cpp +54 -40
  295. data/vendor/faiss/faiss/utils/NeuralNet.h +1 -1
  296. data/vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h +10 -4
  297. data/vendor/faiss/faiss/utils/distances.cpp +507 -559
  298. data/vendor/faiss/faiss/utils/distances.h +118 -1
  299. data/vendor/faiss/faiss/utils/distances_dispatch.h +250 -0
  300. data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +8 -7
  301. data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +33 -14
  302. data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +12 -1
  303. data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +16 -293
  304. data/vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp +57 -0
  305. data/vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h +290 -0
  306. data/vendor/faiss/faiss/utils/distances_simd.cpp +72 -3681
  307. data/vendor/faiss/faiss/utils/extra_distances.cpp +60 -102
  308. data/vendor/faiss/faiss/utils/extra_distances.h +79 -7
  309. data/vendor/faiss/faiss/utils/hamming-inl.h +13 -11
  310. data/vendor/faiss/faiss/utils/hamming.cpp +66 -517
  311. data/vendor/faiss/faiss/utils/hamming.h +92 -2
  312. data/vendor/faiss/faiss/utils/hamming_distance/common.h +287 -10
  313. data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp +15 -0
  314. data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp +15 -0
  315. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h +142 -0
  316. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h +234 -0
  317. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h +368 -0
  318. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h +322 -0
  319. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h +39 -0
  320. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h +146 -0
  321. data/vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h +481 -0
  322. data/vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp +15 -0
  323. data/vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp +15 -0
  324. data/vendor/faiss/faiss/utils/partitioning.cpp +66 -987
  325. data/vendor/faiss/faiss/utils/partitioning.h +31 -0
  326. data/vendor/faiss/faiss/utils/popcount.h +29 -0
  327. data/vendor/faiss/faiss/utils/pq_code_distance.h +251 -0
  328. data/vendor/faiss/faiss/utils/prefetch.h +2 -2
  329. data/vendor/faiss/faiss/utils/quantize_lut.cpp +30 -30
  330. data/vendor/faiss/faiss/utils/quantize_lut.h +1 -1
  331. data/vendor/faiss/faiss/utils/rabitq_simd.h +124 -343
  332. data/vendor/faiss/faiss/utils/random.cpp +6 -6
  333. data/vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h +51 -0
  334. data/vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp +154 -0
  335. data/vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp +777 -0
  336. data/vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h +306 -0
  337. data/vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp +1431 -0
  338. data/vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp +1095 -0
  339. data/vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp +189 -0
  340. data/vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h +195 -0
  341. data/vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h +392 -0
  342. data/vendor/faiss/faiss/utils/{distances_fused/simdlib_based.h → simd_impl/exhaustive_L2sqr_blas_cmax.h} +5 -10
  343. data/vendor/faiss/faiss/utils/simd_impl/hamming_impl.h +481 -0
  344. data/vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp +14 -0
  345. data/vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp +14 -0
  346. data/vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h +1085 -0
  347. data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp +355 -0
  348. data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp +477 -0
  349. data/vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp +55 -0
  350. data/vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp +55 -0
  351. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h +32 -0
  352. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h +43 -0
  353. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp +57 -0
  354. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp +45 -0
  355. data/vendor/faiss/faiss/utils/simd_levels.cpp +334 -0
  356. data/vendor/faiss/faiss/utils/simd_levels.h +183 -0
  357. data/vendor/faiss/faiss/utils/sorting.cpp +48 -36
  358. data/vendor/faiss/faiss/utils/utils.cpp +21 -14
  359. data/vendor/faiss/faiss/utils/utils.h +3 -3
  360. metadata +156 -42
  361. data/vendor/faiss/faiss/impl/RaBitQStats.cpp +0 -29
  362. data/vendor/faiss/faiss/impl/RaBitQStats.h +0 -56
  363. data/vendor/faiss/faiss/impl/code_distance/code_distance-generic.h +0 -81
  364. data/vendor/faiss/faiss/impl/code_distance/code_distance.h +0 -186
  365. data/vendor/faiss/faiss/impl/pq4_fast_scan.h +0 -216
  366. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +0 -224
  367. data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +0 -84
  368. data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +0 -196
  369. data/vendor/faiss/faiss/utils/approx_topk/mode.h +0 -34
  370. data/vendor/faiss/faiss/utils/distances_fused/avx512.h +0 -36
  371. data/vendor/faiss/faiss/utils/extra_distances-inl.h +0 -228
  372. data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +0 -462
  373. data/vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h +0 -490
  374. data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +0 -450
  375. data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +0 -87
  376. data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +0 -524
  377. data/vendor/faiss/faiss/utils/simdlib.h +0 -42
  378. data/vendor/faiss/faiss/utils/simdlib_avx512.h +0 -296
  379. /data/vendor/faiss/faiss/{cppcontrib/factory_tools.h → factory_tools.h} +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faiss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '4.8'
18
+ version: 4.11.5
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '4.8'
25
+ version: 4.11.5
26
26
  - !ruby/object:Gem::Dependency
27
- name: numo-narray
27
+ name: numo-narray-alt
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: '0.10'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: '0.10'
40
40
  email: andrew@ankane.org
41
41
  executables: []
42
42
  extensions:
@@ -158,15 +158,17 @@ files:
158
158
  - vendor/faiss/faiss/MetaIndexes.cpp
159
159
  - vendor/faiss/faiss/MetaIndexes.h
160
160
  - vendor/faiss/faiss/MetricType.h
161
+ - vendor/faiss/faiss/SuperKMeans.cpp
162
+ - vendor/faiss/faiss/SuperKMeans.h
161
163
  - vendor/faiss/faiss/VectorTransform.cpp
162
164
  - vendor/faiss/faiss/VectorTransform.h
165
+ - vendor/faiss/faiss/build.cpp
166
+ - vendor/faiss/faiss/build.h
163
167
  - vendor/faiss/faiss/clone_index.cpp
164
168
  - vendor/faiss/faiss/clone_index.h
165
169
  - vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h
166
170
  - vendor/faiss/faiss/cppcontrib/detail/CoarseBitType.h
167
171
  - vendor/faiss/faiss/cppcontrib/detail/UintReader.h
168
- - vendor/faiss/faiss/cppcontrib/factory_tools.cpp
169
- - vendor/faiss/faiss/cppcontrib/factory_tools.h
170
172
  - vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h
171
173
  - vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h
172
174
  - vendor/faiss/faiss/cppcontrib/sa_decode/Level2-neon-inl.h
@@ -175,6 +177,8 @@ files:
175
177
  - vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h
176
178
  - vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h
177
179
  - vendor/faiss/faiss/cppcontrib/sa_decode/PQ-neon-inl.h
180
+ - vendor/faiss/faiss/factory_tools.cpp
181
+ - vendor/faiss/faiss/factory_tools.h
178
182
  - vendor/faiss/faiss/gpu/GpuAutoTune.cpp
179
183
  - vendor/faiss/faiss/gpu/GpuAutoTune.h
180
184
  - vendor/faiss/faiss/gpu/GpuCloner.cpp
@@ -227,24 +231,39 @@ files:
227
231
  - vendor/faiss/faiss/gpu/utils/StaticUtils.h
228
232
  - vendor/faiss/faiss/gpu/utils/Timer.cpp
229
233
  - vendor/faiss/faiss/gpu/utils/Timer.h
234
+ - vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h
235
+ - vendor/faiss/faiss/gpu_metal/MetalCloner.h
236
+ - vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h
237
+ - vendor/faiss/faiss/gpu_metal/MetalIndex.h
238
+ - vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h
239
+ - vendor/faiss/faiss/gpu_metal/MetalKernels.h
240
+ - vendor/faiss/faiss/gpu_metal/MetalResources.h
241
+ - vendor/faiss/faiss/gpu_metal/StandardMetalResources.h
242
+ - vendor/faiss/faiss/impl/AdSampling.cpp
243
+ - vendor/faiss/faiss/impl/AdSampling.h
230
244
  - vendor/faiss/faiss/impl/AdditiveQuantizer.cpp
231
245
  - vendor/faiss/faiss/impl/AdditiveQuantizer.h
232
246
  - vendor/faiss/faiss/impl/AuxIndexStructures.cpp
233
247
  - vendor/faiss/faiss/impl/AuxIndexStructures.h
248
+ - vendor/faiss/faiss/impl/ClusteringHelpers.cpp
249
+ - vendor/faiss/faiss/impl/ClusteringHelpers.h
250
+ - vendor/faiss/faiss/impl/ClusteringInitialization.cpp
251
+ - vendor/faiss/faiss/impl/ClusteringInitialization.h
234
252
  - vendor/faiss/faiss/impl/CodePacker.cpp
235
253
  - vendor/faiss/faiss/impl/CodePacker.h
254
+ - vendor/faiss/faiss/impl/CodePackerRaBitQ.cpp
255
+ - vendor/faiss/faiss/impl/CodePackerRaBitQ.h
236
256
  - vendor/faiss/faiss/impl/DistanceComputer.h
237
257
  - vendor/faiss/faiss/impl/FaissAssert.h
238
258
  - vendor/faiss/faiss/impl/FaissException.cpp
239
259
  - vendor/faiss/faiss/impl/FaissException.h
240
- - vendor/faiss/faiss/impl/FastScanDistancePostProcessing.h
241
260
  - vendor/faiss/faiss/impl/HNSW.cpp
242
261
  - vendor/faiss/faiss/impl/HNSW.h
243
262
  - vendor/faiss/faiss/impl/IDSelector.cpp
244
263
  - vendor/faiss/faiss/impl/IDSelector.h
264
+ - vendor/faiss/faiss/impl/InvertedListScannerStats.h
245
265
  - vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp
246
266
  - vendor/faiss/faiss/impl/LocalSearchQuantizer.h
247
- - vendor/faiss/faiss/impl/LookupTableScaler.h
248
267
  - vendor/faiss/faiss/impl/NNDescent.cpp
249
268
  - vendor/faiss/faiss/impl/NNDescent.h
250
269
  - vendor/faiss/faiss/impl/NSG.cpp
@@ -253,6 +272,8 @@ files:
253
272
  - vendor/faiss/faiss/impl/Panorama.h
254
273
  - vendor/faiss/faiss/impl/PanoramaStats.cpp
255
274
  - vendor/faiss/faiss/impl/PanoramaStats.h
275
+ - vendor/faiss/faiss/impl/PdxLayout.cpp
276
+ - vendor/faiss/faiss/impl/PdxLayout.h
256
277
  - vendor/faiss/faiss/impl/PolysemousTraining.cpp
257
278
  - vendor/faiss/faiss/impl/PolysemousTraining.h
258
279
  - vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp
@@ -261,8 +282,6 @@ files:
261
282
  - vendor/faiss/faiss/impl/ProductQuantizer.cpp
262
283
  - vendor/faiss/faiss/impl/ProductQuantizer.h
263
284
  - vendor/faiss/faiss/impl/Quantizer.h
264
- - vendor/faiss/faiss/impl/RaBitQStats.cpp
265
- - vendor/faiss/faiss/impl/RaBitQStats.h
266
285
  - vendor/faiss/faiss/impl/RaBitQUtils.cpp
267
286
  - vendor/faiss/faiss/impl/RaBitQUtils.h
268
287
  - vendor/faiss/faiss/impl/RaBitQuantizer.cpp
@@ -276,11 +295,49 @@ files:
276
295
  - vendor/faiss/faiss/impl/ScalarQuantizer.h
277
296
  - vendor/faiss/faiss/impl/ThreadedIndex-inl.h
278
297
  - vendor/faiss/faiss/impl/ThreadedIndex.h
279
- - vendor/faiss/faiss/impl/code_distance/code_distance-avx2.h
280
- - vendor/faiss/faiss/impl/code_distance/code_distance-avx512.h
281
- - vendor/faiss/faiss/impl/code_distance/code_distance-generic.h
282
- - vendor/faiss/faiss/impl/code_distance/code_distance-sve.h
283
- - vendor/faiss/faiss/impl/code_distance/code_distance.h
298
+ - vendor/faiss/faiss/impl/VisitedTable.cpp
299
+ - vendor/faiss/faiss/impl/VisitedTable.h
300
+ - vendor/faiss/faiss/impl/approx_topk/approx_topk.h
301
+ - vendor/faiss/faiss/impl/approx_topk/avx2.cpp
302
+ - vendor/faiss/faiss/impl/approx_topk/generic.h
303
+ - vendor/faiss/faiss/impl/approx_topk/neon.cpp
304
+ - vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h
305
+ - vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h
306
+ - vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h
307
+ - vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h
308
+ - vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h
309
+ - vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h
310
+ - vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h
311
+ - vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h
312
+ - vendor/faiss/faiss/impl/binary_hamming/avx2.cpp
313
+ - vendor/faiss/faiss/impl/binary_hamming/avx512.cpp
314
+ - vendor/faiss/faiss/impl/binary_hamming/dispatch.h
315
+ - vendor/faiss/faiss/impl/binary_hamming/neon.cpp
316
+ - vendor/faiss/faiss/impl/binary_hamming/rvv.cpp
317
+ - vendor/faiss/faiss/impl/expanded_scanners.h
318
+ - vendor/faiss/faiss/impl/fast_scan/FastScanDistancePostProcessing.h
319
+ - vendor/faiss/faiss/impl/fast_scan/LookupTableScaler.h
320
+ - vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h
321
+ - vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h
322
+ - vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h
323
+ - vendor/faiss/faiss/impl/fast_scan/dispatching.h
324
+ - vendor/faiss/faiss/impl/fast_scan/fast_scan.cpp
325
+ - vendor/faiss/faiss/impl/fast_scan/fast_scan.h
326
+ - vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp
327
+ - vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp
328
+ - vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp
329
+ - vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp
330
+ - vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h
331
+ - vendor/faiss/faiss/impl/fast_scan/kernels_simd512.h
332
+ - vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h
333
+ - vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h
334
+ - vendor/faiss/faiss/impl/fast_scan/simd_result_handlers.h
335
+ - vendor/faiss/faiss/impl/hnsw/LockVector.cpp
336
+ - vendor/faiss/faiss/impl/hnsw/LockVector.h
337
+ - vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp
338
+ - vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h
339
+ - vendor/faiss/faiss/impl/hnsw/avx2.cpp
340
+ - vendor/faiss/faiss/impl/hnsw/avx512.cpp
284
341
  - vendor/faiss/faiss/impl/index_read.cpp
285
342
  - vendor/faiss/faiss/impl/index_read_utils.h
286
343
  - vendor/faiss/faiss/impl/index_write.cpp
@@ -295,13 +352,42 @@ files:
295
352
  - vendor/faiss/faiss/impl/mapped_io.h
296
353
  - vendor/faiss/faiss/impl/maybe_owned_vector.h
297
354
  - vendor/faiss/faiss/impl/platform_macros.h
298
- - vendor/faiss/faiss/impl/pq4_fast_scan.cpp
299
- - vendor/faiss/faiss/impl/pq4_fast_scan.h
300
- - vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp
301
- - vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp
355
+ - vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h
356
+ - vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp
357
+ - vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h
358
+ - vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h
359
+ - vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp
360
+ - vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp
361
+ - vendor/faiss/faiss/impl/pq_code_distance/neon.cpp
362
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx2.h
363
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx512.h
364
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp
365
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h
366
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h
367
+ - vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp
368
+ - vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp
302
369
  - vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp
303
370
  - vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h
304
- - vendor/faiss/faiss/impl/simd_result_handlers.h
371
+ - vendor/faiss/faiss/impl/scalar_quantizer/codecs.h
372
+ - vendor/faiss/faiss/impl/scalar_quantizer/distance_computers.h
373
+ - vendor/faiss/faiss/impl/scalar_quantizer/quantizers.h
374
+ - vendor/faiss/faiss/impl/scalar_quantizer/scanners.h
375
+ - vendor/faiss/faiss/impl/scalar_quantizer/similarities.h
376
+ - vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp
377
+ - vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp
378
+ - vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h
379
+ - vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp
380
+ - vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp
381
+ - vendor/faiss/faiss/impl/scalar_quantizer/training.cpp
382
+ - vendor/faiss/faiss/impl/scalar_quantizer/training.h
383
+ - vendor/faiss/faiss/impl/simd_dispatch.h
384
+ - vendor/faiss/faiss/impl/simdlib/simdlib.h
385
+ - vendor/faiss/faiss/impl/simdlib/simdlib_avx2.h
386
+ - vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h
387
+ - vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h
388
+ - vendor/faiss/faiss/impl/simdlib/simdlib_emulated.h
389
+ - vendor/faiss/faiss/impl/simdlib/simdlib_neon.h
390
+ - vendor/faiss/faiss/impl/simdlib/simdlib_ppc64.h
305
391
  - vendor/faiss/faiss/impl/svs_io.cpp
306
392
  - vendor/faiss/faiss/impl/svs_io.h
307
393
  - vendor/faiss/faiss/impl/zerocopy_io.cpp
@@ -324,6 +410,12 @@ files:
324
410
  - vendor/faiss/faiss/svs/IndexSVSFaissUtils.h
325
411
  - vendor/faiss/faiss/svs/IndexSVSFlat.cpp
326
412
  - vendor/faiss/faiss/svs/IndexSVSFlat.h
413
+ - vendor/faiss/faiss/svs/IndexSVSIVF.cpp
414
+ - vendor/faiss/faiss/svs/IndexSVSIVF.h
415
+ - vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp
416
+ - vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h
417
+ - vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp
418
+ - vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h
327
419
  - vendor/faiss/faiss/svs/IndexSVSVamana.cpp
328
420
  - vendor/faiss/faiss/svs/IndexSVSVamana.h
329
421
  - vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.cpp
@@ -337,22 +429,18 @@ files:
337
429
  - vendor/faiss/faiss/utils/NeuralNet.h
338
430
  - vendor/faiss/faiss/utils/WorkerThread.cpp
339
431
  - vendor/faiss/faiss/utils/WorkerThread.h
340
- - vendor/faiss/faiss/utils/approx_topk/approx_topk.h
341
- - vendor/faiss/faiss/utils/approx_topk/avx2-inl.h
342
- - vendor/faiss/faiss/utils/approx_topk/generic.h
343
- - vendor/faiss/faiss/utils/approx_topk/mode.h
344
432
  - vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h
345
433
  - vendor/faiss/faiss/utils/bf16.h
346
434
  - vendor/faiss/faiss/utils/distances.cpp
347
435
  - vendor/faiss/faiss/utils/distances.h
436
+ - vendor/faiss/faiss/utils/distances_dispatch.h
348
437
  - vendor/faiss/faiss/utils/distances_fused/avx512.cpp
349
- - vendor/faiss/faiss/utils/distances_fused/avx512.h
350
438
  - vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp
351
439
  - vendor/faiss/faiss/utils/distances_fused/distances_fused.h
352
440
  - vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp
353
- - vendor/faiss/faiss/utils/distances_fused/simdlib_based.h
441
+ - vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp
442
+ - vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h
354
443
  - vendor/faiss/faiss/utils/distances_simd.cpp
355
- - vendor/faiss/faiss/utils/extra_distances-inl.h
356
444
  - vendor/faiss/faiss/utils/extra_distances.cpp
357
445
  - vendor/faiss/faiss/utils/extra_distances.h
358
446
  - vendor/faiss/faiss/utils/fp16-arm.h
@@ -362,27 +450,53 @@ files:
362
450
  - vendor/faiss/faiss/utils/hamming-inl.h
363
451
  - vendor/faiss/faiss/utils/hamming.cpp
364
452
  - vendor/faiss/faiss/utils/hamming.h
365
- - vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h
366
- - vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h
367
453
  - vendor/faiss/faiss/utils/hamming_distance/common.h
368
- - vendor/faiss/faiss/utils/hamming_distance/generic-inl.h
369
- - vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h
370
- - vendor/faiss/faiss/utils/hamming_distance/neon-inl.h
454
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp
455
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp
456
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h
457
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h
458
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h
459
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h
460
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h
461
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h
462
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h
463
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp
464
+ - vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp
371
465
  - vendor/faiss/faiss/utils/ordered_key_value.h
372
466
  - vendor/faiss/faiss/utils/partitioning.cpp
373
467
  - vendor/faiss/faiss/utils/partitioning.h
468
+ - vendor/faiss/faiss/utils/popcount.h
469
+ - vendor/faiss/faiss/utils/pq_code_distance.h
374
470
  - vendor/faiss/faiss/utils/prefetch.h
375
471
  - vendor/faiss/faiss/utils/quantize_lut.cpp
376
472
  - vendor/faiss/faiss/utils/quantize_lut.h
377
473
  - vendor/faiss/faiss/utils/rabitq_simd.h
378
474
  - vendor/faiss/faiss/utils/random.cpp
379
475
  - vendor/faiss/faiss/utils/random.h
380
- - vendor/faiss/faiss/utils/simdlib.h
381
- - vendor/faiss/faiss/utils/simdlib_avx2.h
382
- - vendor/faiss/faiss/utils/simdlib_avx512.h
383
- - vendor/faiss/faiss/utils/simdlib_emulated.h
384
- - vendor/faiss/faiss/utils/simdlib_neon.h
385
- - vendor/faiss/faiss/utils/simdlib_ppc64.h
476
+ - vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h
477
+ - vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp
478
+ - vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp
479
+ - vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h
480
+ - vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp
481
+ - vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp
482
+ - vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp
483
+ - vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h
484
+ - vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h
485
+ - vendor/faiss/faiss/utils/simd_impl/exhaustive_L2sqr_blas_cmax.h
486
+ - vendor/faiss/faiss/utils/simd_impl/hamming_impl.h
487
+ - vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp
488
+ - vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp
489
+ - vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h
490
+ - vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp
491
+ - vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp
492
+ - vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp
493
+ - vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp
494
+ - vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h
495
+ - vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h
496
+ - vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp
497
+ - vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp
498
+ - vendor/faiss/faiss/utils/simd_levels.cpp
499
+ - vendor/faiss/faiss/utils/simd_levels.h
386
500
  - vendor/faiss/faiss/utils/sorting.cpp
387
501
  - vendor/faiss/faiss/utils/sorting.h
388
502
  - vendor/faiss/faiss/utils/transpose/transpose-avx2-inl.h
@@ -400,14 +514,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
400
514
  requirements:
401
515
  - - ">="
402
516
  - !ruby/object:Gem::Version
403
- version: '3.2'
517
+ version: '3.3'
404
518
  required_rubygems_version: !ruby/object:Gem::Requirement
405
519
  requirements:
406
520
  - - ">="
407
521
  - !ruby/object:Gem::Version
408
522
  version: '0'
409
523
  requirements: []
410
- rubygems_version: 4.0.3
524
+ rubygems_version: 4.0.10
411
525
  specification_version: 4
412
526
  summary: Efficient similarity search and clustering for Ruby
413
527
  test_files: []
@@ -1,29 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- #include <faiss/impl/RaBitQStats.h>
9
-
10
- namespace faiss {
11
-
12
- // NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
13
- RaBitQStats rabitq_stats;
14
-
15
- void RaBitQStats::reset() {
16
- n_1bit_evaluations = 0;
17
- n_multibit_evaluations = 0;
18
- }
19
-
20
- double RaBitQStats::skip_percentage() const {
21
- const size_t copy_n_1bit_evaluations = n_1bit_evaluations;
22
- const size_t copy_n_multibit_evaluations = n_multibit_evaluations;
23
- return copy_n_1bit_evaluations > 0
24
- ? 100.0 * (copy_n_1bit_evaluations - copy_n_multibit_evaluations) /
25
- copy_n_1bit_evaluations
26
- : 0.0;
27
- }
28
-
29
- } // namespace faiss
@@ -1,56 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- #pragma once
9
-
10
- #include <faiss/impl/platform_macros.h>
11
- #include <cstddef>
12
-
13
- namespace faiss {
14
-
15
- /// Statistics for RaBitQ multi-bit two-stage search.
16
- ///
17
- /// These stats are ONLY collected for multi-bit mode (nb_bits > 1).
18
- /// In 1-bit mode, there is no two-stage filtering - all candidates are
19
- /// evaluated with a single distance computation, so there is nothing
20
- /// meaningful to track. For 1-bit mode, both counters remain 0.
21
- ///
22
- /// Multi-bit mode uses a two-stage search:
23
- /// Stage 1: Compute 1-bit lower bound distance for all candidates
24
- /// Stage 2: Compute full multi-bit distance only for promising candidates
25
- ///
26
- /// The skip_percentage() metric measures filtering effectiveness:
27
- /// how many candidates were filtered out by the 1-bit lower bound
28
- /// without needing the more expensive multi-bit distance computation.
29
- ///
30
- /// WARNING: Statistics are not robust to internal threading nor to
31
- /// concurrent RaBitQ searches. Use these values in a single-threaded
32
- /// context to accurately gauge RaBitQ's filtering effectiveness.
33
- /// Call reset() before search, then read stats after search completes.
34
- struct RaBitQStats {
35
- /// Number of candidates evaluated using 1-bit (lower bound) distance.
36
- /// This is the first stage of two-stage search in multi-bit mode.
37
- /// Always 0 in 1-bit mode (stats not tracked).
38
- size_t n_1bit_evaluations = 0;
39
-
40
- /// Number of candidates that passed 1-bit filtering and required
41
- /// full multi-bit distance computation (second stage).
42
- /// Always 0 in 1-bit mode (stats not tracked).
43
- size_t n_multibit_evaluations = 0;
44
-
45
- void reset();
46
-
47
- /// Compute percentage of candidates skipped (filtered out by 1-bit stage).
48
- /// Returns 0 if no candidates were evaluated (including 1-bit mode).
49
- double skip_percentage() const;
50
- };
51
-
52
- /// Global stats for RaBitQ indexes
53
- // NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
54
- FAISS_API extern RaBitQStats rabitq_stats;
55
-
56
- } // namespace faiss
@@ -1,81 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- #pragma once
9
-
10
- #include <cstddef>
11
- #include <cstdint>
12
-
13
- namespace faiss {
14
-
15
- /// Returns the distance to a single code.
16
- template <typename PQDecoderT>
17
- inline float distance_single_code_generic(
18
- // number of subquantizers
19
- const size_t M,
20
- // number of bits per quantization index
21
- const size_t nbits,
22
- // precomputed distances, layout (M, ksub)
23
- const float* sim_table,
24
- // the code
25
- const uint8_t* code) {
26
- PQDecoderT decoder(code, nbits);
27
- const size_t ksub = 1 << nbits;
28
-
29
- const float* tab = sim_table;
30
- float result = 0;
31
-
32
- for (size_t m = 0; m < M; m++) {
33
- result += tab[decoder.decode()];
34
- tab += ksub;
35
- }
36
-
37
- return result;
38
- }
39
-
40
- /// Combines 4 operations of distance_single_code()
41
- /// General-purpose version.
42
- template <typename PQDecoderT>
43
- inline void distance_four_codes_generic(
44
- // number of subquantizers
45
- const size_t M,
46
- // number of bits per quantization index
47
- const size_t nbits,
48
- // precomputed distances, layout (M, ksub)
49
- const float* sim_table,
50
- // codes
51
- const uint8_t* __restrict code0,
52
- const uint8_t* __restrict code1,
53
- const uint8_t* __restrict code2,
54
- const uint8_t* __restrict code3,
55
- // computed distances
56
- float& result0,
57
- float& result1,
58
- float& result2,
59
- float& result3) {
60
- PQDecoderT decoder0(code0, nbits);
61
- PQDecoderT decoder1(code1, nbits);
62
- PQDecoderT decoder2(code2, nbits);
63
- PQDecoderT decoder3(code3, nbits);
64
- const size_t ksub = 1 << nbits;
65
-
66
- const float* tab = sim_table;
67
- result0 = 0;
68
- result1 = 0;
69
- result2 = 0;
70
- result3 = 0;
71
-
72
- for (size_t m = 0; m < M; m++) {
73
- result0 += tab[decoder0.decode()];
74
- result1 += tab[decoder1.decode()];
75
- result2 += tab[decoder2.decode()];
76
- result3 += tab[decoder3.decode()];
77
- tab += ksub;
78
- }
79
- }
80
-
81
- } // namespace faiss