faiss 0.2.5 → 0.2.7
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 +9 -0
- data/LICENSE.txt +1 -1
- data/ext/faiss/extconf.rb +1 -1
- data/ext/faiss/index.cpp +13 -0
- data/lib/faiss/version.rb +1 -1
- data/lib/faiss.rb +2 -2
- data/vendor/faiss/faiss/AutoTune.cpp +15 -4
- data/vendor/faiss/faiss/AutoTune.h +0 -1
- data/vendor/faiss/faiss/Clustering.cpp +1 -5
- data/vendor/faiss/faiss/Clustering.h +0 -2
- data/vendor/faiss/faiss/IVFlib.h +0 -2
- data/vendor/faiss/faiss/Index.h +1 -2
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +17 -3
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.h +10 -1
- data/vendor/faiss/faiss/IndexBinary.h +0 -1
- data/vendor/faiss/faiss/IndexBinaryFlat.cpp +2 -1
- data/vendor/faiss/faiss/IndexBinaryFlat.h +4 -0
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +1 -3
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +273 -48
- data/vendor/faiss/faiss/IndexBinaryIVF.h +18 -11
- data/vendor/faiss/faiss/IndexFastScan.cpp +13 -10
- data/vendor/faiss/faiss/IndexFastScan.h +5 -1
- data/vendor/faiss/faiss/IndexFlat.cpp +16 -3
- data/vendor/faiss/faiss/IndexFlat.h +1 -1
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +5 -0
- data/vendor/faiss/faiss/IndexFlatCodes.h +7 -2
- data/vendor/faiss/faiss/IndexHNSW.cpp +3 -6
- data/vendor/faiss/faiss/IndexHNSW.h +0 -1
- data/vendor/faiss/faiss/IndexIDMap.cpp +4 -4
- data/vendor/faiss/faiss/IndexIDMap.h +0 -2
- data/vendor/faiss/faiss/IndexIVF.cpp +155 -129
- data/vendor/faiss/faiss/IndexIVF.h +121 -61
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +2 -2
- data/vendor/faiss/faiss/IndexIVFFastScan.cpp +12 -11
- data/vendor/faiss/faiss/IndexIVFFastScan.h +6 -1
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +221 -165
- data/vendor/faiss/faiss/IndexIVFPQ.h +1 -0
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +6 -1
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +0 -2
- data/vendor/faiss/faiss/IndexNNDescent.cpp +1 -2
- data/vendor/faiss/faiss/IndexNNDescent.h +0 -1
- data/vendor/faiss/faiss/IndexNSG.cpp +1 -2
- data/vendor/faiss/faiss/IndexPQ.cpp +7 -9
- data/vendor/faiss/faiss/IndexRefine.cpp +1 -1
- data/vendor/faiss/faiss/IndexReplicas.cpp +3 -4
- data/vendor/faiss/faiss/IndexReplicas.h +0 -1
- data/vendor/faiss/faiss/IndexRowwiseMinMax.cpp +8 -1
- data/vendor/faiss/faiss/IndexRowwiseMinMax.h +7 -0
- data/vendor/faiss/faiss/IndexShards.cpp +26 -109
- data/vendor/faiss/faiss/IndexShards.h +2 -3
- data/vendor/faiss/faiss/IndexShardsIVF.cpp +246 -0
- data/vendor/faiss/faiss/IndexShardsIVF.h +42 -0
- data/vendor/faiss/faiss/MetaIndexes.cpp +86 -0
- data/vendor/faiss/faiss/MetaIndexes.h +29 -0
- data/vendor/faiss/faiss/MetricType.h +14 -0
- data/vendor/faiss/faiss/VectorTransform.cpp +8 -10
- data/vendor/faiss/faiss/VectorTransform.h +1 -3
- data/vendor/faiss/faiss/clone_index.cpp +232 -18
- data/vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h +25 -3
- data/vendor/faiss/faiss/cppcontrib/detail/CoarseBitType.h +7 -0
- data/vendor/faiss/faiss/cppcontrib/detail/UintReader.h +78 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h +20 -6
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +7 -1
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-neon-inl.h +21 -7
- data/vendor/faiss/faiss/cppcontrib/sa_decode/MinMax-inl.h +7 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/MinMaxFP16-inl.h +7 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h +10 -3
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h +7 -1
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-neon-inl.h +11 -3
- data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +25 -2
- data/vendor/faiss/faiss/gpu/GpuCloner.cpp +76 -29
- data/vendor/faiss/faiss/gpu/GpuCloner.h +2 -2
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +14 -13
- data/vendor/faiss/faiss/gpu/GpuDistance.h +18 -6
- data/vendor/faiss/faiss/gpu/GpuIndex.h +23 -21
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +10 -10
- data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +11 -12
- data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +29 -50
- data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +3 -3
- data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +8 -8
- data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +4 -4
- data/vendor/faiss/faiss/gpu/impl/IndexUtils.h +2 -5
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +9 -7
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +4 -4
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +2 -2
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper.h +1 -1
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +55 -6
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +20 -6
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +95 -25
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +67 -16
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +4 -4
- data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +7 -7
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +4 -4
- data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +1 -1
- data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +6 -0
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +0 -7
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +9 -9
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +1 -1
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +2 -7
- data/vendor/faiss/faiss/impl/CodePacker.cpp +67 -0
- data/vendor/faiss/faiss/impl/CodePacker.h +71 -0
- data/vendor/faiss/faiss/impl/DistanceComputer.h +0 -2
- data/vendor/faiss/faiss/impl/HNSW.cpp +3 -7
- data/vendor/faiss/faiss/impl/HNSW.h +6 -9
- data/vendor/faiss/faiss/impl/IDSelector.cpp +1 -1
- data/vendor/faiss/faiss/impl/IDSelector.h +39 -1
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +62 -51
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +11 -12
- data/vendor/faiss/faiss/impl/NNDescent.cpp +3 -9
- data/vendor/faiss/faiss/impl/NNDescent.h +10 -10
- data/vendor/faiss/faiss/impl/NSG.cpp +1 -6
- data/vendor/faiss/faiss/impl/NSG.h +4 -7
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +1 -15
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +11 -10
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +0 -7
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +25 -12
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +2 -4
- data/vendor/faiss/faiss/impl/Quantizer.h +6 -3
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +796 -174
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +16 -8
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +3 -5
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +4 -4
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +3 -3
- data/vendor/faiss/faiss/impl/ThreadedIndex.h +4 -4
- data/vendor/faiss/faiss/impl/code_distance/code_distance-avx2.h +291 -0
- data/vendor/faiss/faiss/impl/code_distance/code_distance-generic.h +74 -0
- data/vendor/faiss/faiss/impl/code_distance/code_distance.h +123 -0
- data/vendor/faiss/faiss/impl/code_distance/code_distance_avx512.h +102 -0
- data/vendor/faiss/faiss/impl/index_read.cpp +13 -10
- data/vendor/faiss/faiss/impl/index_write.cpp +3 -4
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +0 -1
- data/vendor/faiss/faiss/impl/kmeans1d.h +3 -3
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +1 -1
- data/vendor/faiss/faiss/impl/platform_macros.h +61 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +48 -4
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +18 -4
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +2 -2
- data/vendor/faiss/faiss/index_factory.cpp +8 -10
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +29 -12
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +8 -2
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +1 -1
- data/vendor/faiss/faiss/invlists/DirectMap.h +2 -4
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +118 -18
- data/vendor/faiss/faiss/invlists/InvertedLists.h +44 -4
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +3 -3
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +1 -1
- data/vendor/faiss/faiss/python/python_callbacks.cpp +1 -1
- data/vendor/faiss/faiss/python/python_callbacks.h +1 -1
- data/vendor/faiss/faiss/utils/AlignedTable.h +3 -1
- data/vendor/faiss/faiss/utils/Heap.cpp +139 -3
- data/vendor/faiss/faiss/utils/Heap.h +35 -1
- data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +84 -0
- data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +196 -0
- data/vendor/faiss/faiss/utils/approx_topk/generic.h +138 -0
- data/vendor/faiss/faiss/utils/approx_topk/mode.h +34 -0
- data/vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h +367 -0
- data/vendor/faiss/faiss/utils/distances.cpp +61 -7
- data/vendor/faiss/faiss/utils/distances.h +11 -0
- data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +346 -0
- data/vendor/faiss/faiss/utils/distances_fused/avx512.h +36 -0
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +42 -0
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +40 -0
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +352 -0
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.h +32 -0
- data/vendor/faiss/faiss/utils/distances_simd.cpp +515 -327
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +17 -1
- data/vendor/faiss/faiss/utils/extra_distances.cpp +37 -8
- data/vendor/faiss/faiss/utils/extra_distances.h +2 -1
- data/vendor/faiss/faiss/utils/fp16-fp16c.h +7 -0
- data/vendor/faiss/faiss/utils/fp16-inl.h +7 -0
- data/vendor/faiss/faiss/utils/fp16.h +7 -0
- data/vendor/faiss/faiss/utils/hamming-inl.h +0 -456
- data/vendor/faiss/faiss/utils/hamming.cpp +104 -120
- data/vendor/faiss/faiss/utils/hamming.h +21 -10
- data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +535 -0
- data/vendor/faiss/faiss/utils/hamming_distance/common.h +48 -0
- data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +519 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +26 -0
- data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +614 -0
- data/vendor/faiss/faiss/utils/partitioning.cpp +21 -25
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +344 -3
- data/vendor/faiss/faiss/utils/simdlib_emulated.h +390 -0
- data/vendor/faiss/faiss/utils/simdlib_neon.h +655 -130
- data/vendor/faiss/faiss/utils/sorting.cpp +692 -0
- data/vendor/faiss/faiss/utils/sorting.h +71 -0
- data/vendor/faiss/faiss/utils/transpose/transpose-avx2-inl.h +165 -0
- data/vendor/faiss/faiss/utils/utils.cpp +4 -176
- data/vendor/faiss/faiss/utils/utils.h +2 -9
- metadata +30 -4
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.cpp +0 -26
@@ -8,7 +8,6 @@
|
|
8
8
|
// -*- c++ -*-
|
9
9
|
|
10
10
|
#include <faiss/impl/PolysemousTraining.h>
|
11
|
-
#include "faiss/impl/FaissAssert.h"
|
12
11
|
|
13
12
|
#include <omp.h>
|
14
13
|
#include <stdint.h>
|
@@ -36,19 +35,6 @@ namespace faiss {
|
|
36
35
|
* Optimization code
|
37
36
|
****************************************************/
|
38
37
|
|
39
|
-
SimulatedAnnealingParameters::SimulatedAnnealingParameters() {
|
40
|
-
// set some reasonable defaults for the optimization
|
41
|
-
init_temperature = 0.7;
|
42
|
-
temperature_decay = pow(0.9, 1 / 500.);
|
43
|
-
// reduce by a factor 0.9 every 500 it
|
44
|
-
n_iter = 500000;
|
45
|
-
n_redo = 2;
|
46
|
-
seed = 123;
|
47
|
-
verbose = 0;
|
48
|
-
only_bit_flips = false;
|
49
|
-
init_random = false;
|
50
|
-
}
|
51
|
-
|
52
38
|
// what would the cost update be if iw and jw were swapped?
|
53
39
|
// default implementation just computes both and computes the difference
|
54
40
|
double PermutationObjective::cost_update(const int* perm, int iw, int jw)
|
@@ -906,7 +892,7 @@ void PolysemousTraining::optimize_ranking(
|
|
906
892
|
ScopeDeleter1<PermutationObjective> del(obj);
|
907
893
|
|
908
894
|
if (verbose > 0) {
|
909
|
-
printf(" m=%d, nq=%zd, nb=%zd,
|
895
|
+
printf(" m=%d, nq=%zd, nb=%zd, initialize RankingScore "
|
910
896
|
"in %.3f ms\n",
|
911
897
|
m,
|
912
898
|
nq,
|
@@ -17,18 +17,19 @@ namespace faiss {
|
|
17
17
|
/// parameters used for the simulated annealing method
|
18
18
|
struct SimulatedAnnealingParameters {
|
19
19
|
// optimization parameters
|
20
|
-
double init_temperature;
|
21
|
-
|
22
|
-
|
23
|
-
int n_iter;
|
24
|
-
int n_redo;
|
25
|
-
int seed;
|
26
|
-
int verbose;
|
27
|
-
bool only_bit_flips; // restrict permutation changes to bit flips
|
28
|
-
bool init_random
|
20
|
+
double init_temperature = 0.7; // init probability of accepting a bad swap
|
21
|
+
// at each iteration the temp is multiplied by this
|
22
|
+
double temperature_decay = 0.9997893011688015; // = 0.9^(1/500)
|
23
|
+
int n_iter = 500000; // nb of iterations
|
24
|
+
int n_redo = 2; // nb of runs of the simulation
|
25
|
+
int seed = 123; // random seed
|
26
|
+
int verbose = 0;
|
27
|
+
bool only_bit_flips = false; // restrict permutation changes to bit flips
|
28
|
+
bool init_random =
|
29
|
+
false; // initialize with a random permutation (not identity)
|
29
30
|
|
30
31
|
// set reasonable defaults
|
31
|
-
SimulatedAnnealingParameters()
|
32
|
+
SimulatedAnnealingParameters() {}
|
32
33
|
};
|
33
34
|
|
34
35
|
/// abstract class for the loss function
|
@@ -65,13 +65,6 @@ void ProductAdditiveQuantizer::init(
|
|
65
65
|
M += q->M;
|
66
66
|
nbits.insert(nbits.end(), q->nbits.begin(), q->nbits.end());
|
67
67
|
}
|
68
|
-
verbose = false;
|
69
|
-
is_trained = false;
|
70
|
-
norm_max = norm_min = NAN;
|
71
|
-
code_size = 0;
|
72
|
-
tot_bits = 0;
|
73
|
-
total_codebook_size = 0;
|
74
|
-
only_8bit = false;
|
75
68
|
set_derived_values();
|
76
69
|
|
77
70
|
// ProductAdditiveQuantizer
|
@@ -421,15 +421,28 @@ void ProductQuantizer::compute_codes(const float* x, uint8_t* codes, size_t n)
|
|
421
421
|
|
422
422
|
void ProductQuantizer::compute_distance_table(const float* x, float* dis_table)
|
423
423
|
const {
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
424
|
+
if (transposed_centroids.empty()) {
|
425
|
+
// use regular version
|
426
|
+
for (size_t m = 0; m < M; m++) {
|
427
|
+
fvec_L2sqr_ny(
|
428
|
+
dis_table + m * ksub,
|
429
|
+
x + m * dsub,
|
430
|
+
get_centroids(m, 0),
|
431
|
+
dsub,
|
432
|
+
ksub);
|
433
|
+
}
|
434
|
+
} else {
|
435
|
+
// transposed centroids are available, use'em
|
436
|
+
for (size_t m = 0; m < M; m++) {
|
437
|
+
fvec_L2sqr_ny_transposed(
|
438
|
+
dis_table + m * ksub,
|
439
|
+
x + m * dsub,
|
440
|
+
transposed_centroids.data() + m * ksub,
|
441
|
+
centroids_sq_lengths.data() + m * ksub,
|
442
|
+
dsub,
|
443
|
+
M * ksub,
|
444
|
+
ksub);
|
445
|
+
}
|
433
446
|
}
|
434
447
|
}
|
435
448
|
|
@@ -460,7 +473,7 @@ void ProductQuantizer::compute_distance_tables(
|
|
460
473
|
#endif
|
461
474
|
if (dsub < 16) {
|
462
475
|
|
463
|
-
#pragma omp parallel for
|
476
|
+
#pragma omp parallel for if (nx > 1)
|
464
477
|
for (int64_t i = 0; i < nx; i++) {
|
465
478
|
compute_distance_table(x + i * d, dis_tables + i * ksub * M);
|
466
479
|
}
|
@@ -494,7 +507,7 @@ void ProductQuantizer::compute_inner_prod_tables(
|
|
494
507
|
#endif
|
495
508
|
if (dsub < 16) {
|
496
509
|
|
497
|
-
#pragma omp parallel for
|
510
|
+
#pragma omp parallel for if (nx > 1)
|
498
511
|
for (int64_t i = 0; i < nx; i++) {
|
499
512
|
compute_inner_prod_table(x + i * d, dis_tables + i * ksub * M);
|
500
513
|
}
|
@@ -668,7 +681,7 @@ void pq_knn_search_with_tables(
|
|
668
681
|
size_t k = res->k, nx = res->nh;
|
669
682
|
size_t ksub = pq.ksub, M = pq.M;
|
670
683
|
|
671
|
-
#pragma omp parallel for
|
684
|
+
#pragma omp parallel for if (nx > 1)
|
672
685
|
for (int64_t i = 0; i < nx; i++) {
|
673
686
|
/* query preparation for asymmetric search: compute look-up tables */
|
674
687
|
const float* dis_table = dis_tables + i * ksub * M;
|
@@ -23,8 +23,6 @@ namespace faiss {
|
|
23
23
|
|
24
24
|
/** Product Quantizer. Implemented only for METRIC_L2 */
|
25
25
|
struct ProductQuantizer : Quantizer {
|
26
|
-
using idx_t = Index::idx_t;
|
27
|
-
|
28
26
|
size_t M; ///< number of subquantizers
|
29
27
|
size_t nbits; ///< number of bits per quantization index
|
30
28
|
|
@@ -38,8 +36,8 @@ struct ProductQuantizer : Quantizer {
|
|
38
36
|
Train_default,
|
39
37
|
Train_hot_start, ///< the centroids are already initialized
|
40
38
|
Train_shared, ///< share dictionary accross PQ segments
|
41
|
-
Train_hypercube, ///<
|
42
|
-
Train_hypercube_pca, ///<
|
39
|
+
Train_hypercube, ///< initialize centroids with nbits-D hypercube
|
40
|
+
Train_hypercube_pca, ///< initialize centroids with nbits-D hypercube
|
43
41
|
};
|
44
42
|
train_type_t train_type;
|
45
43
|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
|
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
|
+
*/
|
2
7
|
|
3
8
|
#pragma once
|
4
9
|
|
@@ -8,8 +13,6 @@ namespace faiss {
|
|
8
13
|
|
9
14
|
/** Product Quantizer. Implemented only for METRIC_L2 */
|
10
15
|
struct Quantizer {
|
11
|
-
using idx_t = Index::idx_t;
|
12
|
-
|
13
16
|
size_t d; ///< size of the input vectors
|
14
17
|
size_t code_size; ///< bytes per indexed vector
|
15
18
|
|