faiss 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }