faiss 0.4.3 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/ext/faiss/index.cpp +25 -6
- data/ext/faiss/index_binary.cpp +17 -4
- data/ext/faiss/kmeans.cpp +6 -6
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +2 -3
- data/vendor/faiss/faiss/AutoTune.h +1 -1
- data/vendor/faiss/faiss/Clustering.cpp +2 -2
- data/vendor/faiss/faiss/Clustering.h +2 -2
- data/vendor/faiss/faiss/IVFlib.cpp +1 -2
- data/vendor/faiss/faiss/IVFlib.h +1 -1
- data/vendor/faiss/faiss/Index.h +10 -10
- data/vendor/faiss/faiss/Index2Layer.cpp +1 -1
- data/vendor/faiss/faiss/Index2Layer.h +2 -2
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +9 -4
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.h +5 -1
- data/vendor/faiss/faiss/IndexBinary.h +7 -7
- data/vendor/faiss/faiss/IndexBinaryFromFloat.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +3 -1
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +3 -3
- data/vendor/faiss/faiss/IndexBinaryHash.h +5 -5
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +7 -6
- data/vendor/faiss/faiss/IndexFastScan.cpp +125 -49
- data/vendor/faiss/faiss/IndexFastScan.h +107 -7
- data/vendor/faiss/faiss/IndexFlat.h +1 -1
- data/vendor/faiss/faiss/IndexHNSW.cpp +3 -1
- data/vendor/faiss/faiss/IndexHNSW.h +1 -1
- data/vendor/faiss/faiss/IndexIDMap.cpp +14 -13
- data/vendor/faiss/faiss/IndexIDMap.h +6 -6
- data/vendor/faiss/faiss/IndexIVF.cpp +1 -1
- data/vendor/faiss/faiss/IndexIVF.h +5 -5
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +1 -1
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +9 -3
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +3 -1
- data/vendor/faiss/faiss/IndexIVFFastScan.cpp +176 -90
- data/vendor/faiss/faiss/IndexIVFFastScan.h +173 -18
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +1 -0
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.cpp +366 -0
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.h +64 -0
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +3 -1
- data/vendor/faiss/faiss/IndexIVFPQ.h +1 -1
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +134 -2
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +7 -1
- data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +13 -6
- data/vendor/faiss/faiss/IndexIVFRaBitQ.h +1 -0
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp +650 -0
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.h +216 -0
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +1 -1
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +1 -1
- data/vendor/faiss/faiss/IndexNNDescent.cpp +1 -1
- data/vendor/faiss/faiss/IndexNSG.cpp +1 -1
- data/vendor/faiss/faiss/IndexNeuralNetCodec.h +1 -1
- data/vendor/faiss/faiss/IndexPQ.h +1 -1
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +6 -2
- data/vendor/faiss/faiss/IndexPQFastScan.h +5 -1
- data/vendor/faiss/faiss/IndexRaBitQ.cpp +13 -10
- data/vendor/faiss/faiss/IndexRaBitQ.h +7 -2
- data/vendor/faiss/faiss/IndexRaBitQFastScan.cpp +586 -0
- data/vendor/faiss/faiss/IndexRaBitQFastScan.h +149 -0
- data/vendor/faiss/faiss/IndexShards.cpp +1 -1
- data/vendor/faiss/faiss/MatrixStats.cpp +3 -3
- data/vendor/faiss/faiss/MetricType.h +1 -1
- data/vendor/faiss/faiss/VectorTransform.h +2 -2
- data/vendor/faiss/faiss/clone_index.cpp +3 -1
- data/vendor/faiss/faiss/gpu/GpuCloner.cpp +1 -1
- data/vendor/faiss/faiss/gpu/GpuIndex.h +11 -11
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryCagra.h +1 -1
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +1 -1
- data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +10 -6
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +2 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIcmEncoder.cpp +7 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +1 -1
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +1 -1
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +2 -2
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +1 -1
- data/vendor/faiss/faiss/impl/CodePacker.h +2 -2
- data/vendor/faiss/faiss/impl/DistanceComputer.h +3 -3
- data/vendor/faiss/faiss/impl/FastScanDistancePostProcessing.h +53 -0
- data/vendor/faiss/faiss/impl/HNSW.cpp +1 -1
- data/vendor/faiss/faiss/impl/HNSW.h +4 -4
- data/vendor/faiss/faiss/impl/IDSelector.cpp +2 -2
- data/vendor/faiss/faiss/impl/IDSelector.h +1 -1
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +4 -4
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/LookupTableScaler.h +1 -1
- data/vendor/faiss/faiss/impl/NNDescent.cpp +1 -1
- data/vendor/faiss/faiss/impl/NNDescent.h +2 -2
- data/vendor/faiss/faiss/impl/NSG.cpp +1 -1
- data/vendor/faiss/faiss/impl/PanoramaStats.cpp +33 -0
- data/vendor/faiss/faiss/impl/PanoramaStats.h +38 -0
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +5 -5
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +1 -1
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +2 -0
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/RaBitQUtils.cpp +246 -0
- data/vendor/faiss/faiss/impl/RaBitQUtils.h +153 -0
- data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +54 -158
- data/vendor/faiss/faiss/impl/RaBitQuantizer.h +2 -1
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ResultHandler.h +4 -4
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +1 -1
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +7 -4
- data/vendor/faiss/faiss/impl/index_read.cpp +87 -3
- data/vendor/faiss/faiss/impl/index_write.cpp +73 -3
- data/vendor/faiss/faiss/impl/io.cpp +2 -2
- data/vendor/faiss/faiss/impl/io.h +4 -4
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +1 -1
- data/vendor/faiss/faiss/impl/kmeans1d.h +1 -1
- data/vendor/faiss/faiss/impl/lattice_Zn.h +2 -2
- data/vendor/faiss/faiss/impl/mapped_io.cpp +2 -2
- data/vendor/faiss/faiss/impl/mapped_io.h +4 -3
- data/vendor/faiss/faiss/impl/maybe_owned_vector.h +8 -1
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +30 -4
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +14 -8
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +5 -6
- data/vendor/faiss/faiss/impl/simd_result_handlers.h +55 -11
- data/vendor/faiss/faiss/impl/zerocopy_io.h +1 -1
- data/vendor/faiss/faiss/index_factory.cpp +43 -1
- data/vendor/faiss/faiss/index_factory.h +1 -1
- data/vendor/faiss/faiss/index_io.h +1 -1
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +205 -0
- data/vendor/faiss/faiss/invlists/InvertedLists.h +62 -0
- data/vendor/faiss/faiss/utils/AlignedTable.h +1 -1
- data/vendor/faiss/faiss/utils/Heap.cpp +2 -2
- data/vendor/faiss/faiss/utils/Heap.h +3 -3
- data/vendor/faiss/faiss/utils/NeuralNet.cpp +1 -1
- data/vendor/faiss/faiss/utils/NeuralNet.h +3 -3
- data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +2 -2
- data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +2 -2
- data/vendor/faiss/faiss/utils/approx_topk/mode.h +1 -1
- data/vendor/faiss/faiss/utils/distances.h +2 -2
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +3 -1
- data/vendor/faiss/faiss/utils/hamming-inl.h +2 -0
- data/vendor/faiss/faiss/utils/hamming.cpp +7 -6
- data/vendor/faiss/faiss/utils/hamming.h +1 -1
- data/vendor/faiss/faiss/utils/hamming_distance/common.h +1 -2
- data/vendor/faiss/faiss/utils/partitioning.cpp +5 -5
- data/vendor/faiss/faiss/utils/partitioning.h +2 -2
- data/vendor/faiss/faiss/utils/rabitq_simd.h +222 -336
- data/vendor/faiss/faiss/utils/random.cpp +1 -1
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +1 -1
- data/vendor/faiss/faiss/utils/simdlib_avx512.h +1 -1
- data/vendor/faiss/faiss/utils/simdlib_neon.h +2 -2
- data/vendor/faiss/faiss/utils/transpose/transpose-avx512-inl.h +1 -1
- data/vendor/faiss/faiss/utils/utils.cpp +5 -2
- data/vendor/faiss/faiss/utils/utils.h +2 -2
- metadata +12 -1
|
@@ -91,7 +91,7 @@ uint64_t SplitMix64RandomGenerator::next() {
|
|
|
91
91
|
* more than 1-100 billion values. */
|
|
92
92
|
|
|
93
93
|
/* Generate a set of random floating point values such that x[i] in [0,1]
|
|
94
|
-
multi-threading. For this reason, we rely on re-
|
|
94
|
+
multi-threading. For this reason, we rely on re-entrant functions. */
|
|
95
95
|
void float_rand(float* x, size_t n, int64_t seed) {
|
|
96
96
|
// only try to parallelize on large enough arrays
|
|
97
97
|
const size_t nblock = n < 1024 ? 1 : 1024;
|
|
@@ -21,7 +21,7 @@ namespace faiss {
|
|
|
21
21
|
* The objective is to separate the different interpretations of the same
|
|
22
22
|
* registers (as a vector of uint8, uint16 or uint32), to provide printing
|
|
23
23
|
* functions, and to give more readable names to the AVX intrinsics. It does not
|
|
24
|
-
* pretend to be
|
|
24
|
+
* pretend to be exhaustive, functions are added as needed.
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
/// 256-bit representation without interpretation as a vector
|
|
@@ -23,7 +23,7 @@ namespace faiss {
|
|
|
23
23
|
* The objective is to separate the different interpretations of the same
|
|
24
24
|
* registers (as a vector of uint8, uint16 or uint32), to provide printing
|
|
25
25
|
* functions, and to give more readable names to the AVX intrinsics. It does not
|
|
26
|
-
* pretend to be
|
|
26
|
+
* pretend to be exhaustive, functions are added as needed.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
29
|
/// 512-bit representation without interpretation as a vector
|
|
@@ -805,8 +805,8 @@ struct simd32uint8 {
|
|
|
805
805
|
uint8_t bytes[32];
|
|
806
806
|
store(bytes);
|
|
807
807
|
detail::simdlib::bin(
|
|
808
|
-
const_cast<const char(&)[32]>(
|
|
809
|
-
reinterpret_cast<char(&)[32]>(bytes)),
|
|
808
|
+
const_cast<const char (&)[32]>(
|
|
809
|
+
reinterpret_cast<char (&)[32]>(bytes)),
|
|
810
810
|
bits);
|
|
811
811
|
}
|
|
812
812
|
|
|
@@ -59,7 +59,7 @@ inline void transpose_16x4(
|
|
|
59
59
|
const __m512 r1 = _mm512_shuffle_f32x4(i0, i1, _MM_SHUFFLE(3, 1, 3, 1));
|
|
60
60
|
// 32 33 34 35 40 41 42 43 48 49 50 51 56 57 58 59
|
|
61
61
|
const __m512 r2 = _mm512_shuffle_f32x4(i2, i3, _MM_SHUFFLE(2, 0, 2, 0));
|
|
62
|
-
//
|
|
62
|
+
// 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63
|
|
63
63
|
const __m512 r3 = _mm512_shuffle_f32x4(i2, i3, _MM_SHUFFLE(3, 1, 3, 1));
|
|
64
64
|
|
|
65
65
|
// 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
|
|
@@ -102,7 +102,10 @@ int sgemv_(
|
|
|
102
102
|
namespace faiss {
|
|
103
103
|
|
|
104
104
|
// this will be set at load time from GPU Faiss
|
|
105
|
-
std::string
|
|
105
|
+
std::string& ref_gpu_compile_options() {
|
|
106
|
+
static std::string gpu_compile_options;
|
|
107
|
+
return gpu_compile_options;
|
|
108
|
+
}
|
|
106
109
|
|
|
107
110
|
std::string get_compile_options() {
|
|
108
111
|
std::string options;
|
|
@@ -124,7 +127,7 @@ std::string get_compile_options() {
|
|
|
124
127
|
options += "GENERIC ";
|
|
125
128
|
#endif
|
|
126
129
|
|
|
127
|
-
options +=
|
|
130
|
+
options += ref_gpu_compile_options();
|
|
128
131
|
|
|
129
132
|
return options;
|
|
130
133
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// -*- c++ -*-
|
|
9
9
|
|
|
10
10
|
/*
|
|
11
|
-
* A few
|
|
11
|
+
* A few utility functions for similarity search:
|
|
12
12
|
* - optimized exhaustive distance and knn search functions
|
|
13
13
|
* - some functions reimplemented from torch for speed
|
|
14
14
|
*/
|
|
@@ -64,7 +64,7 @@ void matrix_qr(int m, int n, float* a);
|
|
|
64
64
|
void ranklist_handle_ties(int k, int64_t* idx, const float* dis);
|
|
65
65
|
|
|
66
66
|
/** count the number of common elements between v1 and v2
|
|
67
|
-
* algorithm = sorting +
|
|
67
|
+
* algorithm = sorting + bisection to avoid double-counting duplicates
|
|
68
68
|
*/
|
|
69
69
|
size_t ranklist_intersection_size(
|
|
70
70
|
size_t k1,
|
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.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
@@ -105,6 +105,8 @@ files:
|
|
|
105
105
|
- vendor/faiss/faiss/IndexIVFFastScan.h
|
|
106
106
|
- vendor/faiss/faiss/IndexIVFFlat.cpp
|
|
107
107
|
- vendor/faiss/faiss/IndexIVFFlat.h
|
|
108
|
+
- vendor/faiss/faiss/IndexIVFFlatPanorama.cpp
|
|
109
|
+
- vendor/faiss/faiss/IndexIVFFlatPanorama.h
|
|
108
110
|
- vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp
|
|
109
111
|
- vendor/faiss/faiss/IndexIVFIndependentQuantizer.h
|
|
110
112
|
- vendor/faiss/faiss/IndexIVFPQ.cpp
|
|
@@ -115,6 +117,8 @@ files:
|
|
|
115
117
|
- vendor/faiss/faiss/IndexIVFPQR.h
|
|
116
118
|
- vendor/faiss/faiss/IndexIVFRaBitQ.cpp
|
|
117
119
|
- vendor/faiss/faiss/IndexIVFRaBitQ.h
|
|
120
|
+
- vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp
|
|
121
|
+
- vendor/faiss/faiss/IndexIVFRaBitQFastScan.h
|
|
118
122
|
- vendor/faiss/faiss/IndexIVFSpectralHash.cpp
|
|
119
123
|
- vendor/faiss/faiss/IndexIVFSpectralHash.h
|
|
120
124
|
- vendor/faiss/faiss/IndexLSH.cpp
|
|
@@ -135,6 +139,8 @@ files:
|
|
|
135
139
|
- vendor/faiss/faiss/IndexPreTransform.h
|
|
136
140
|
- vendor/faiss/faiss/IndexRaBitQ.cpp
|
|
137
141
|
- vendor/faiss/faiss/IndexRaBitQ.h
|
|
142
|
+
- vendor/faiss/faiss/IndexRaBitQFastScan.cpp
|
|
143
|
+
- vendor/faiss/faiss/IndexRaBitQFastScan.h
|
|
138
144
|
- vendor/faiss/faiss/IndexRefine.cpp
|
|
139
145
|
- vendor/faiss/faiss/IndexRefine.h
|
|
140
146
|
- vendor/faiss/faiss/IndexReplicas.cpp
|
|
@@ -231,6 +237,7 @@ files:
|
|
|
231
237
|
- vendor/faiss/faiss/impl/FaissAssert.h
|
|
232
238
|
- vendor/faiss/faiss/impl/FaissException.cpp
|
|
233
239
|
- vendor/faiss/faiss/impl/FaissException.h
|
|
240
|
+
- vendor/faiss/faiss/impl/FastScanDistancePostProcessing.h
|
|
234
241
|
- vendor/faiss/faiss/impl/HNSW.cpp
|
|
235
242
|
- vendor/faiss/faiss/impl/HNSW.h
|
|
236
243
|
- vendor/faiss/faiss/impl/IDSelector.cpp
|
|
@@ -242,6 +249,8 @@ files:
|
|
|
242
249
|
- vendor/faiss/faiss/impl/NNDescent.h
|
|
243
250
|
- vendor/faiss/faiss/impl/NSG.cpp
|
|
244
251
|
- vendor/faiss/faiss/impl/NSG.h
|
|
252
|
+
- vendor/faiss/faiss/impl/PanoramaStats.cpp
|
|
253
|
+
- vendor/faiss/faiss/impl/PanoramaStats.h
|
|
245
254
|
- vendor/faiss/faiss/impl/PolysemousTraining.cpp
|
|
246
255
|
- vendor/faiss/faiss/impl/PolysemousTraining.h
|
|
247
256
|
- vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp
|
|
@@ -250,6 +259,8 @@ files:
|
|
|
250
259
|
- vendor/faiss/faiss/impl/ProductQuantizer.cpp
|
|
251
260
|
- vendor/faiss/faiss/impl/ProductQuantizer.h
|
|
252
261
|
- vendor/faiss/faiss/impl/Quantizer.h
|
|
262
|
+
- vendor/faiss/faiss/impl/RaBitQUtils.cpp
|
|
263
|
+
- vendor/faiss/faiss/impl/RaBitQUtils.h
|
|
253
264
|
- vendor/faiss/faiss/impl/RaBitQuantizer.cpp
|
|
254
265
|
- vendor/faiss/faiss/impl/RaBitQuantizer.h
|
|
255
266
|
- vendor/faiss/faiss/impl/ResidualQuantizer.cpp
|