faiss 0.4.1 → 0.4.3

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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/ext/faiss/index.cpp +11 -4
  4. data/ext/faiss/index_binary.cpp +2 -2
  5. data/ext/faiss/numo.hpp +273 -123
  6. data/lib/faiss/version.rb +1 -1
  7. data/vendor/faiss/faiss/AutoTune.cpp +39 -29
  8. data/vendor/faiss/faiss/Clustering.cpp +4 -2
  9. data/vendor/faiss/faiss/IVFlib.cpp +14 -7
  10. data/vendor/faiss/faiss/Index.h +72 -3
  11. data/vendor/faiss/faiss/Index2Layer.cpp +2 -4
  12. data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +0 -1
  13. data/vendor/faiss/faiss/IndexAdditiveQuantizer.h +1 -0
  14. data/vendor/faiss/faiss/IndexBinary.h +46 -3
  15. data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +118 -4
  16. data/vendor/faiss/faiss/IndexBinaryHNSW.h +41 -0
  17. data/vendor/faiss/faiss/IndexBinaryHash.cpp +0 -1
  18. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +18 -7
  19. data/vendor/faiss/faiss/IndexBinaryIVF.h +5 -1
  20. data/vendor/faiss/faiss/IndexFlat.cpp +6 -4
  21. data/vendor/faiss/faiss/IndexHNSW.cpp +65 -24
  22. data/vendor/faiss/faiss/IndexHNSW.h +10 -1
  23. data/vendor/faiss/faiss/IndexIDMap.cpp +96 -18
  24. data/vendor/faiss/faiss/IndexIDMap.h +20 -0
  25. data/vendor/faiss/faiss/IndexIVF.cpp +28 -10
  26. data/vendor/faiss/faiss/IndexIVF.h +16 -1
  27. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +84 -16
  28. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h +18 -6
  29. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +33 -21
  30. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +16 -6
  31. data/vendor/faiss/faiss/IndexIVFFastScan.cpp +24 -15
  32. data/vendor/faiss/faiss/IndexIVFFastScan.h +4 -2
  33. data/vendor/faiss/faiss/IndexIVFFlat.cpp +59 -43
  34. data/vendor/faiss/faiss/IndexIVFFlat.h +10 -2
  35. data/vendor/faiss/faiss/IndexIVFPQ.cpp +16 -3
  36. data/vendor/faiss/faiss/IndexIVFPQ.h +8 -1
  37. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +14 -6
  38. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +2 -1
  39. data/vendor/faiss/faiss/IndexIVFPQR.cpp +14 -4
  40. data/vendor/faiss/faiss/IndexIVFPQR.h +2 -1
  41. data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +28 -3
  42. data/vendor/faiss/faiss/IndexIVFRaBitQ.h +8 -1
  43. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +9 -2
  44. data/vendor/faiss/faiss/IndexIVFSpectralHash.h +2 -1
  45. data/vendor/faiss/faiss/IndexLattice.cpp +8 -4
  46. data/vendor/faiss/faiss/IndexNNDescent.cpp +0 -7
  47. data/vendor/faiss/faiss/IndexNSG.cpp +3 -3
  48. data/vendor/faiss/faiss/IndexPQ.cpp +0 -1
  49. data/vendor/faiss/faiss/IndexPQ.h +1 -0
  50. data/vendor/faiss/faiss/IndexPQFastScan.cpp +0 -2
  51. data/vendor/faiss/faiss/IndexPreTransform.cpp +4 -2
  52. data/vendor/faiss/faiss/IndexRefine.cpp +11 -6
  53. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +16 -4
  54. data/vendor/faiss/faiss/IndexScalarQuantizer.h +10 -3
  55. data/vendor/faiss/faiss/IndexShards.cpp +7 -6
  56. data/vendor/faiss/faiss/MatrixStats.cpp +16 -8
  57. data/vendor/faiss/faiss/MetaIndexes.cpp +12 -6
  58. data/vendor/faiss/faiss/MetricType.h +5 -3
  59. data/vendor/faiss/faiss/clone_index.cpp +2 -4
  60. data/vendor/faiss/faiss/cppcontrib/factory_tools.cpp +6 -0
  61. data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +9 -4
  62. data/vendor/faiss/faiss/gpu/GpuCloner.cpp +32 -10
  63. data/vendor/faiss/faiss/gpu/GpuIndex.h +88 -0
  64. data/vendor/faiss/faiss/gpu/GpuIndexBinaryCagra.h +125 -0
  65. data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +39 -4
  66. data/vendor/faiss/faiss/gpu/impl/IndexUtils.h +3 -3
  67. data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +1 -1
  68. data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +3 -2
  69. data/vendor/faiss/faiss/gpu/utils/CuvsFilterConvert.h +41 -0
  70. data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +6 -3
  71. data/vendor/faiss/faiss/impl/HNSW.cpp +34 -19
  72. data/vendor/faiss/faiss/impl/IDSelector.cpp +2 -1
  73. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +2 -3
  74. data/vendor/faiss/faiss/impl/NNDescent.cpp +17 -9
  75. data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +42 -21
  76. data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +6 -24
  77. data/vendor/faiss/faiss/impl/ResultHandler.h +56 -47
  78. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +28 -15
  79. data/vendor/faiss/faiss/impl/index_read.cpp +36 -11
  80. data/vendor/faiss/faiss/impl/index_write.cpp +19 -6
  81. data/vendor/faiss/faiss/impl/io.cpp +9 -5
  82. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +18 -11
  83. data/vendor/faiss/faiss/impl/mapped_io.cpp +4 -7
  84. data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +0 -1
  85. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +0 -1
  86. data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +6 -6
  87. data/vendor/faiss/faiss/impl/zerocopy_io.cpp +1 -1
  88. data/vendor/faiss/faiss/impl/zerocopy_io.h +2 -2
  89. data/vendor/faiss/faiss/index_factory.cpp +49 -33
  90. data/vendor/faiss/faiss/index_factory.h +8 -2
  91. data/vendor/faiss/faiss/index_io.h +0 -3
  92. data/vendor/faiss/faiss/invlists/DirectMap.cpp +2 -1
  93. data/vendor/faiss/faiss/invlists/InvertedLists.cpp +12 -6
  94. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +8 -4
  95. data/vendor/faiss/faiss/utils/Heap.cpp +15 -8
  96. data/vendor/faiss/faiss/utils/Heap.h +23 -12
  97. data/vendor/faiss/faiss/utils/distances.cpp +42 -21
  98. data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +2 -2
  99. data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +1 -1
  100. data/vendor/faiss/faiss/utils/distances_simd.cpp +5 -3
  101. data/vendor/faiss/faiss/utils/extra_distances-inl.h +27 -4
  102. data/vendor/faiss/faiss/utils/extra_distances.cpp +8 -4
  103. data/vendor/faiss/faiss/utils/hamming.cpp +20 -10
  104. data/vendor/faiss/faiss/utils/partitioning.cpp +8 -4
  105. data/vendor/faiss/faiss/utils/quantize_lut.cpp +17 -9
  106. data/vendor/faiss/faiss/utils/rabitq_simd.h +539 -0
  107. data/vendor/faiss/faiss/utils/random.cpp +14 -7
  108. data/vendor/faiss/faiss/utils/utils.cpp +0 -3
  109. metadata +7 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94cc2ecdeb397dfce274b08f07006ec7d6d13290f4149d8fca0b9d1a3f2312c6
4
- data.tar.gz: a32b28f7bc57f9bad918b0411855617951ce8013af7f1ca9dfc72978f5eb1f78
3
+ metadata.gz: 61316c4fa0bbf7f85dfaeb6890d75b35e20e013a5ed25b8d87a3d252dfea2f50
4
+ data.tar.gz: af0de6135077f184092dbfec00f9bf7492eb38da66d5ef5f4f2d020ce0486648
5
5
  SHA512:
6
- metadata.gz: 317786c14bbd6803a8abd506881e7072dbd8bfaacce3968c8c26705de45f1840177f5fb3ce189b464e5f1bbffd07a277d6f454a977e1e2aef72bdfb7d7cd04a7
7
- data.tar.gz: 4de11b05b094b18beaa0326e5d4bf2d7a71c1928b7bd7d12f28f430f7b40b023c6c7b7a4da73f74bc39b0be44c85677113597cf6b60ae4029a96bd11a41f706c
6
+ metadata.gz: 6d21e6186d57eec3852ab285f0bcd89affacb56577c661b514763478ef6d610f808a7d1e4cbc062278aec6cbc11959b204de237b9669dcfb58de4b3070be2c1e
7
+ data.tar.gz: a65646746c2f558b48285d8c192d246ce4a95cead1f4413349e8eac4393ac4aa47ad3919764e7caa1abf517edb57153e385d7a012a3dbb22258a98c2795aa5b1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.4.3 (2025-10-26)
2
+
3
+ - Fixed error with Rice 4.7
4
+
5
+ ## 0.4.2 (2025-08-13)
6
+
7
+ - Updated Faiss to 1.12.0
8
+
1
9
  ## 0.4.1 (2025-06-18)
2
10
 
3
11
  - Fixed error with Rice 4.6
data/ext/faiss/index.cpp CHANGED
@@ -29,7 +29,7 @@ namespace Rice::detail {
29
29
  public:
30
30
  From_Ruby() = default;
31
31
 
32
- From_Ruby(Arg* arg) : arg_(arg) {}
32
+ explicit From_Ruby(Arg* arg) : arg_(arg) { }
33
33
 
34
34
  Convertible is_convertible(VALUE value) { return Convertible::Cast; }
35
35
 
@@ -49,7 +49,7 @@ namespace Rice::detail {
49
49
  }
50
50
 
51
51
  private:
52
- Arg* arg_;
52
+ Arg* arg_ = nullptr;
53
53
  };
54
54
 
55
55
  template<>
@@ -60,6 +60,10 @@ namespace Rice::detail {
60
60
  template<>
61
61
  class From_Ruby<faiss::ScalarQuantizer::QuantizerType> {
62
62
  public:
63
+ From_Ruby() = default;
64
+
65
+ explicit From_Ruby(Arg* arg) : arg_(arg) { }
66
+
63
67
  Convertible is_convertible(VALUE value) { return Convertible::Cast; }
64
68
 
65
69
  faiss::ScalarQuantizer::QuantizerType convert(VALUE x) {
@@ -82,6 +86,9 @@ namespace Rice::detail {
82
86
  throw Rice::Exception(rb_eArgError, "Invalid quantizer type: %s", s.c_str());
83
87
  }
84
88
  }
89
+
90
+ private:
91
+ Arg* arg_ = nullptr;
85
92
  };
86
93
  } // namespace Rice::detail
87
94
 
@@ -134,8 +141,8 @@ void init_index(Rice::Module& m) {
134
141
  self.search(n, objects.read_ptr(), k, distances.write_ptr(), labels.write_ptr());
135
142
 
136
143
  Rice::Array ret;
137
- ret.push(distances);
138
- ret.push(labels);
144
+ ret.push(std::move(distances), false);
145
+ ret.push(std::move(labels), false);
139
146
  return ret;
140
147
  })
141
148
  .define_method(
@@ -48,8 +48,8 @@ void init_index_binary(Rice::Module& m) {
48
48
  self.search(n, objects.read_ptr(), k, distances.write_ptr(), labels.write_ptr());
49
49
 
50
50
  Rice::Array ret;
51
- ret.push(distances);
52
- ret.push(labels);
51
+ ret.push(std::move(distances), false);
52
+ ret.push(std::move(labels), false);
53
53
  return ret;
54
54
  })
55
55
  .define_method(