faiss 0.1.3 → 0.2.0

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 (199) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +16 -4
  5. data/ext/faiss/ext.cpp +12 -308
  6. data/ext/faiss/extconf.rb +6 -3
  7. data/ext/faiss/index.cpp +189 -0
  8. data/ext/faiss/index_binary.cpp +75 -0
  9. data/ext/faiss/kmeans.cpp +40 -0
  10. data/ext/faiss/numo.hpp +867 -0
  11. data/ext/faiss/pca_matrix.cpp +33 -0
  12. data/ext/faiss/product_quantizer.cpp +53 -0
  13. data/ext/faiss/utils.cpp +13 -0
  14. data/ext/faiss/utils.h +5 -0
  15. data/lib/faiss.rb +0 -5
  16. data/lib/faiss/version.rb +1 -1
  17. data/vendor/faiss/faiss/AutoTune.cpp +36 -33
  18. data/vendor/faiss/faiss/AutoTune.h +6 -3
  19. data/vendor/faiss/faiss/Clustering.cpp +16 -12
  20. data/vendor/faiss/faiss/Index.cpp +3 -4
  21. data/vendor/faiss/faiss/Index.h +3 -3
  22. data/vendor/faiss/faiss/IndexBinary.cpp +3 -4
  23. data/vendor/faiss/faiss/IndexBinary.h +1 -1
  24. data/vendor/faiss/faiss/IndexBinaryHash.cpp +2 -12
  25. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +1 -2
  26. data/vendor/faiss/faiss/IndexFlat.cpp +0 -148
  27. data/vendor/faiss/faiss/IndexFlat.h +0 -51
  28. data/vendor/faiss/faiss/IndexHNSW.cpp +4 -5
  29. data/vendor/faiss/faiss/IndexIVF.cpp +118 -31
  30. data/vendor/faiss/faiss/IndexIVF.h +22 -15
  31. data/vendor/faiss/faiss/IndexIVFFlat.cpp +3 -3
  32. data/vendor/faiss/faiss/IndexIVFFlat.h +2 -1
  33. data/vendor/faiss/faiss/IndexIVFPQ.cpp +39 -15
  34. data/vendor/faiss/faiss/IndexIVFPQ.h +25 -9
  35. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +1116 -0
  36. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +166 -0
  37. data/vendor/faiss/faiss/IndexIVFPQR.cpp +8 -9
  38. data/vendor/faiss/faiss/IndexIVFPQR.h +2 -1
  39. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +1 -2
  40. data/vendor/faiss/faiss/IndexPQ.cpp +34 -18
  41. data/vendor/faiss/faiss/IndexPQFastScan.cpp +536 -0
  42. data/vendor/faiss/faiss/IndexPQFastScan.h +111 -0
  43. data/vendor/faiss/faiss/IndexPreTransform.cpp +47 -0
  44. data/vendor/faiss/faiss/IndexPreTransform.h +2 -0
  45. data/vendor/faiss/faiss/IndexRefine.cpp +256 -0
  46. data/vendor/faiss/faiss/IndexRefine.h +73 -0
  47. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +2 -2
  48. data/vendor/faiss/faiss/IndexScalarQuantizer.h +1 -1
  49. data/vendor/faiss/faiss/gpu/GpuDistance.h +1 -1
  50. data/vendor/faiss/faiss/gpu/GpuIndex.h +16 -9
  51. data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +8 -1
  52. data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +11 -11
  53. data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +19 -2
  54. data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +28 -2
  55. data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +24 -14
  56. data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +29 -2
  57. data/vendor/faiss/faiss/gpu/GpuResources.h +4 -0
  58. data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +60 -27
  59. data/vendor/faiss/faiss/gpu/StandardGpuResources.h +28 -6
  60. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +547 -0
  61. data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +51 -0
  62. data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +3 -3
  63. data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +3 -2
  64. data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +274 -0
  65. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +7 -2
  66. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +5 -1
  67. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +231 -0
  68. data/vendor/faiss/faiss/gpu/test/TestUtils.h +33 -0
  69. data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +1 -0
  70. data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +6 -0
  71. data/vendor/faiss/faiss/gpu/utils/Timer.cpp +5 -6
  72. data/vendor/faiss/faiss/gpu/utils/Timer.h +2 -2
  73. data/vendor/faiss/faiss/impl/AuxIndexStructures.h +5 -4
  74. data/vendor/faiss/faiss/impl/HNSW.cpp +2 -4
  75. data/vendor/faiss/faiss/impl/PolysemousTraining.h +4 -4
  76. data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +22 -12
  77. data/vendor/faiss/faiss/impl/ProductQuantizer.h +2 -0
  78. data/vendor/faiss/faiss/impl/ResultHandler.h +452 -0
  79. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +29 -19
  80. data/vendor/faiss/faiss/impl/ScalarQuantizer.h +6 -0
  81. data/vendor/faiss/faiss/impl/index_read.cpp +64 -96
  82. data/vendor/faiss/faiss/impl/index_write.cpp +34 -25
  83. data/vendor/faiss/faiss/impl/io.cpp +33 -2
  84. data/vendor/faiss/faiss/impl/io.h +7 -2
  85. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +1 -15
  86. data/vendor/faiss/faiss/impl/platform_macros.h +44 -0
  87. data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +272 -0
  88. data/vendor/faiss/faiss/impl/pq4_fast_scan.h +169 -0
  89. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +180 -0
  90. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +354 -0
  91. data/vendor/faiss/faiss/impl/simd_result_handlers.h +559 -0
  92. data/vendor/faiss/faiss/index_factory.cpp +112 -7
  93. data/vendor/faiss/faiss/index_io.h +1 -48
  94. data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +151 -0
  95. data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +76 -0
  96. data/vendor/faiss/faiss/{DirectMap.cpp → invlists/DirectMap.cpp} +1 -1
  97. data/vendor/faiss/faiss/{DirectMap.h → invlists/DirectMap.h} +1 -1
  98. data/vendor/faiss/faiss/{InvertedLists.cpp → invlists/InvertedLists.cpp} +72 -1
  99. data/vendor/faiss/faiss/{InvertedLists.h → invlists/InvertedLists.h} +32 -1
  100. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +107 -0
  101. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +63 -0
  102. data/vendor/faiss/faiss/{OnDiskInvertedLists.cpp → invlists/OnDiskInvertedLists.cpp} +21 -6
  103. data/vendor/faiss/faiss/{OnDiskInvertedLists.h → invlists/OnDiskInvertedLists.h} +5 -2
  104. data/vendor/faiss/faiss/python/python_callbacks.h +8 -1
  105. data/vendor/faiss/faiss/utils/AlignedTable.h +141 -0
  106. data/vendor/faiss/faiss/utils/Heap.cpp +2 -4
  107. data/vendor/faiss/faiss/utils/Heap.h +61 -50
  108. data/vendor/faiss/faiss/utils/distances.cpp +164 -319
  109. data/vendor/faiss/faiss/utils/distances.h +28 -20
  110. data/vendor/faiss/faiss/utils/distances_simd.cpp +277 -49
  111. data/vendor/faiss/faiss/utils/extra_distances.cpp +1 -2
  112. data/vendor/faiss/faiss/utils/hamming-inl.h +4 -4
  113. data/vendor/faiss/faiss/utils/hamming.cpp +3 -6
  114. data/vendor/faiss/faiss/utils/hamming.h +2 -7
  115. data/vendor/faiss/faiss/utils/ordered_key_value.h +98 -0
  116. data/vendor/faiss/faiss/utils/partitioning.cpp +1256 -0
  117. data/vendor/faiss/faiss/utils/partitioning.h +69 -0
  118. data/vendor/faiss/faiss/utils/quantize_lut.cpp +277 -0
  119. data/vendor/faiss/faiss/utils/quantize_lut.h +80 -0
  120. data/vendor/faiss/faiss/utils/simdlib.h +31 -0
  121. data/vendor/faiss/faiss/utils/simdlib_avx2.h +461 -0
  122. data/vendor/faiss/faiss/utils/simdlib_emulated.h +589 -0
  123. metadata +54 -149
  124. data/lib/faiss/index.rb +0 -20
  125. data/lib/faiss/index_binary.rb +0 -20
  126. data/lib/faiss/kmeans.rb +0 -15
  127. data/lib/faiss/pca_matrix.rb +0 -15
  128. data/lib/faiss/product_quantizer.rb +0 -22
  129. data/vendor/faiss/benchs/bench_6bit_codec.cpp +0 -80
  130. data/vendor/faiss/c_api/AutoTune_c.cpp +0 -83
  131. data/vendor/faiss/c_api/AutoTune_c.h +0 -66
  132. data/vendor/faiss/c_api/Clustering_c.cpp +0 -145
  133. data/vendor/faiss/c_api/Clustering_c.h +0 -123
  134. data/vendor/faiss/c_api/IndexFlat_c.cpp +0 -140
  135. data/vendor/faiss/c_api/IndexFlat_c.h +0 -115
  136. data/vendor/faiss/c_api/IndexIVFFlat_c.cpp +0 -64
  137. data/vendor/faiss/c_api/IndexIVFFlat_c.h +0 -58
  138. data/vendor/faiss/c_api/IndexIVF_c.cpp +0 -99
  139. data/vendor/faiss/c_api/IndexIVF_c.h +0 -142
  140. data/vendor/faiss/c_api/IndexLSH_c.cpp +0 -37
  141. data/vendor/faiss/c_api/IndexLSH_c.h +0 -40
  142. data/vendor/faiss/c_api/IndexPreTransform_c.cpp +0 -21
  143. data/vendor/faiss/c_api/IndexPreTransform_c.h +0 -32
  144. data/vendor/faiss/c_api/IndexShards_c.cpp +0 -38
  145. data/vendor/faiss/c_api/IndexShards_c.h +0 -39
  146. data/vendor/faiss/c_api/Index_c.cpp +0 -105
  147. data/vendor/faiss/c_api/Index_c.h +0 -183
  148. data/vendor/faiss/c_api/MetaIndexes_c.cpp +0 -49
  149. data/vendor/faiss/c_api/MetaIndexes_c.h +0 -49
  150. data/vendor/faiss/c_api/clone_index_c.cpp +0 -23
  151. data/vendor/faiss/c_api/clone_index_c.h +0 -32
  152. data/vendor/faiss/c_api/error_c.h +0 -42
  153. data/vendor/faiss/c_api/error_impl.cpp +0 -27
  154. data/vendor/faiss/c_api/error_impl.h +0 -16
  155. data/vendor/faiss/c_api/faiss_c.h +0 -58
  156. data/vendor/faiss/c_api/gpu/GpuAutoTune_c.cpp +0 -98
  157. data/vendor/faiss/c_api/gpu/GpuAutoTune_c.h +0 -56
  158. data/vendor/faiss/c_api/gpu/GpuClonerOptions_c.cpp +0 -52
  159. data/vendor/faiss/c_api/gpu/GpuClonerOptions_c.h +0 -68
  160. data/vendor/faiss/c_api/gpu/GpuIndex_c.cpp +0 -17
  161. data/vendor/faiss/c_api/gpu/GpuIndex_c.h +0 -30
  162. data/vendor/faiss/c_api/gpu/GpuIndicesOptions_c.h +0 -38
  163. data/vendor/faiss/c_api/gpu/GpuResources_c.cpp +0 -86
  164. data/vendor/faiss/c_api/gpu/GpuResources_c.h +0 -66
  165. data/vendor/faiss/c_api/gpu/StandardGpuResources_c.cpp +0 -54
  166. data/vendor/faiss/c_api/gpu/StandardGpuResources_c.h +0 -53
  167. data/vendor/faiss/c_api/gpu/macros_impl.h +0 -42
  168. data/vendor/faiss/c_api/impl/AuxIndexStructures_c.cpp +0 -220
  169. data/vendor/faiss/c_api/impl/AuxIndexStructures_c.h +0 -149
  170. data/vendor/faiss/c_api/index_factory_c.cpp +0 -26
  171. data/vendor/faiss/c_api/index_factory_c.h +0 -30
  172. data/vendor/faiss/c_api/index_io_c.cpp +0 -42
  173. data/vendor/faiss/c_api/index_io_c.h +0 -50
  174. data/vendor/faiss/c_api/macros_impl.h +0 -110
  175. data/vendor/faiss/demos/demo_imi_flat.cpp +0 -154
  176. data/vendor/faiss/demos/demo_imi_pq.cpp +0 -203
  177. data/vendor/faiss/demos/demo_ivfpq_indexing.cpp +0 -151
  178. data/vendor/faiss/demos/demo_sift1M.cpp +0 -252
  179. data/vendor/faiss/demos/demo_weighted_kmeans.cpp +0 -185
  180. data/vendor/faiss/misc/test_blas.cpp +0 -87
  181. data/vendor/faiss/tests/test_binary_flat.cpp +0 -62
  182. data/vendor/faiss/tests/test_dealloc_invlists.cpp +0 -188
  183. data/vendor/faiss/tests/test_ivfpq_codec.cpp +0 -70
  184. data/vendor/faiss/tests/test_ivfpq_indexing.cpp +0 -100
  185. data/vendor/faiss/tests/test_lowlevel_ivf.cpp +0 -573
  186. data/vendor/faiss/tests/test_merge.cpp +0 -260
  187. data/vendor/faiss/tests/test_omp_threads.cpp +0 -14
  188. data/vendor/faiss/tests/test_ondisk_ivf.cpp +0 -225
  189. data/vendor/faiss/tests/test_pairs_decoding.cpp +0 -193
  190. data/vendor/faiss/tests/test_params_override.cpp +0 -236
  191. data/vendor/faiss/tests/test_pq_encoding.cpp +0 -98
  192. data/vendor/faiss/tests/test_sliding_ivf.cpp +0 -246
  193. data/vendor/faiss/tests/test_threaded_index.cpp +0 -253
  194. data/vendor/faiss/tests/test_transfer_invlists.cpp +0 -159
  195. data/vendor/faiss/tutorial/cpp/1-Flat.cpp +0 -104
  196. data/vendor/faiss/tutorial/cpp/2-IVFFlat.cpp +0 -85
  197. data/vendor/faiss/tutorial/cpp/3-IVFPQ.cpp +0 -98
  198. data/vendor/faiss/tutorial/cpp/4-GPU.cpp +0 -122
  199. data/vendor/faiss/tutorial/cpp/5-Multiple-GPUs.cpp +0 -104
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faiss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-22 00:00:00.000000000 Z
11
+ date: 2021-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rice
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
19
+ version: 4.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.2'
26
+ version: 4.0.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: numo-narray
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,64 +38,8 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake-compiler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: minitest
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '5'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '5'
97
- description:
98
- email: andrew@chartkick.com
41
+ description:
42
+ email: andrew@ankane.org
99
43
  executables: []
100
44
  extensions:
101
45
  - ext/faiss/extconf.rb
@@ -106,71 +50,21 @@ files:
106
50
  - README.md
107
51
  - ext/faiss/ext.cpp
108
52
  - ext/faiss/extconf.rb
53
+ - ext/faiss/index.cpp
54
+ - ext/faiss/index_binary.cpp
55
+ - ext/faiss/kmeans.cpp
56
+ - ext/faiss/numo.hpp
57
+ - ext/faiss/pca_matrix.cpp
58
+ - ext/faiss/product_quantizer.cpp
59
+ - ext/faiss/utils.cpp
60
+ - ext/faiss/utils.h
109
61
  - lib/faiss.rb
110
- - lib/faiss/index.rb
111
- - lib/faiss/index_binary.rb
112
- - lib/faiss/kmeans.rb
113
- - lib/faiss/pca_matrix.rb
114
- - lib/faiss/product_quantizer.rb
115
62
  - lib/faiss/version.rb
116
63
  - vendor/faiss/LICENSE
117
- - vendor/faiss/benchs/bench_6bit_codec.cpp
118
- - vendor/faiss/c_api/AutoTune_c.cpp
119
- - vendor/faiss/c_api/AutoTune_c.h
120
- - vendor/faiss/c_api/Clustering_c.cpp
121
- - vendor/faiss/c_api/Clustering_c.h
122
- - vendor/faiss/c_api/IndexFlat_c.cpp
123
- - vendor/faiss/c_api/IndexFlat_c.h
124
- - vendor/faiss/c_api/IndexIVFFlat_c.cpp
125
- - vendor/faiss/c_api/IndexIVFFlat_c.h
126
- - vendor/faiss/c_api/IndexIVF_c.cpp
127
- - vendor/faiss/c_api/IndexIVF_c.h
128
- - vendor/faiss/c_api/IndexLSH_c.cpp
129
- - vendor/faiss/c_api/IndexLSH_c.h
130
- - vendor/faiss/c_api/IndexPreTransform_c.cpp
131
- - vendor/faiss/c_api/IndexPreTransform_c.h
132
- - vendor/faiss/c_api/IndexShards_c.cpp
133
- - vendor/faiss/c_api/IndexShards_c.h
134
- - vendor/faiss/c_api/Index_c.cpp
135
- - vendor/faiss/c_api/Index_c.h
136
- - vendor/faiss/c_api/MetaIndexes_c.cpp
137
- - vendor/faiss/c_api/MetaIndexes_c.h
138
- - vendor/faiss/c_api/clone_index_c.cpp
139
- - vendor/faiss/c_api/clone_index_c.h
140
- - vendor/faiss/c_api/error_c.h
141
- - vendor/faiss/c_api/error_impl.cpp
142
- - vendor/faiss/c_api/error_impl.h
143
- - vendor/faiss/c_api/faiss_c.h
144
- - vendor/faiss/c_api/gpu/GpuAutoTune_c.cpp
145
- - vendor/faiss/c_api/gpu/GpuAutoTune_c.h
146
- - vendor/faiss/c_api/gpu/GpuClonerOptions_c.cpp
147
- - vendor/faiss/c_api/gpu/GpuClonerOptions_c.h
148
- - vendor/faiss/c_api/gpu/GpuIndex_c.cpp
149
- - vendor/faiss/c_api/gpu/GpuIndex_c.h
150
- - vendor/faiss/c_api/gpu/GpuIndicesOptions_c.h
151
- - vendor/faiss/c_api/gpu/GpuResources_c.cpp
152
- - vendor/faiss/c_api/gpu/GpuResources_c.h
153
- - vendor/faiss/c_api/gpu/StandardGpuResources_c.cpp
154
- - vendor/faiss/c_api/gpu/StandardGpuResources_c.h
155
- - vendor/faiss/c_api/gpu/macros_impl.h
156
- - vendor/faiss/c_api/impl/AuxIndexStructures_c.cpp
157
- - vendor/faiss/c_api/impl/AuxIndexStructures_c.h
158
- - vendor/faiss/c_api/index_factory_c.cpp
159
- - vendor/faiss/c_api/index_factory_c.h
160
- - vendor/faiss/c_api/index_io_c.cpp
161
- - vendor/faiss/c_api/index_io_c.h
162
- - vendor/faiss/c_api/macros_impl.h
163
- - vendor/faiss/demos/demo_imi_flat.cpp
164
- - vendor/faiss/demos/demo_imi_pq.cpp
165
- - vendor/faiss/demos/demo_ivfpq_indexing.cpp
166
- - vendor/faiss/demos/demo_sift1M.cpp
167
- - vendor/faiss/demos/demo_weighted_kmeans.cpp
168
64
  - vendor/faiss/faiss/AutoTune.cpp
169
65
  - vendor/faiss/faiss/AutoTune.h
170
66
  - vendor/faiss/faiss/Clustering.cpp
171
67
  - vendor/faiss/faiss/Clustering.h
172
- - vendor/faiss/faiss/DirectMap.cpp
173
- - vendor/faiss/faiss/DirectMap.h
174
68
  - vendor/faiss/faiss/IVFlib.cpp
175
69
  - vendor/faiss/faiss/IVFlib.h
176
70
  - vendor/faiss/faiss/Index.cpp
@@ -199,6 +93,8 @@ files:
199
93
  - vendor/faiss/faiss/IndexIVFFlat.h
200
94
  - vendor/faiss/faiss/IndexIVFPQ.cpp
201
95
  - vendor/faiss/faiss/IndexIVFPQ.h
96
+ - vendor/faiss/faiss/IndexIVFPQFastScan.cpp
97
+ - vendor/faiss/faiss/IndexIVFPQFastScan.h
202
98
  - vendor/faiss/faiss/IndexIVFPQR.cpp
203
99
  - vendor/faiss/faiss/IndexIVFPQR.h
204
100
  - vendor/faiss/faiss/IndexIVFSpectralHash.cpp
@@ -209,23 +105,23 @@ files:
209
105
  - vendor/faiss/faiss/IndexLattice.h
210
106
  - vendor/faiss/faiss/IndexPQ.cpp
211
107
  - vendor/faiss/faiss/IndexPQ.h
108
+ - vendor/faiss/faiss/IndexPQFastScan.cpp
109
+ - vendor/faiss/faiss/IndexPQFastScan.h
212
110
  - vendor/faiss/faiss/IndexPreTransform.cpp
213
111
  - vendor/faiss/faiss/IndexPreTransform.h
112
+ - vendor/faiss/faiss/IndexRefine.cpp
113
+ - vendor/faiss/faiss/IndexRefine.h
214
114
  - vendor/faiss/faiss/IndexReplicas.cpp
215
115
  - vendor/faiss/faiss/IndexReplicas.h
216
116
  - vendor/faiss/faiss/IndexScalarQuantizer.cpp
217
117
  - vendor/faiss/faiss/IndexScalarQuantizer.h
218
118
  - vendor/faiss/faiss/IndexShards.cpp
219
119
  - vendor/faiss/faiss/IndexShards.h
220
- - vendor/faiss/faiss/InvertedLists.cpp
221
- - vendor/faiss/faiss/InvertedLists.h
222
120
  - vendor/faiss/faiss/MatrixStats.cpp
223
121
  - vendor/faiss/faiss/MatrixStats.h
224
122
  - vendor/faiss/faiss/MetaIndexes.cpp
225
123
  - vendor/faiss/faiss/MetaIndexes.h
226
124
  - vendor/faiss/faiss/MetricType.h
227
- - vendor/faiss/faiss/OnDiskInvertedLists.cpp
228
- - vendor/faiss/faiss/OnDiskInvertedLists.h
229
125
  - vendor/faiss/faiss/VectorTransform.cpp
230
126
  - vendor/faiss/faiss/VectorTransform.h
231
127
  - vendor/faiss/faiss/clone_index.cpp
@@ -250,6 +146,8 @@ files:
250
146
  - vendor/faiss/faiss/gpu/GpuResources.h
251
147
  - vendor/faiss/faiss/gpu/StandardGpuResources.cpp
252
148
  - vendor/faiss/faiss/gpu/StandardGpuResources.h
149
+ - vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp
150
+ - vendor/faiss/faiss/gpu/impl/InterleavedCodes.h
253
151
  - vendor/faiss/faiss/gpu/impl/RemapIndices.cpp
254
152
  - vendor/faiss/faiss/gpu/impl/RemapIndices.h
255
153
  - vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h
@@ -257,10 +155,12 @@ files:
257
155
  - vendor/faiss/faiss/gpu/perf/PerfClustering.cpp
258
156
  - vendor/faiss/faiss/gpu/perf/PerfIVFPQAdd.cpp
259
157
  - vendor/faiss/faiss/gpu/perf/WriteIndex.cpp
158
+ - vendor/faiss/faiss/gpu/test/TestCodePacking.cpp
260
159
  - vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp
261
160
  - vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp
262
161
  - vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp
263
162
  - vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp
163
+ - vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp
264
164
  - vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp
265
165
  - vendor/faiss/faiss/gpu/test/TestUtils.cpp
266
166
  - vendor/faiss/faiss/gpu/test/TestUtils.h
@@ -283,6 +183,7 @@ files:
283
183
  - vendor/faiss/faiss/impl/ProductQuantizer-inl.h
284
184
  - vendor/faiss/faiss/impl/ProductQuantizer.cpp
285
185
  - vendor/faiss/faiss/impl/ProductQuantizer.h
186
+ - vendor/faiss/faiss/impl/ResultHandler.h
286
187
  - vendor/faiss/faiss/impl/ScalarQuantizer.cpp
287
188
  - vendor/faiss/faiss/impl/ScalarQuantizer.h
288
189
  - vendor/faiss/faiss/impl/ThreadedIndex-inl.h
@@ -295,11 +196,27 @@ files:
295
196
  - vendor/faiss/faiss/impl/lattice_Zn.cpp
296
197
  - vendor/faiss/faiss/impl/lattice_Zn.h
297
198
  - vendor/faiss/faiss/impl/platform_macros.h
199
+ - vendor/faiss/faiss/impl/pq4_fast_scan.cpp
200
+ - vendor/faiss/faiss/impl/pq4_fast_scan.h
201
+ - vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp
202
+ - vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp
203
+ - vendor/faiss/faiss/impl/simd_result_handlers.h
298
204
  - vendor/faiss/faiss/index_factory.cpp
299
205
  - vendor/faiss/faiss/index_factory.h
300
206
  - vendor/faiss/faiss/index_io.h
207
+ - vendor/faiss/faiss/invlists/BlockInvertedLists.cpp
208
+ - vendor/faiss/faiss/invlists/BlockInvertedLists.h
209
+ - vendor/faiss/faiss/invlists/DirectMap.cpp
210
+ - vendor/faiss/faiss/invlists/DirectMap.h
211
+ - vendor/faiss/faiss/invlists/InvertedLists.cpp
212
+ - vendor/faiss/faiss/invlists/InvertedLists.h
213
+ - vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp
214
+ - vendor/faiss/faiss/invlists/InvertedListsIOHook.h
215
+ - vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp
216
+ - vendor/faiss/faiss/invlists/OnDiskInvertedLists.h
301
217
  - vendor/faiss/faiss/python/python_callbacks.cpp
302
218
  - vendor/faiss/faiss/python/python_callbacks.h
219
+ - vendor/faiss/faiss/utils/AlignedTable.h
303
220
  - vendor/faiss/faiss/utils/Heap.cpp
304
221
  - vendor/faiss/faiss/utils/Heap.h
305
222
  - vendor/faiss/faiss/utils/WorkerThread.cpp
@@ -312,35 +229,23 @@ files:
312
229
  - vendor/faiss/faiss/utils/hamming-inl.h
313
230
  - vendor/faiss/faiss/utils/hamming.cpp
314
231
  - vendor/faiss/faiss/utils/hamming.h
232
+ - vendor/faiss/faiss/utils/ordered_key_value.h
233
+ - vendor/faiss/faiss/utils/partitioning.cpp
234
+ - vendor/faiss/faiss/utils/partitioning.h
235
+ - vendor/faiss/faiss/utils/quantize_lut.cpp
236
+ - vendor/faiss/faiss/utils/quantize_lut.h
315
237
  - vendor/faiss/faiss/utils/random.cpp
316
238
  - vendor/faiss/faiss/utils/random.h
239
+ - vendor/faiss/faiss/utils/simdlib.h
240
+ - vendor/faiss/faiss/utils/simdlib_avx2.h
241
+ - vendor/faiss/faiss/utils/simdlib_emulated.h
317
242
  - vendor/faiss/faiss/utils/utils.cpp
318
243
  - vendor/faiss/faiss/utils/utils.h
319
- - vendor/faiss/misc/test_blas.cpp
320
- - vendor/faiss/tests/test_binary_flat.cpp
321
- - vendor/faiss/tests/test_dealloc_invlists.cpp
322
- - vendor/faiss/tests/test_ivfpq_codec.cpp
323
- - vendor/faiss/tests/test_ivfpq_indexing.cpp
324
- - vendor/faiss/tests/test_lowlevel_ivf.cpp
325
- - vendor/faiss/tests/test_merge.cpp
326
- - vendor/faiss/tests/test_omp_threads.cpp
327
- - vendor/faiss/tests/test_ondisk_ivf.cpp
328
- - vendor/faiss/tests/test_pairs_decoding.cpp
329
- - vendor/faiss/tests/test_params_override.cpp
330
- - vendor/faiss/tests/test_pq_encoding.cpp
331
- - vendor/faiss/tests/test_sliding_ivf.cpp
332
- - vendor/faiss/tests/test_threaded_index.cpp
333
- - vendor/faiss/tests/test_transfer_invlists.cpp
334
- - vendor/faiss/tutorial/cpp/1-Flat.cpp
335
- - vendor/faiss/tutorial/cpp/2-IVFFlat.cpp
336
- - vendor/faiss/tutorial/cpp/3-IVFPQ.cpp
337
- - vendor/faiss/tutorial/cpp/4-GPU.cpp
338
- - vendor/faiss/tutorial/cpp/5-Multiple-GPUs.cpp
339
244
  homepage: https://github.com/ankane/faiss
340
245
  licenses:
341
246
  - MIT
342
247
  metadata: {}
343
- post_install_message:
248
+ post_install_message:
344
249
  rdoc_options: []
345
250
  require_paths:
346
251
  - lib
@@ -348,15 +253,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
348
253
  requirements:
349
254
  - - ">="
350
255
  - !ruby/object:Gem::Version
351
- version: '2.4'
256
+ version: '2.6'
352
257
  required_rubygems_version: !ruby/object:Gem::Requirement
353
258
  requirements:
354
259
  - - ">="
355
260
  - !ruby/object:Gem::Version
356
261
  version: '0'
357
262
  requirements: []
358
- rubygems_version: 3.1.2
359
- signing_key:
263
+ rubygems_version: 3.2.3
264
+ signing_key:
360
265
  specification_version: 4
361
266
  summary: Efficient similarity search and clustering for Ruby
362
267
  test_files: []
data/lib/faiss/index.rb DELETED
@@ -1,20 +0,0 @@
1
- module Faiss
2
- class Index
3
- def train(objects)
4
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
5
- _train(objects.shape[0], objects)
6
- end
7
-
8
- def add(objects)
9
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
10
- _add(objects.shape[0], objects)
11
- end
12
-
13
- def search(objects, k)
14
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
15
- n = objects.shape[0]
16
- distances, labels = _search(n, objects, k)
17
- [Numo::SFloat.from_binary(distances).reshape(n, k), Numo::Int64.from_binary(labels).reshape(n, k)]
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- module Faiss
2
- class IndexBinary
3
- def train(objects)
4
- objects = Numo::UInt8.cast(objects) unless objects.is_a?(Numo::UInt8)
5
- _train(objects.shape[0], objects)
6
- end
7
-
8
- def add(objects)
9
- objects = Numo::UInt8.cast(objects) unless objects.is_a?(Numo::UInt8)
10
- _add(objects.shape[0], objects)
11
- end
12
-
13
- def search(objects, k)
14
- objects = Numo::UInt8.cast(objects) unless objects.is_a?(Numo::UInt8)
15
- n = objects.shape[0]
16
- distances, labels = _search(n, objects, k)
17
- [Numo::UInt32.from_binary(distances).reshape(n, k), Numo::Int64.from_binary(labels).reshape(n, k)]
18
- end
19
- end
20
- end
data/lib/faiss/kmeans.rb DELETED
@@ -1,15 +0,0 @@
1
- module Faiss
2
- class Kmeans
3
- attr_reader :index
4
-
5
- def train(objects)
6
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
7
- @index = IndexFlatL2.new(d)
8
- _train(objects.shape[0], objects, @index)
9
- end
10
-
11
- def centroids
12
- Numo::SFloat.from_binary(_centroids).reshape(k, d)
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Faiss
2
- class PCAMatrix
3
- def train(objects)
4
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
5
- _train(objects.shape[0], objects)
6
- end
7
-
8
- def apply(objects)
9
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
10
- n = objects.shape[0]
11
- res = _apply(n, objects)
12
- Numo::SFloat.from_binary(res).reshape(n, d_out)
13
- end
14
- end
15
- end
@@ -1,22 +0,0 @@
1
- module Faiss
2
- class ProductQuantizer
3
- def train(objects)
4
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
5
- _train(objects.shape[0], objects)
6
- end
7
-
8
- def compute_codes(objects)
9
- objects = Numo::SFloat.cast(objects) unless objects.is_a?(Numo::SFloat)
10
- n = objects.shape[0]
11
- res = _compute_codes(n, objects)
12
- Numo::UInt8.from_binary(res).reshape(n, m)
13
- end
14
-
15
- def decode(objects)
16
- objects = Numo::UInt8.cast(objects) unless objects.is_a?(Numo::UInt8)
17
- n = objects.shape[0]
18
- res = _decode(n, objects)
19
- Numo::SFloat.from_binary(res).reshape(n, d)
20
- end
21
- end
22
- end
@@ -1,80 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its 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
-
9
- #include <cstdio>
10
- #include <omp.h>
11
-
12
- #include <faiss/impl/ScalarQuantizer.h>
13
- #include <faiss/utils/utils.h>
14
- #include <faiss/utils/random.h>
15
- #include <faiss/utils/distances.h>
16
-
17
- using namespace faiss;
18
-
19
- int main() {
20
-
21
- int d = 128;
22
- int n = 2000;
23
-
24
- std::vector<float> x(d * n);
25
-
26
- float_rand(x.data(), d * n, 12345);
27
-
28
- // make sure it's idempotent
29
- ScalarQuantizer sq(d, ScalarQuantizer::QT_6bit);
30
-
31
- omp_set_num_threads(1);
32
-
33
- sq.train(n, x.data());
34
-
35
- size_t code_size = sq.code_size;
36
- printf("code size: %ld\n", sq.code_size);
37
-
38
- // encode
39
- std::vector<uint8_t> codes(code_size * n);
40
- sq.compute_codes(x.data(), codes.data(), n);
41
-
42
- // decode
43
- std::vector<float> x2(d * n);
44
- sq.decode(codes.data(), x2.data(), n);
45
-
46
- printf("sqL2 recons error: %g\n",
47
- fvec_L2sqr(x.data(), x2.data(), n * d) / n);
48
-
49
- // encode again
50
- std::vector<uint8_t> codes2(code_size * n);
51
- sq.compute_codes(x2.data(), codes2.data(), n);
52
-
53
- size_t ndiff = 0;
54
- for (size_t i = 0; i < codes.size(); i++) {
55
- if (codes[i] != codes2[i]) ndiff++;
56
- }
57
-
58
- printf("ndiff for idempotence: %ld / %ld\n", ndiff, codes.size());
59
-
60
- std::unique_ptr<ScalarQuantizer::SQDistanceComputer>
61
- dc(sq.get_distance_computer());
62
- dc->codes = codes.data();
63
- dc->code_size = sq.code_size;
64
- printf("code size: %ld\n", dc->code_size);
65
-
66
- double sum_dis = 0;
67
- double t0 = getmillisecs();
68
- for (int i = 0; i < n; i++) {
69
- dc->set_query(&x[i * d]);
70
- for (int j = 0; j < n; j++) {
71
- sum_dis += (*dc)(j);
72
- }
73
- }
74
- printf("distances computed in %.3f ms, checksum=%g\n",
75
- getmillisecs() - t0, sum_dis);
76
-
77
-
78
-
79
- return 0;
80
- }