faiss 0.2.0 → 0.2.4
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 +16 -0
- data/LICENSE.txt +1 -1
- data/README.md +7 -7
- data/ext/faiss/extconf.rb +6 -3
- data/ext/faiss/numo.hpp +4 -4
- data/ext/faiss/utils.cpp +1 -1
- data/ext/faiss/utils.h +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +292 -291
- data/vendor/faiss/faiss/AutoTune.h +55 -56
- data/vendor/faiss/faiss/Clustering.cpp +365 -194
- data/vendor/faiss/faiss/Clustering.h +102 -35
- data/vendor/faiss/faiss/IVFlib.cpp +171 -195
- data/vendor/faiss/faiss/IVFlib.h +48 -51
- data/vendor/faiss/faiss/Index.cpp +85 -103
- data/vendor/faiss/faiss/Index.h +54 -48
- data/vendor/faiss/faiss/Index2Layer.cpp +126 -224
- data/vendor/faiss/faiss/Index2Layer.h +22 -36
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +407 -0
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.h +195 -0
- data/vendor/faiss/faiss/IndexBinary.cpp +45 -37
- data/vendor/faiss/faiss/IndexBinary.h +140 -132
- data/vendor/faiss/faiss/IndexBinaryFlat.cpp +73 -53
- data/vendor/faiss/faiss/IndexBinaryFlat.h +29 -24
- data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +46 -43
- data/vendor/faiss/faiss/IndexBinaryFromFloat.h +16 -15
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +215 -232
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +25 -24
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +182 -177
- data/vendor/faiss/faiss/IndexBinaryHash.h +41 -34
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +489 -461
- data/vendor/faiss/faiss/IndexBinaryIVF.h +97 -68
- data/vendor/faiss/faiss/IndexFlat.cpp +115 -176
- data/vendor/faiss/faiss/IndexFlat.h +42 -59
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +67 -0
- data/vendor/faiss/faiss/IndexFlatCodes.h +47 -0
- data/vendor/faiss/faiss/IndexHNSW.cpp +372 -348
- data/vendor/faiss/faiss/IndexHNSW.h +57 -41
- data/vendor/faiss/faiss/IndexIVF.cpp +545 -453
- data/vendor/faiss/faiss/IndexIVF.h +169 -118
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +316 -0
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h +121 -0
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +247 -252
- data/vendor/faiss/faiss/IndexIVFFlat.h +48 -51
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +459 -517
- data/vendor/faiss/faiss/IndexIVFPQ.h +75 -67
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +406 -372
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +82 -57
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +104 -102
- data/vendor/faiss/faiss/IndexIVFPQR.h +33 -28
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +163 -150
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +38 -25
- data/vendor/faiss/faiss/IndexLSH.cpp +66 -113
- data/vendor/faiss/faiss/IndexLSH.h +20 -38
- data/vendor/faiss/faiss/IndexLattice.cpp +42 -56
- data/vendor/faiss/faiss/IndexLattice.h +11 -16
- data/vendor/faiss/faiss/IndexNNDescent.cpp +229 -0
- data/vendor/faiss/faiss/IndexNNDescent.h +72 -0
- data/vendor/faiss/faiss/IndexNSG.cpp +301 -0
- data/vendor/faiss/faiss/IndexNSG.h +85 -0
- data/vendor/faiss/faiss/IndexPQ.cpp +387 -495
- data/vendor/faiss/faiss/IndexPQ.h +64 -82
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +143 -170
- data/vendor/faiss/faiss/IndexPQFastScan.h +46 -32
- data/vendor/faiss/faiss/IndexPreTransform.cpp +120 -150
- data/vendor/faiss/faiss/IndexPreTransform.h +33 -36
- data/vendor/faiss/faiss/IndexRefine.cpp +139 -127
- data/vendor/faiss/faiss/IndexRefine.h +32 -23
- data/vendor/faiss/faiss/IndexReplicas.cpp +147 -153
- data/vendor/faiss/faiss/IndexReplicas.h +62 -56
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +111 -172
- data/vendor/faiss/faiss/IndexScalarQuantizer.h +41 -59
- data/vendor/faiss/faiss/IndexShards.cpp +256 -240
- data/vendor/faiss/faiss/IndexShards.h +85 -73
- data/vendor/faiss/faiss/MatrixStats.cpp +112 -97
- data/vendor/faiss/faiss/MatrixStats.h +7 -10
- data/vendor/faiss/faiss/MetaIndexes.cpp +135 -157
- data/vendor/faiss/faiss/MetaIndexes.h +40 -34
- data/vendor/faiss/faiss/MetricType.h +7 -7
- data/vendor/faiss/faiss/VectorTransform.cpp +654 -475
- data/vendor/faiss/faiss/VectorTransform.h +64 -89
- data/vendor/faiss/faiss/clone_index.cpp +78 -73
- data/vendor/faiss/faiss/clone_index.h +4 -9
- data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +33 -38
- data/vendor/faiss/faiss/gpu/GpuAutoTune.h +11 -9
- data/vendor/faiss/faiss/gpu/GpuCloner.cpp +198 -171
- data/vendor/faiss/faiss/gpu/GpuCloner.h +53 -35
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.cpp +12 -14
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +27 -25
- data/vendor/faiss/faiss/gpu/GpuDistance.h +116 -112
- data/vendor/faiss/faiss/gpu/GpuFaissAssert.h +1 -2
- data/vendor/faiss/faiss/gpu/GpuIcmEncoder.h +60 -0
- data/vendor/faiss/faiss/gpu/GpuIndex.h +134 -137
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +76 -73
- data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +173 -162
- data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +67 -64
- data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +89 -86
- data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +150 -141
- data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +101 -103
- data/vendor/faiss/faiss/gpu/GpuIndicesOptions.h +17 -16
- data/vendor/faiss/faiss/gpu/GpuResources.cpp +116 -128
- data/vendor/faiss/faiss/gpu/GpuResources.h +182 -186
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +433 -422
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +131 -130
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +468 -456
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +25 -19
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +22 -20
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +9 -8
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +39 -44
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper.h +16 -14
- data/vendor/faiss/faiss/gpu/perf/PerfClustering.cpp +77 -71
- data/vendor/faiss/faiss/gpu/perf/PerfIVFPQAdd.cpp +109 -88
- data/vendor/faiss/faiss/gpu/perf/WriteIndex.cpp +75 -64
- data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +230 -215
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +80 -86
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +284 -277
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +416 -416
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +611 -517
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +166 -164
- data/vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp +61 -53
- data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +274 -238
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +73 -57
- data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +47 -50
- data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +79 -72
- data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +140 -146
- data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.h +69 -71
- data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +21 -16
- data/vendor/faiss/faiss/gpu/utils/Timer.cpp +25 -29
- data/vendor/faiss/faiss/gpu/utils/Timer.h +30 -29
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +503 -0
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +175 -0
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +90 -120
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +81 -65
- data/vendor/faiss/faiss/impl/FaissAssert.h +73 -58
- data/vendor/faiss/faiss/impl/FaissException.cpp +56 -48
- data/vendor/faiss/faiss/impl/FaissException.h +41 -29
- data/vendor/faiss/faiss/impl/HNSW.cpp +606 -617
- data/vendor/faiss/faiss/impl/HNSW.h +179 -200
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +855 -0
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +244 -0
- data/vendor/faiss/faiss/impl/NNDescent.cpp +487 -0
- data/vendor/faiss/faiss/impl/NNDescent.h +154 -0
- data/vendor/faiss/faiss/impl/NSG.cpp +679 -0
- data/vendor/faiss/faiss/impl/NSG.h +199 -0
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +484 -454
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +52 -55
- data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +26 -47
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +469 -459
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +76 -87
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +758 -0
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +188 -0
- data/vendor/faiss/faiss/impl/ResultHandler.h +96 -132
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +647 -707
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +48 -46
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +129 -131
- data/vendor/faiss/faiss/impl/ThreadedIndex.h +61 -55
- data/vendor/faiss/faiss/impl/index_read.cpp +631 -480
- data/vendor/faiss/faiss/impl/index_write.cpp +547 -407
- data/vendor/faiss/faiss/impl/io.cpp +76 -95
- data/vendor/faiss/faiss/impl/io.h +31 -41
- data/vendor/faiss/faiss/impl/io_macros.h +60 -29
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +301 -0
- data/vendor/faiss/faiss/impl/kmeans1d.h +48 -0
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +137 -186
- data/vendor/faiss/faiss/impl/lattice_Zn.h +40 -51
- data/vendor/faiss/faiss/impl/platform_macros.h +29 -8
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +77 -124
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +39 -48
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +41 -52
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +80 -117
- data/vendor/faiss/faiss/impl/simd_result_handlers.h +109 -137
- data/vendor/faiss/faiss/index_factory.cpp +619 -397
- data/vendor/faiss/faiss/index_factory.h +8 -6
- data/vendor/faiss/faiss/index_io.h +23 -26
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +67 -75
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +22 -24
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +96 -112
- data/vendor/faiss/faiss/invlists/DirectMap.h +29 -33
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +307 -364
- data/vendor/faiss/faiss/invlists/InvertedLists.h +151 -151
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +29 -34
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +17 -18
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +257 -293
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +50 -45
- data/vendor/faiss/faiss/python/python_callbacks.cpp +23 -26
- data/vendor/faiss/faiss/python/python_callbacks.h +9 -16
- data/vendor/faiss/faiss/utils/AlignedTable.h +79 -44
- data/vendor/faiss/faiss/utils/Heap.cpp +40 -48
- data/vendor/faiss/faiss/utils/Heap.h +186 -209
- data/vendor/faiss/faiss/utils/WorkerThread.cpp +67 -76
- data/vendor/faiss/faiss/utils/WorkerThread.h +32 -33
- data/vendor/faiss/faiss/utils/distances.cpp +305 -312
- data/vendor/faiss/faiss/utils/distances.h +170 -122
- data/vendor/faiss/faiss/utils/distances_simd.cpp +498 -508
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +117 -0
- data/vendor/faiss/faiss/utils/extra_distances.cpp +113 -232
- data/vendor/faiss/faiss/utils/extra_distances.h +30 -29
- data/vendor/faiss/faiss/utils/hamming-inl.h +260 -209
- data/vendor/faiss/faiss/utils/hamming.cpp +375 -469
- data/vendor/faiss/faiss/utils/hamming.h +62 -85
- data/vendor/faiss/faiss/utils/ordered_key_value.h +16 -18
- data/vendor/faiss/faiss/utils/partitioning.cpp +393 -318
- data/vendor/faiss/faiss/utils/partitioning.h +26 -21
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +78 -66
- data/vendor/faiss/faiss/utils/quantize_lut.h +22 -20
- data/vendor/faiss/faiss/utils/random.cpp +39 -63
- data/vendor/faiss/faiss/utils/random.h +13 -16
- data/vendor/faiss/faiss/utils/simdlib.h +4 -2
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +88 -85
- data/vendor/faiss/faiss/utils/simdlib_emulated.h +226 -165
- data/vendor/faiss/faiss/utils/simdlib_neon.h +832 -0
- data/vendor/faiss/faiss/utils/utils.cpp +304 -287
- data/vendor/faiss/faiss/utils/utils.h +54 -49
- metadata +29 -4
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#define FAISS_utils_h
|
|
18
18
|
|
|
19
19
|
#include <stdint.h>
|
|
20
|
+
#include <string>
|
|
20
21
|
|
|
21
22
|
#ifdef _MSC_VER
|
|
22
23
|
#define strtok_r strtok_s
|
|
@@ -24,29 +25,31 @@
|
|
|
24
25
|
|
|
25
26
|
#include <faiss/utils/Heap.h>
|
|
26
27
|
|
|
27
|
-
|
|
28
28
|
namespace faiss {
|
|
29
29
|
|
|
30
|
+
/****************************************************************************
|
|
31
|
+
* Get compile specific variables
|
|
32
|
+
***************************************************************************/
|
|
33
|
+
|
|
34
|
+
/// get compile options
|
|
35
|
+
std::string get_compile_options();
|
|
30
36
|
|
|
31
37
|
/**************************************************
|
|
32
38
|
* Get some stats about the system
|
|
33
|
-
**************************************************/
|
|
34
|
-
|
|
39
|
+
**************************************************/
|
|
35
40
|
|
|
36
41
|
/// ms elapsed since some arbitrary epoch
|
|
37
|
-
double getmillisecs
|
|
42
|
+
double getmillisecs();
|
|
38
43
|
|
|
39
44
|
/// get current RSS usage in kB
|
|
40
|
-
size_t get_mem_usage_kb
|
|
45
|
+
size_t get_mem_usage_kb();
|
|
41
46
|
|
|
42
|
-
|
|
43
|
-
uint64_t get_cycles ();
|
|
47
|
+
uint64_t get_cycles();
|
|
44
48
|
|
|
45
49
|
/***************************************************************************
|
|
46
50
|
* Misc matrix and vector manipulation functions
|
|
47
51
|
***************************************************************************/
|
|
48
52
|
|
|
49
|
-
|
|
50
53
|
/** compute c := a + bf * b for a, b and c tables
|
|
51
54
|
*
|
|
52
55
|
* @param n size of the tables
|
|
@@ -54,34 +57,37 @@ uint64_t get_cycles ();
|
|
|
54
57
|
* @param b size n
|
|
55
58
|
* @param c restult table, size n
|
|
56
59
|
*/
|
|
57
|
-
void fvec_madd
|
|
58
|
-
float bf, const float *b, float *c);
|
|
59
|
-
|
|
60
|
+
void fvec_madd(size_t n, const float* a, float bf, const float* b, float* c);
|
|
60
61
|
|
|
61
62
|
/** same as fvec_madd, also return index of the min of the result table
|
|
62
63
|
* @return index of the min of table c
|
|
63
64
|
*/
|
|
64
|
-
int fvec_madd_and_argmin
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
int fvec_madd_and_argmin(
|
|
66
|
+
size_t n,
|
|
67
|
+
const float* a,
|
|
68
|
+
float bf,
|
|
69
|
+
const float* b,
|
|
70
|
+
float* c);
|
|
67
71
|
|
|
68
72
|
/* perform a reflection (not an efficient implementation, just for test ) */
|
|
69
|
-
void reflection
|
|
70
|
-
|
|
73
|
+
void reflection(const float* u, float* x, size_t n, size_t d, size_t nu);
|
|
71
74
|
|
|
72
75
|
/** compute the Q of the QR decomposition for m > n
|
|
73
76
|
* @param a size n * m: input matrix and output Q
|
|
74
77
|
*/
|
|
75
|
-
void matrix_qr
|
|
78
|
+
void matrix_qr(int m, int n, float* a);
|
|
76
79
|
|
|
77
80
|
/** distances are supposed to be sorted. Sorts indices with same distance*/
|
|
78
|
-
void ranklist_handle_ties
|
|
81
|
+
void ranklist_handle_ties(int k, int64_t* idx, const float* dis);
|
|
79
82
|
|
|
80
|
-
/** count the number of
|
|
83
|
+
/** count the number of common elements between v1 and v2
|
|
81
84
|
* algorithm = sorting + bissection to avoid double-counting duplicates
|
|
82
85
|
*/
|
|
83
|
-
size_t ranklist_intersection_size
|
|
84
|
-
|
|
86
|
+
size_t ranklist_intersection_size(
|
|
87
|
+
size_t k1,
|
|
88
|
+
const int64_t* v1,
|
|
89
|
+
size_t k2,
|
|
90
|
+
const int64_t* v2);
|
|
85
91
|
|
|
86
92
|
/** merge a result table into another one
|
|
87
93
|
*
|
|
@@ -91,41 +97,38 @@ size_t ranklist_intersection_size (size_t k1, const int64_t *v1,
|
|
|
91
97
|
* @param translation add this value to all I1's indexes
|
|
92
98
|
* @return nb of values that were taken from the second table
|
|
93
99
|
*/
|
|
94
|
-
size_t merge_result_table_with
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
size_t merge_result_table_with(
|
|
101
|
+
size_t n,
|
|
102
|
+
size_t k,
|
|
103
|
+
int64_t* I0,
|
|
104
|
+
float* D0,
|
|
105
|
+
const int64_t* I1,
|
|
106
|
+
const float* D1,
|
|
107
|
+
bool keep_min = true,
|
|
108
|
+
int64_t translation = 0);
|
|
100
109
|
|
|
101
110
|
/// a balanced assignment has a IF of 1
|
|
102
|
-
double imbalance_factor
|
|
111
|
+
double imbalance_factor(int n, int k, const int64_t* assign);
|
|
103
112
|
|
|
104
113
|
/// same, takes a histogram as input
|
|
105
|
-
double imbalance_factor
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
void fvec_argsort (size_t n, const float *vals,
|
|
109
|
-
size_t *perm);
|
|
114
|
+
double imbalance_factor(int k, const int* hist);
|
|
110
115
|
|
|
111
|
-
void
|
|
112
|
-
size_t *perm);
|
|
116
|
+
void fvec_argsort(size_t n, const float* vals, size_t* perm);
|
|
113
117
|
|
|
118
|
+
void fvec_argsort_parallel(size_t n, const float* vals, size_t* perm);
|
|
114
119
|
|
|
115
120
|
/// compute histogram on v
|
|
116
|
-
int ivec_hist
|
|
121
|
+
int ivec_hist(size_t n, const int* v, int vmax, int* hist);
|
|
117
122
|
|
|
118
123
|
/** Compute histogram of bits on a code array
|
|
119
124
|
*
|
|
120
125
|
* @param codes size(n, nbits / 8)
|
|
121
126
|
* @param hist size(nbits): nb of 1s in the array of codes
|
|
122
127
|
*/
|
|
123
|
-
void bincode_hist(size_t n, size_t nbits, const uint8_t
|
|
124
|
-
|
|
128
|
+
void bincode_hist(size_t n, size_t nbits, const uint8_t* codes, int* hist);
|
|
125
129
|
|
|
126
130
|
/// compute a checksum on a table.
|
|
127
|
-
size_t ivec_checksum
|
|
128
|
-
|
|
131
|
+
size_t ivec_checksum(size_t n, const int* a);
|
|
129
132
|
|
|
130
133
|
/** random subsamples a set of vectors if there are too many of them
|
|
131
134
|
*
|
|
@@ -136,9 +139,13 @@ size_t ivec_checksum (size_t n, const int *a);
|
|
|
136
139
|
* @param seed random seed to use for sampling
|
|
137
140
|
* @return x or an array allocated with new [] with *n vectors
|
|
138
141
|
*/
|
|
139
|
-
const float
|
|
140
|
-
|
|
141
|
-
|
|
142
|
+
const float* fvecs_maybe_subsample(
|
|
143
|
+
size_t d,
|
|
144
|
+
size_t* n,
|
|
145
|
+
size_t nmax,
|
|
146
|
+
const float* x,
|
|
147
|
+
bool verbose = false,
|
|
148
|
+
int64_t seed = 1234);
|
|
142
149
|
|
|
143
150
|
/** Convert binary vector to +1/-1 valued float vector.
|
|
144
151
|
*
|
|
@@ -146,7 +153,7 @@ const float *fvecs_maybe_subsample (
|
|
|
146
153
|
* @param x_in input binary vector (uint8_t table of size d / 8)
|
|
147
154
|
* @param x_out output float vector (float table of size d)
|
|
148
155
|
*/
|
|
149
|
-
void binary_to_real(size_t d, const uint8_t
|
|
156
|
+
void binary_to_real(size_t d, const uint8_t* x_in, float* x_out);
|
|
150
157
|
|
|
151
158
|
/** Convert float vector to binary vector. Components > 0 are converted to 1,
|
|
152
159
|
* others to 0.
|
|
@@ -155,16 +162,14 @@ void binary_to_real(size_t d, const uint8_t *x_in, float *x_out);
|
|
|
155
162
|
* @param x_in input float vector (float table of size d)
|
|
156
163
|
* @param x_out output binary vector (uint8_t table of size d / 8)
|
|
157
164
|
*/
|
|
158
|
-
void real_to_binary(size_t d, const float
|
|
159
|
-
|
|
165
|
+
void real_to_binary(size_t d, const float* x_in, uint8_t* x_out);
|
|
160
166
|
|
|
161
167
|
/** A reasonable hashing function */
|
|
162
|
-
uint64_t hash_bytes
|
|
168
|
+
uint64_t hash_bytes(const uint8_t* bytes, int64_t n);
|
|
163
169
|
|
|
164
170
|
/** Whether OpenMP annotations were respected. */
|
|
165
171
|
bool check_openmp();
|
|
166
172
|
|
|
167
|
-
} //
|
|
168
|
-
|
|
173
|
+
} // namespace faiss
|
|
169
174
|
|
|
170
175
|
#endif /* FAISS_utils_h */
|
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.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rice
|
|
@@ -71,6 +71,8 @@ files:
|
|
|
71
71
|
- vendor/faiss/faiss/Index.h
|
|
72
72
|
- vendor/faiss/faiss/Index2Layer.cpp
|
|
73
73
|
- vendor/faiss/faiss/Index2Layer.h
|
|
74
|
+
- vendor/faiss/faiss/IndexAdditiveQuantizer.cpp
|
|
75
|
+
- vendor/faiss/faiss/IndexAdditiveQuantizer.h
|
|
74
76
|
- vendor/faiss/faiss/IndexBinary.cpp
|
|
75
77
|
- vendor/faiss/faiss/IndexBinary.h
|
|
76
78
|
- vendor/faiss/faiss/IndexBinaryFlat.cpp
|
|
@@ -85,10 +87,14 @@ files:
|
|
|
85
87
|
- vendor/faiss/faiss/IndexBinaryIVF.h
|
|
86
88
|
- vendor/faiss/faiss/IndexFlat.cpp
|
|
87
89
|
- vendor/faiss/faiss/IndexFlat.h
|
|
90
|
+
- vendor/faiss/faiss/IndexFlatCodes.cpp
|
|
91
|
+
- vendor/faiss/faiss/IndexFlatCodes.h
|
|
88
92
|
- vendor/faiss/faiss/IndexHNSW.cpp
|
|
89
93
|
- vendor/faiss/faiss/IndexHNSW.h
|
|
90
94
|
- vendor/faiss/faiss/IndexIVF.cpp
|
|
91
95
|
- vendor/faiss/faiss/IndexIVF.h
|
|
96
|
+
- vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp
|
|
97
|
+
- vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h
|
|
92
98
|
- vendor/faiss/faiss/IndexIVFFlat.cpp
|
|
93
99
|
- vendor/faiss/faiss/IndexIVFFlat.h
|
|
94
100
|
- vendor/faiss/faiss/IndexIVFPQ.cpp
|
|
@@ -103,6 +109,10 @@ files:
|
|
|
103
109
|
- vendor/faiss/faiss/IndexLSH.h
|
|
104
110
|
- vendor/faiss/faiss/IndexLattice.cpp
|
|
105
111
|
- vendor/faiss/faiss/IndexLattice.h
|
|
112
|
+
- vendor/faiss/faiss/IndexNNDescent.cpp
|
|
113
|
+
- vendor/faiss/faiss/IndexNNDescent.h
|
|
114
|
+
- vendor/faiss/faiss/IndexNSG.cpp
|
|
115
|
+
- vendor/faiss/faiss/IndexNSG.h
|
|
106
116
|
- vendor/faiss/faiss/IndexPQ.cpp
|
|
107
117
|
- vendor/faiss/faiss/IndexPQ.h
|
|
108
118
|
- vendor/faiss/faiss/IndexPQFastScan.cpp
|
|
@@ -134,6 +144,7 @@ files:
|
|
|
134
144
|
- vendor/faiss/faiss/gpu/GpuClonerOptions.h
|
|
135
145
|
- vendor/faiss/faiss/gpu/GpuDistance.h
|
|
136
146
|
- vendor/faiss/faiss/gpu/GpuFaissAssert.h
|
|
147
|
+
- vendor/faiss/faiss/gpu/GpuIcmEncoder.h
|
|
137
148
|
- vendor/faiss/faiss/gpu/GpuIndex.h
|
|
138
149
|
- vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h
|
|
139
150
|
- vendor/faiss/faiss/gpu/GpuIndexFlat.h
|
|
@@ -171,6 +182,8 @@ files:
|
|
|
171
182
|
- vendor/faiss/faiss/gpu/utils/StaticUtils.h
|
|
172
183
|
- vendor/faiss/faiss/gpu/utils/Timer.cpp
|
|
173
184
|
- vendor/faiss/faiss/gpu/utils/Timer.h
|
|
185
|
+
- vendor/faiss/faiss/impl/AdditiveQuantizer.cpp
|
|
186
|
+
- vendor/faiss/faiss/impl/AdditiveQuantizer.h
|
|
174
187
|
- vendor/faiss/faiss/impl/AuxIndexStructures.cpp
|
|
175
188
|
- vendor/faiss/faiss/impl/AuxIndexStructures.h
|
|
176
189
|
- vendor/faiss/faiss/impl/FaissAssert.h
|
|
@@ -178,11 +191,19 @@ files:
|
|
|
178
191
|
- vendor/faiss/faiss/impl/FaissException.h
|
|
179
192
|
- vendor/faiss/faiss/impl/HNSW.cpp
|
|
180
193
|
- vendor/faiss/faiss/impl/HNSW.h
|
|
194
|
+
- vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp
|
|
195
|
+
- vendor/faiss/faiss/impl/LocalSearchQuantizer.h
|
|
196
|
+
- vendor/faiss/faiss/impl/NNDescent.cpp
|
|
197
|
+
- vendor/faiss/faiss/impl/NNDescent.h
|
|
198
|
+
- vendor/faiss/faiss/impl/NSG.cpp
|
|
199
|
+
- vendor/faiss/faiss/impl/NSG.h
|
|
181
200
|
- vendor/faiss/faiss/impl/PolysemousTraining.cpp
|
|
182
201
|
- vendor/faiss/faiss/impl/PolysemousTraining.h
|
|
183
202
|
- vendor/faiss/faiss/impl/ProductQuantizer-inl.h
|
|
184
203
|
- vendor/faiss/faiss/impl/ProductQuantizer.cpp
|
|
185
204
|
- vendor/faiss/faiss/impl/ProductQuantizer.h
|
|
205
|
+
- vendor/faiss/faiss/impl/ResidualQuantizer.cpp
|
|
206
|
+
- vendor/faiss/faiss/impl/ResidualQuantizer.h
|
|
186
207
|
- vendor/faiss/faiss/impl/ResultHandler.h
|
|
187
208
|
- vendor/faiss/faiss/impl/ScalarQuantizer.cpp
|
|
188
209
|
- vendor/faiss/faiss/impl/ScalarQuantizer.h
|
|
@@ -193,6 +214,8 @@ files:
|
|
|
193
214
|
- vendor/faiss/faiss/impl/io.cpp
|
|
194
215
|
- vendor/faiss/faiss/impl/io.h
|
|
195
216
|
- vendor/faiss/faiss/impl/io_macros.h
|
|
217
|
+
- vendor/faiss/faiss/impl/kmeans1d.cpp
|
|
218
|
+
- vendor/faiss/faiss/impl/kmeans1d.h
|
|
196
219
|
- vendor/faiss/faiss/impl/lattice_Zn.cpp
|
|
197
220
|
- vendor/faiss/faiss/impl/lattice_Zn.h
|
|
198
221
|
- vendor/faiss/faiss/impl/platform_macros.h
|
|
@@ -224,6 +247,7 @@ files:
|
|
|
224
247
|
- vendor/faiss/faiss/utils/distances.cpp
|
|
225
248
|
- vendor/faiss/faiss/utils/distances.h
|
|
226
249
|
- vendor/faiss/faiss/utils/distances_simd.cpp
|
|
250
|
+
- vendor/faiss/faiss/utils/extra_distances-inl.h
|
|
227
251
|
- vendor/faiss/faiss/utils/extra_distances.cpp
|
|
228
252
|
- vendor/faiss/faiss/utils/extra_distances.h
|
|
229
253
|
- vendor/faiss/faiss/utils/hamming-inl.h
|
|
@@ -239,9 +263,10 @@ files:
|
|
|
239
263
|
- vendor/faiss/faiss/utils/simdlib.h
|
|
240
264
|
- vendor/faiss/faiss/utils/simdlib_avx2.h
|
|
241
265
|
- vendor/faiss/faiss/utils/simdlib_emulated.h
|
|
266
|
+
- vendor/faiss/faiss/utils/simdlib_neon.h
|
|
242
267
|
- vendor/faiss/faiss/utils/utils.cpp
|
|
243
268
|
- vendor/faiss/faiss/utils/utils.h
|
|
244
|
-
homepage: https://github.com/ankane/faiss
|
|
269
|
+
homepage: https://github.com/ankane/faiss-ruby
|
|
245
270
|
licenses:
|
|
246
271
|
- MIT
|
|
247
272
|
metadata: {}
|
|
@@ -260,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
260
285
|
- !ruby/object:Gem::Version
|
|
261
286
|
version: '0'
|
|
262
287
|
requirements: []
|
|
263
|
-
rubygems_version: 3.
|
|
288
|
+
rubygems_version: 3.3.3
|
|
264
289
|
signing_key:
|
|
265
290
|
specification_version: 4
|
|
266
291
|
summary: Efficient similarity search and clustering for Ruby
|