faiss 0.6.0 → 0.6.1
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 +4 -0
- data/ext/faiss/extconf.rb +2 -1
- data/ext/faiss/{index_rb.cpp → index.cpp} +1 -1
- data/ext/faiss/index_binary.cpp +1 -1
- data/ext/faiss/kmeans.cpp +1 -1
- data/ext/faiss/pca_matrix.cpp +1 -1
- data/ext/faiss/product_quantizer.cpp +1 -1
- data/ext/faiss/{utils_rb.cpp → utils.cpp} +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +93 -80
- data/vendor/faiss/faiss/Clustering.cpp +39 -240
- data/vendor/faiss/faiss/Clustering.h +6 -0
- data/vendor/faiss/faiss/IVFlib.cpp +41 -21
- data/vendor/faiss/faiss/Index.cpp +6 -5
- data/vendor/faiss/faiss/Index.h +5 -5
- data/vendor/faiss/faiss/Index2Layer.cpp +37 -53
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +49 -37
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +36 -34
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.h +4 -1
- data/vendor/faiss/faiss/IndexBinary.cpp +5 -3
- data/vendor/faiss/faiss/IndexBinary.h +4 -4
- data/vendor/faiss/faiss/IndexBinaryFlat.cpp +1 -1
- data/vendor/faiss/faiss/IndexBinaryFlat.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +4 -4
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +84 -92
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +9 -3
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +45 -236
- data/vendor/faiss/faiss/IndexBinaryHash.h +6 -6
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +87 -415
- data/vendor/faiss/faiss/IndexFastScan.cpp +72 -109
- data/vendor/faiss/faiss/IndexFastScan.h +25 -23
- data/vendor/faiss/faiss/IndexFlat.cpp +27 -20
- data/vendor/faiss/faiss/IndexFlat.h +21 -18
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +42 -19
- data/vendor/faiss/faiss/IndexHNSW.cpp +283 -145
- data/vendor/faiss/faiss/IndexHNSW.h +16 -2
- data/vendor/faiss/faiss/IndexIDMap.cpp +25 -21
- data/vendor/faiss/faiss/IndexIDMap.h +9 -7
- data/vendor/faiss/faiss/IndexIVF.cpp +465 -362
- data/vendor/faiss/faiss/IndexIVF.h +33 -12
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +77 -74
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +96 -93
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +4 -1
- data/vendor/faiss/faiss/IndexIVFFastScan.cpp +357 -238
- data/vendor/faiss/faiss/IndexIVFFastScan.h +42 -41
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +36 -68
- data/vendor/faiss/faiss/IndexIVFFlat.h +32 -0
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.cpp +53 -30
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.h +3 -1
- data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp +18 -15
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +71 -843
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +151 -121
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +3 -0
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +21 -17
- data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +26 -39
- data/vendor/faiss/faiss/IndexIVFRaBitQ.h +2 -1
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp +475 -476
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.h +248 -93
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +41 -127
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +1 -1
- data/vendor/faiss/faiss/IndexLSH.cpp +36 -19
- data/vendor/faiss/faiss/IndexLattice.cpp +13 -13
- data/vendor/faiss/faiss/IndexNNDescent.cpp +36 -21
- data/vendor/faiss/faiss/IndexNNDescent.h +2 -2
- data/vendor/faiss/faiss/IndexNSG.cpp +39 -23
- data/vendor/faiss/faiss/IndexNeuralNetCodec.cpp +31 -11
- data/vendor/faiss/faiss/IndexPQ.cpp +128 -221
- data/vendor/faiss/faiss/IndexPQ.h +3 -2
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +20 -14
- data/vendor/faiss/faiss/IndexPQFastScan.h +3 -0
- data/vendor/faiss/faiss/IndexPreTransform.cpp +25 -18
- data/vendor/faiss/faiss/IndexPreTransform.h +1 -1
- data/vendor/faiss/faiss/IndexRaBitQ.cpp +11 -36
- data/vendor/faiss/faiss/IndexRaBitQ.h +2 -1
- data/vendor/faiss/faiss/IndexRaBitQFastScan.cpp +41 -277
- data/vendor/faiss/faiss/IndexRaBitQFastScan.h +183 -27
- data/vendor/faiss/faiss/IndexRefine.cpp +30 -25
- data/vendor/faiss/faiss/IndexRefine.h +4 -4
- data/vendor/faiss/faiss/IndexReplicas.cpp +6 -6
- data/vendor/faiss/faiss/IndexRowwiseMinMax.cpp +15 -14
- data/vendor/faiss/faiss/IndexRowwiseMinMax.h +1 -1
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +82 -14
- data/vendor/faiss/faiss/IndexShards.cpp +10 -9
- data/vendor/faiss/faiss/IndexShardsIVF.cpp +21 -15
- data/vendor/faiss/faiss/MatrixStats.cpp +5 -4
- data/vendor/faiss/faiss/MetaIndexes.cpp +19 -17
- data/vendor/faiss/faiss/MetaIndexes.h +1 -1
- data/vendor/faiss/faiss/MetricType.h +14 -7
- data/vendor/faiss/faiss/SuperKMeans.cpp +656 -0
- data/vendor/faiss/faiss/SuperKMeans.h +97 -0
- data/vendor/faiss/faiss/VectorTransform.cpp +237 -149
- data/vendor/faiss/faiss/VectorTransform.h +16 -16
- data/vendor/faiss/faiss/build.cpp +23 -0
- data/vendor/faiss/faiss/build.h +15 -0
- data/vendor/faiss/faiss/clone_index.cpp +48 -47
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h +47 -47
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +11 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h +38 -38
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h +11 -0
- data/vendor/faiss/faiss/factory_tools.cpp +5 -0
- data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +6 -5
- data/vendor/faiss/faiss/gpu/GpuResources.h +1 -1
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +9 -9
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +4 -3
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +46 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +56 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +78 -1
- data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +72 -0
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +23 -0
- data/vendor/faiss/faiss/gpu/utils/CuvsFilterConvert.h +1 -1
- data/vendor/faiss/faiss/gpu/utils/CuvsUtils.h +21 -10
- data/vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h +22 -0
- data/vendor/faiss/faiss/gpu_metal/MetalCloner.h +35 -0
- data/vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h +40 -0
- data/vendor/faiss/faiss/gpu_metal/MetalIndex.h +51 -0
- data/vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h +65 -0
- data/vendor/faiss/faiss/gpu_metal/MetalKernels.h +66 -0
- data/vendor/faiss/faiss/gpu_metal/MetalResources.h +79 -0
- data/vendor/faiss/faiss/gpu_metal/StandardMetalResources.h +35 -0
- data/vendor/faiss/faiss/impl/AdSampling.cpp +103 -0
- data/vendor/faiss/faiss/impl/AdSampling.h +35 -0
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +29 -25
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +1 -0
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +10 -9
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +3 -0
- data/vendor/faiss/faiss/impl/ClusteringHelpers.cpp +244 -0
- data/vendor/faiss/faiss/impl/ClusteringHelpers.h +94 -0
- data/vendor/faiss/faiss/impl/ClusteringInitialization.cpp +16 -16
- data/vendor/faiss/faiss/impl/CodePacker.cpp +3 -3
- data/vendor/faiss/faiss/impl/CodePackerRaBitQ.cpp +1 -1
- data/vendor/faiss/faiss/impl/DistanceComputer.h +8 -8
- data/vendor/faiss/faiss/impl/FaissAssert.h +6 -3
- data/vendor/faiss/faiss/impl/FaissException.h +50 -3
- data/vendor/faiss/faiss/impl/HNSW.cpp +92 -317
- data/vendor/faiss/faiss/impl/HNSW.h +13 -34
- data/vendor/faiss/faiss/impl/IDSelector.cpp +15 -11
- data/vendor/faiss/faiss/impl/IDSelector.h +8 -8
- data/vendor/faiss/faiss/impl/InvertedListScannerStats.h +26 -0
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +82 -77
- data/vendor/faiss/faiss/impl/NNDescent.cpp +62 -25
- data/vendor/faiss/faiss/impl/NNDescent.h +6 -2
- data/vendor/faiss/faiss/impl/NSG.cpp +38 -21
- data/vendor/faiss/faiss/impl/NSG.h +4 -4
- data/vendor/faiss/faiss/impl/Panorama.cpp +23 -6
- data/vendor/faiss/faiss/impl/Panorama.h +258 -87
- data/vendor/faiss/faiss/impl/PdxLayout.cpp +93 -0
- data/vendor/faiss/faiss/impl/PdxLayout.h +41 -0
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +46 -32
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +3 -3
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +35 -35
- data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +21 -16
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +30 -23
- data/vendor/faiss/faiss/impl/Quantizer.h +2 -2
- data/vendor/faiss/faiss/impl/RaBitQUtils.cpp +55 -49
- data/vendor/faiss/faiss/impl/RaBitQUtils.h +65 -0
- data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +296 -283
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +26 -23
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ResultHandler.h +99 -75
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +52 -4
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +27 -1
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +14 -11
- data/vendor/faiss/faiss/impl/VisitedTable.h +7 -0
- data/vendor/faiss/faiss/impl/approx_topk/approx_topk.h +276 -0
- data/vendor/faiss/faiss/impl/approx_topk/avx2.cpp +68 -0
- data/vendor/faiss/faiss/{utils → impl}/approx_topk/generic.h +15 -8
- data/vendor/faiss/faiss/impl/approx_topk/neon.cpp +68 -0
- data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h +169 -0
- data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h +117 -0
- data/vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h +146 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h +73 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h +270 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h +460 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h +159 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h +92 -0
- data/vendor/faiss/faiss/impl/binary_hamming/avx2.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/avx512.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/dispatch.h +143 -0
- data/vendor/faiss/faiss/impl/binary_hamming/neon.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/rvv.cpp +26 -0
- data/vendor/faiss/faiss/impl/expanded_scanners.h +8 -3
- data/vendor/faiss/faiss/impl/{FastScanDistancePostProcessing.h → fast_scan/FastScanDistancePostProcessing.h} +13 -6
- data/vendor/faiss/faiss/impl/{LookupTableScaler.h → fast_scan/LookupTableScaler.h} +16 -5
- data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h +237 -0
- data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h +185 -0
- data/vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h +229 -0
- data/vendor/faiss/faiss/impl/fast_scan/dispatching.h +268 -0
- data/vendor/faiss/faiss/impl/{pq4_fast_scan.cpp → fast_scan/fast_scan.cpp} +169 -2
- data/vendor/faiss/faiss/impl/fast_scan/fast_scan.h +341 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp +36 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp +40 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp +120 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp +104 -0
- data/vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h +213 -0
- data/vendor/faiss/faiss/impl/{pq4_fast_scan_search_qbs.cpp → fast_scan/kernels_simd512.h} +26 -356
- data/vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h +90 -0
- data/vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h +108 -0
- data/vendor/faiss/faiss/impl/{simd_result_handlers.h → fast_scan/simd_result_handlers.h} +282 -134
- data/vendor/faiss/faiss/impl/hnsw/LockVector.cpp +54 -0
- data/vendor/faiss/faiss/impl/hnsw/LockVector.h +64 -0
- data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp +91 -0
- data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h +64 -0
- data/vendor/faiss/faiss/impl/hnsw/avx2.cpp +104 -0
- data/vendor/faiss/faiss/impl/hnsw/avx512.cpp +111 -0
- data/vendor/faiss/faiss/impl/index_read.cpp +1132 -45
- data/vendor/faiss/faiss/impl/index_read_utils.h +1 -1
- data/vendor/faiss/faiss/impl/index_write.cpp +95 -13
- data/vendor/faiss/faiss/impl/io.cpp +6 -6
- data/vendor/faiss/faiss/impl/io_macros.h +33 -16
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +10 -10
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +37 -23
- data/vendor/faiss/faiss/impl/lattice_Zn.h +6 -6
- data/vendor/faiss/faiss/impl/mapped_io.cpp +6 -6
- data/vendor/faiss/faiss/impl/platform_macros.h +11 -4
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h +549 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp +245 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h +105 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h +106 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp +21 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp +21 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/neon.cpp +21 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx2.cpp → pq_code_distance-avx2.h} +9 -13
- data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx512.cpp → pq_code_distance-avx512.h} +9 -57
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp +29 -111
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h +96 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h +238 -5
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp +5 -7
- data/vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp +68 -0
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +311 -477
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h +1 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/codecs.h +1 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/distance_computers.h +3 -2
- data/vendor/faiss/faiss/impl/scalar_quantizer/quantizers.h +102 -11
- data/vendor/faiss/faiss/impl/scalar_quantizer/scanners.h +27 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/similarities.h +3 -3
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp +148 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp +167 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h +59 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp +163 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp +311 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/training.cpp +192 -8
- data/vendor/faiss/faiss/impl/scalar_quantizer/training.h +12 -0
- data/vendor/faiss/faiss/impl/simd_dispatch.h +100 -66
- data/vendor/faiss/faiss/impl/simdlib/simdlib.h +57 -0
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_avx2.h +264 -172
- data/vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h +414 -0
- data/vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h +44 -0
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_emulated.h +231 -166
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_neon.h +270 -218
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_ppc64.h +201 -160
- data/vendor/faiss/faiss/impl/svs_io.cpp +12 -3
- data/vendor/faiss/faiss/impl/svs_io.h +8 -2
- data/vendor/faiss/faiss/index_factory.cpp +86 -18
- data/vendor/faiss/faiss/index_io.h +24 -0
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +66 -16
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +24 -14
- data/vendor/faiss/faiss/invlists/DirectMap.h +4 -3
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +157 -73
- data/vendor/faiss/faiss/invlists/InvertedLists.h +86 -23
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +4 -4
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +13 -13
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +1 -1
- data/vendor/faiss/faiss/svs/IndexSVSFaissUtils.h +1 -1
- data/vendor/faiss/faiss/svs/IndexSVSFlat.cpp +2 -2
- data/vendor/faiss/faiss/svs/IndexSVSIVF.cpp +350 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVF.h +128 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp +40 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h +43 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp +225 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h +71 -0
- data/vendor/faiss/faiss/svs/IndexSVSVamana.cpp +25 -1
- data/vendor/faiss/faiss/svs/IndexSVSVamana.h +18 -2
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.h +1 -1
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.cpp +12 -3
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.h +7 -2
- data/vendor/faiss/faiss/utils/Heap.cpp +10 -10
- data/vendor/faiss/faiss/utils/NeuralNet.cpp +47 -36
- data/vendor/faiss/faiss/utils/NeuralNet.h +1 -1
- data/vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h +10 -4
- data/vendor/faiss/faiss/utils/distances.cpp +390 -560
- data/vendor/faiss/faiss/utils/distances.h +20 -1
- data/vendor/faiss/faiss/utils/distances_dispatch.h +117 -37
- data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +8 -7
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +33 -14
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +12 -1
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +16 -293
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp +57 -0
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h +290 -0
- data/vendor/faiss/faiss/utils/distances_simd.cpp +5 -177
- data/vendor/faiss/faiss/utils/extra_distances.cpp +9 -8
- data/vendor/faiss/faiss/utils/extra_distances.h +32 -6
- data/vendor/faiss/faiss/utils/hamming-inl.h +13 -11
- data/vendor/faiss/faiss/utils/hamming.cpp +66 -517
- data/vendor/faiss/faiss/utils/hamming.h +92 -2
- data/vendor/faiss/faiss/utils/hamming_distance/common.h +287 -10
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h +142 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h +234 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h +368 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h +322 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h +39 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h +146 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h +481 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp +15 -0
- data/vendor/faiss/faiss/utils/partitioning.cpp +66 -987
- data/vendor/faiss/faiss/utils/partitioning.h +31 -0
- data/vendor/faiss/faiss/utils/popcount.h +29 -0
- data/vendor/faiss/faiss/utils/pq_code_distance.h +2 -2
- data/vendor/faiss/faiss/utils/prefetch.h +2 -2
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +30 -30
- data/vendor/faiss/faiss/utils/quantize_lut.h +1 -1
- data/vendor/faiss/faiss/utils/rabitq_simd.h +57 -536
- data/vendor/faiss/faiss/utils/random.cpp +6 -6
- data/vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h +51 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp +5 -1
- data/vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp +213 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h +163 -10
- data/vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp +250 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp +7 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp +189 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h +195 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h +2 -1
- data/vendor/faiss/faiss/utils/{distances_fused/simdlib_based.h → simd_impl/exhaustive_L2sqr_blas_cmax.h} +5 -10
- data/vendor/faiss/faiss/utils/simd_impl/hamming_impl.h +481 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp +14 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp +14 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h +1085 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp +355 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp +477 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp +55 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp +55 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h +32 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h +43 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp +57 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp +45 -0
- data/vendor/faiss/faiss/utils/simd_levels.cpp +17 -5
- data/vendor/faiss/faiss/utils/simd_levels.h +93 -1
- data/vendor/faiss/faiss/utils/sorting.cpp +48 -36
- data/vendor/faiss/faiss/utils/utils.cpp +5 -5
- data/vendor/faiss/faiss/utils/utils.h +3 -3
- metadata +119 -34
- data/vendor/faiss/faiss/impl/RaBitQStats.cpp +0 -29
- data/vendor/faiss/faiss/impl/RaBitQStats.h +0 -56
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +0 -224
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +0 -230
- data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +0 -84
- data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +0 -196
- data/vendor/faiss/faiss/utils/approx_topk/mode.h +0 -34
- data/vendor/faiss/faiss/utils/distances_fused/avx512.h +0 -36
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +0 -235
- data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +0 -462
- data/vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h +0 -490
- data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +0 -449
- data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +0 -87
- data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +0 -524
- data/vendor/faiss/faiss/utils/simdlib.h +0 -42
- data/vendor/faiss/faiss/utils/simdlib_avx512.h +0 -365
- /data/ext/faiss/{utils_rb.h → utils.h} +0 -0
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.6.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
@@ -48,14 +48,14 @@ files:
|
|
|
48
48
|
- README.md
|
|
49
49
|
- ext/faiss/ext.cpp
|
|
50
50
|
- ext/faiss/extconf.rb
|
|
51
|
+
- ext/faiss/index.cpp
|
|
51
52
|
- ext/faiss/index_binary.cpp
|
|
52
|
-
- ext/faiss/index_rb.cpp
|
|
53
53
|
- ext/faiss/kmeans.cpp
|
|
54
54
|
- ext/faiss/numo.hpp
|
|
55
55
|
- ext/faiss/pca_matrix.cpp
|
|
56
56
|
- ext/faiss/product_quantizer.cpp
|
|
57
|
-
- ext/faiss/
|
|
58
|
-
- ext/faiss/
|
|
57
|
+
- ext/faiss/utils.cpp
|
|
58
|
+
- ext/faiss/utils.h
|
|
59
59
|
- lib/faiss.rb
|
|
60
60
|
- lib/faiss/version.rb
|
|
61
61
|
- vendor/faiss/LICENSE
|
|
@@ -158,8 +158,12 @@ files:
|
|
|
158
158
|
- vendor/faiss/faiss/MetaIndexes.cpp
|
|
159
159
|
- vendor/faiss/faiss/MetaIndexes.h
|
|
160
160
|
- vendor/faiss/faiss/MetricType.h
|
|
161
|
+
- vendor/faiss/faiss/SuperKMeans.cpp
|
|
162
|
+
- vendor/faiss/faiss/SuperKMeans.h
|
|
161
163
|
- vendor/faiss/faiss/VectorTransform.cpp
|
|
162
164
|
- vendor/faiss/faiss/VectorTransform.h
|
|
165
|
+
- vendor/faiss/faiss/build.cpp
|
|
166
|
+
- vendor/faiss/faiss/build.h
|
|
163
167
|
- vendor/faiss/faiss/clone_index.cpp
|
|
164
168
|
- vendor/faiss/faiss/clone_index.h
|
|
165
169
|
- vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h
|
|
@@ -227,10 +231,22 @@ files:
|
|
|
227
231
|
- vendor/faiss/faiss/gpu/utils/StaticUtils.h
|
|
228
232
|
- vendor/faiss/faiss/gpu/utils/Timer.cpp
|
|
229
233
|
- vendor/faiss/faiss/gpu/utils/Timer.h
|
|
234
|
+
- vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h
|
|
235
|
+
- vendor/faiss/faiss/gpu_metal/MetalCloner.h
|
|
236
|
+
- vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h
|
|
237
|
+
- vendor/faiss/faiss/gpu_metal/MetalIndex.h
|
|
238
|
+
- vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h
|
|
239
|
+
- vendor/faiss/faiss/gpu_metal/MetalKernels.h
|
|
240
|
+
- vendor/faiss/faiss/gpu_metal/MetalResources.h
|
|
241
|
+
- vendor/faiss/faiss/gpu_metal/StandardMetalResources.h
|
|
242
|
+
- vendor/faiss/faiss/impl/AdSampling.cpp
|
|
243
|
+
- vendor/faiss/faiss/impl/AdSampling.h
|
|
230
244
|
- vendor/faiss/faiss/impl/AdditiveQuantizer.cpp
|
|
231
245
|
- vendor/faiss/faiss/impl/AdditiveQuantizer.h
|
|
232
246
|
- vendor/faiss/faiss/impl/AuxIndexStructures.cpp
|
|
233
247
|
- vendor/faiss/faiss/impl/AuxIndexStructures.h
|
|
248
|
+
- vendor/faiss/faiss/impl/ClusteringHelpers.cpp
|
|
249
|
+
- vendor/faiss/faiss/impl/ClusteringHelpers.h
|
|
234
250
|
- vendor/faiss/faiss/impl/ClusteringInitialization.cpp
|
|
235
251
|
- vendor/faiss/faiss/impl/ClusteringInitialization.h
|
|
236
252
|
- vendor/faiss/faiss/impl/CodePacker.cpp
|
|
@@ -241,14 +257,13 @@ files:
|
|
|
241
257
|
- vendor/faiss/faiss/impl/FaissAssert.h
|
|
242
258
|
- vendor/faiss/faiss/impl/FaissException.cpp
|
|
243
259
|
- vendor/faiss/faiss/impl/FaissException.h
|
|
244
|
-
- vendor/faiss/faiss/impl/FastScanDistancePostProcessing.h
|
|
245
260
|
- vendor/faiss/faiss/impl/HNSW.cpp
|
|
246
261
|
- vendor/faiss/faiss/impl/HNSW.h
|
|
247
262
|
- vendor/faiss/faiss/impl/IDSelector.cpp
|
|
248
263
|
- vendor/faiss/faiss/impl/IDSelector.h
|
|
264
|
+
- vendor/faiss/faiss/impl/InvertedListScannerStats.h
|
|
249
265
|
- vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp
|
|
250
266
|
- vendor/faiss/faiss/impl/LocalSearchQuantizer.h
|
|
251
|
-
- vendor/faiss/faiss/impl/LookupTableScaler.h
|
|
252
267
|
- vendor/faiss/faiss/impl/NNDescent.cpp
|
|
253
268
|
- vendor/faiss/faiss/impl/NNDescent.h
|
|
254
269
|
- vendor/faiss/faiss/impl/NSG.cpp
|
|
@@ -257,6 +272,8 @@ files:
|
|
|
257
272
|
- vendor/faiss/faiss/impl/Panorama.h
|
|
258
273
|
- vendor/faiss/faiss/impl/PanoramaStats.cpp
|
|
259
274
|
- vendor/faiss/faiss/impl/PanoramaStats.h
|
|
275
|
+
- vendor/faiss/faiss/impl/PdxLayout.cpp
|
|
276
|
+
- vendor/faiss/faiss/impl/PdxLayout.h
|
|
260
277
|
- vendor/faiss/faiss/impl/PolysemousTraining.cpp
|
|
261
278
|
- vendor/faiss/faiss/impl/PolysemousTraining.h
|
|
262
279
|
- vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp
|
|
@@ -265,8 +282,6 @@ files:
|
|
|
265
282
|
- vendor/faiss/faiss/impl/ProductQuantizer.cpp
|
|
266
283
|
- vendor/faiss/faiss/impl/ProductQuantizer.h
|
|
267
284
|
- vendor/faiss/faiss/impl/Quantizer.h
|
|
268
|
-
- vendor/faiss/faiss/impl/RaBitQStats.cpp
|
|
269
|
-
- vendor/faiss/faiss/impl/RaBitQStats.h
|
|
270
285
|
- vendor/faiss/faiss/impl/RaBitQUtils.cpp
|
|
271
286
|
- vendor/faiss/faiss/impl/RaBitQUtils.h
|
|
272
287
|
- vendor/faiss/faiss/impl/RaBitQuantizer.cpp
|
|
@@ -282,7 +297,47 @@ files:
|
|
|
282
297
|
- vendor/faiss/faiss/impl/ThreadedIndex.h
|
|
283
298
|
- vendor/faiss/faiss/impl/VisitedTable.cpp
|
|
284
299
|
- vendor/faiss/faiss/impl/VisitedTable.h
|
|
300
|
+
- vendor/faiss/faiss/impl/approx_topk/approx_topk.h
|
|
301
|
+
- vendor/faiss/faiss/impl/approx_topk/avx2.cpp
|
|
302
|
+
- vendor/faiss/faiss/impl/approx_topk/generic.h
|
|
303
|
+
- vendor/faiss/faiss/impl/approx_topk/neon.cpp
|
|
304
|
+
- vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h
|
|
305
|
+
- vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h
|
|
306
|
+
- vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h
|
|
307
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h
|
|
308
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h
|
|
309
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h
|
|
310
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h
|
|
311
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h
|
|
312
|
+
- vendor/faiss/faiss/impl/binary_hamming/avx2.cpp
|
|
313
|
+
- vendor/faiss/faiss/impl/binary_hamming/avx512.cpp
|
|
314
|
+
- vendor/faiss/faiss/impl/binary_hamming/dispatch.h
|
|
315
|
+
- vendor/faiss/faiss/impl/binary_hamming/neon.cpp
|
|
316
|
+
- vendor/faiss/faiss/impl/binary_hamming/rvv.cpp
|
|
285
317
|
- vendor/faiss/faiss/impl/expanded_scanners.h
|
|
318
|
+
- vendor/faiss/faiss/impl/fast_scan/FastScanDistancePostProcessing.h
|
|
319
|
+
- vendor/faiss/faiss/impl/fast_scan/LookupTableScaler.h
|
|
320
|
+
- vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h
|
|
321
|
+
- vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h
|
|
322
|
+
- vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h
|
|
323
|
+
- vendor/faiss/faiss/impl/fast_scan/dispatching.h
|
|
324
|
+
- vendor/faiss/faiss/impl/fast_scan/fast_scan.cpp
|
|
325
|
+
- vendor/faiss/faiss/impl/fast_scan/fast_scan.h
|
|
326
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp
|
|
327
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp
|
|
328
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp
|
|
329
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp
|
|
330
|
+
- vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h
|
|
331
|
+
- vendor/faiss/faiss/impl/fast_scan/kernels_simd512.h
|
|
332
|
+
- vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h
|
|
333
|
+
- vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h
|
|
334
|
+
- vendor/faiss/faiss/impl/fast_scan/simd_result_handlers.h
|
|
335
|
+
- vendor/faiss/faiss/impl/hnsw/LockVector.cpp
|
|
336
|
+
- vendor/faiss/faiss/impl/hnsw/LockVector.h
|
|
337
|
+
- vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp
|
|
338
|
+
- vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h
|
|
339
|
+
- vendor/faiss/faiss/impl/hnsw/avx2.cpp
|
|
340
|
+
- vendor/faiss/faiss/impl/hnsw/avx512.cpp
|
|
286
341
|
- vendor/faiss/faiss/impl/index_read.cpp
|
|
287
342
|
- vendor/faiss/faiss/impl/index_read_utils.h
|
|
288
343
|
- vendor/faiss/faiss/impl/index_write.cpp
|
|
@@ -297,15 +352,20 @@ files:
|
|
|
297
352
|
- vendor/faiss/faiss/impl/mapped_io.h
|
|
298
353
|
- vendor/faiss/faiss/impl/maybe_owned_vector.h
|
|
299
354
|
- vendor/faiss/faiss/impl/platform_macros.h
|
|
300
|
-
- vendor/faiss/faiss/impl/
|
|
301
|
-
- vendor/faiss/faiss/impl/
|
|
302
|
-
- vendor/faiss/faiss/impl/
|
|
303
|
-
- vendor/faiss/faiss/impl/
|
|
304
|
-
- vendor/faiss/faiss/impl/pq_code_distance/
|
|
305
|
-
- vendor/faiss/faiss/impl/pq_code_distance/
|
|
355
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h
|
|
356
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp
|
|
357
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h
|
|
358
|
+
- vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h
|
|
359
|
+
- vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp
|
|
360
|
+
- vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp
|
|
361
|
+
- vendor/faiss/faiss/impl/pq_code_distance/neon.cpp
|
|
362
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx2.h
|
|
363
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx512.h
|
|
306
364
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp
|
|
365
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h
|
|
307
366
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h
|
|
308
367
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp
|
|
368
|
+
- vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp
|
|
309
369
|
- vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp
|
|
310
370
|
- vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h
|
|
311
371
|
- vendor/faiss/faiss/impl/scalar_quantizer/codecs.h
|
|
@@ -317,10 +377,17 @@ files:
|
|
|
317
377
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp
|
|
318
378
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h
|
|
319
379
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp
|
|
380
|
+
- vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp
|
|
320
381
|
- vendor/faiss/faiss/impl/scalar_quantizer/training.cpp
|
|
321
382
|
- vendor/faiss/faiss/impl/scalar_quantizer/training.h
|
|
322
383
|
- vendor/faiss/faiss/impl/simd_dispatch.h
|
|
323
|
-
- vendor/faiss/faiss/impl/
|
|
384
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib.h
|
|
385
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_avx2.h
|
|
386
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h
|
|
387
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h
|
|
388
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_emulated.h
|
|
389
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_neon.h
|
|
390
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_ppc64.h
|
|
324
391
|
- vendor/faiss/faiss/impl/svs_io.cpp
|
|
325
392
|
- vendor/faiss/faiss/impl/svs_io.h
|
|
326
393
|
- vendor/faiss/faiss/impl/zerocopy_io.cpp
|
|
@@ -343,6 +410,12 @@ files:
|
|
|
343
410
|
- vendor/faiss/faiss/svs/IndexSVSFaissUtils.h
|
|
344
411
|
- vendor/faiss/faiss/svs/IndexSVSFlat.cpp
|
|
345
412
|
- vendor/faiss/faiss/svs/IndexSVSFlat.h
|
|
413
|
+
- vendor/faiss/faiss/svs/IndexSVSIVF.cpp
|
|
414
|
+
- vendor/faiss/faiss/svs/IndexSVSIVF.h
|
|
415
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp
|
|
416
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h
|
|
417
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp
|
|
418
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h
|
|
346
419
|
- vendor/faiss/faiss/svs/IndexSVSVamana.cpp
|
|
347
420
|
- vendor/faiss/faiss/svs/IndexSVSVamana.h
|
|
348
421
|
- vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.cpp
|
|
@@ -356,23 +429,18 @@ files:
|
|
|
356
429
|
- vendor/faiss/faiss/utils/NeuralNet.h
|
|
357
430
|
- vendor/faiss/faiss/utils/WorkerThread.cpp
|
|
358
431
|
- vendor/faiss/faiss/utils/WorkerThread.h
|
|
359
|
-
- vendor/faiss/faiss/utils/approx_topk/approx_topk.h
|
|
360
|
-
- vendor/faiss/faiss/utils/approx_topk/avx2-inl.h
|
|
361
|
-
- vendor/faiss/faiss/utils/approx_topk/generic.h
|
|
362
|
-
- vendor/faiss/faiss/utils/approx_topk/mode.h
|
|
363
432
|
- vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h
|
|
364
433
|
- vendor/faiss/faiss/utils/bf16.h
|
|
365
434
|
- vendor/faiss/faiss/utils/distances.cpp
|
|
366
435
|
- vendor/faiss/faiss/utils/distances.h
|
|
367
436
|
- vendor/faiss/faiss/utils/distances_dispatch.h
|
|
368
437
|
- vendor/faiss/faiss/utils/distances_fused/avx512.cpp
|
|
369
|
-
- vendor/faiss/faiss/utils/distances_fused/avx512.h
|
|
370
438
|
- vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp
|
|
371
439
|
- vendor/faiss/faiss/utils/distances_fused/distances_fused.h
|
|
372
440
|
- vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp
|
|
373
|
-
- vendor/faiss/faiss/utils/distances_fused/
|
|
441
|
+
- vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp
|
|
442
|
+
- vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h
|
|
374
443
|
- vendor/faiss/faiss/utils/distances_simd.cpp
|
|
375
|
-
- vendor/faiss/faiss/utils/extra_distances-inl.h
|
|
376
444
|
- vendor/faiss/faiss/utils/extra_distances.cpp
|
|
377
445
|
- vendor/faiss/faiss/utils/extra_distances.h
|
|
378
446
|
- vendor/faiss/faiss/utils/fp16-arm.h
|
|
@@ -382,15 +450,22 @@ files:
|
|
|
382
450
|
- vendor/faiss/faiss/utils/hamming-inl.h
|
|
383
451
|
- vendor/faiss/faiss/utils/hamming.cpp
|
|
384
452
|
- vendor/faiss/faiss/utils/hamming.h
|
|
385
|
-
- vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h
|
|
386
|
-
- vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h
|
|
387
453
|
- vendor/faiss/faiss/utils/hamming_distance/common.h
|
|
388
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
389
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
390
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
454
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp
|
|
455
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp
|
|
456
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h
|
|
457
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h
|
|
458
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h
|
|
459
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h
|
|
460
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h
|
|
461
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h
|
|
462
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h
|
|
463
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp
|
|
464
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp
|
|
391
465
|
- vendor/faiss/faiss/utils/ordered_key_value.h
|
|
392
466
|
- vendor/faiss/faiss/utils/partitioning.cpp
|
|
393
467
|
- vendor/faiss/faiss/utils/partitioning.h
|
|
468
|
+
- vendor/faiss/faiss/utils/popcount.h
|
|
394
469
|
- vendor/faiss/faiss/utils/pq_code_distance.h
|
|
395
470
|
- vendor/faiss/faiss/utils/prefetch.h
|
|
396
471
|
- vendor/faiss/faiss/utils/quantize_lut.cpp
|
|
@@ -398,20 +473,30 @@ files:
|
|
|
398
473
|
- vendor/faiss/faiss/utils/rabitq_simd.h
|
|
399
474
|
- vendor/faiss/faiss/utils/random.cpp
|
|
400
475
|
- vendor/faiss/faiss/utils/random.h
|
|
476
|
+
- vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h
|
|
401
477
|
- vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp
|
|
402
478
|
- vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp
|
|
403
479
|
- vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h
|
|
404
480
|
- vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp
|
|
405
481
|
- vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp
|
|
482
|
+
- vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp
|
|
483
|
+
- vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h
|
|
406
484
|
- vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h
|
|
485
|
+
- vendor/faiss/faiss/utils/simd_impl/exhaustive_L2sqr_blas_cmax.h
|
|
486
|
+
- vendor/faiss/faiss/utils/simd_impl/hamming_impl.h
|
|
487
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp
|
|
488
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp
|
|
489
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h
|
|
490
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp
|
|
491
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp
|
|
492
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp
|
|
493
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp
|
|
494
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h
|
|
495
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h
|
|
496
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp
|
|
497
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp
|
|
407
498
|
- vendor/faiss/faiss/utils/simd_levels.cpp
|
|
408
499
|
- vendor/faiss/faiss/utils/simd_levels.h
|
|
409
|
-
- vendor/faiss/faiss/utils/simdlib.h
|
|
410
|
-
- vendor/faiss/faiss/utils/simdlib_avx2.h
|
|
411
|
-
- vendor/faiss/faiss/utils/simdlib_avx512.h
|
|
412
|
-
- vendor/faiss/faiss/utils/simdlib_emulated.h
|
|
413
|
-
- vendor/faiss/faiss/utils/simdlib_neon.h
|
|
414
|
-
- vendor/faiss/faiss/utils/simdlib_ppc64.h
|
|
415
500
|
- vendor/faiss/faiss/utils/sorting.cpp
|
|
416
501
|
- vendor/faiss/faiss/utils/sorting.h
|
|
417
502
|
- vendor/faiss/faiss/utils/transpose/transpose-avx2-inl.h
|
|
@@ -436,7 +521,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
436
521
|
- !ruby/object:Gem::Version
|
|
437
522
|
version: '0'
|
|
438
523
|
requirements: []
|
|
439
|
-
rubygems_version: 4.0.
|
|
524
|
+
rubygems_version: 4.0.10
|
|
440
525
|
specification_version: 4
|
|
441
526
|
summary: Efficient similarity search and clustering for Ruby
|
|
442
527
|
test_files: []
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
#include <faiss/impl/RaBitQStats.h>
|
|
9
|
-
|
|
10
|
-
namespace faiss {
|
|
11
|
-
|
|
12
|
-
// NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
|
|
13
|
-
RaBitQStats rabitq_stats;
|
|
14
|
-
|
|
15
|
-
void RaBitQStats::reset() {
|
|
16
|
-
n_1bit_evaluations = 0;
|
|
17
|
-
n_multibit_evaluations = 0;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
double RaBitQStats::skip_percentage() const {
|
|
21
|
-
const size_t copy_n_1bit_evaluations = n_1bit_evaluations;
|
|
22
|
-
const size_t copy_n_multibit_evaluations = n_multibit_evaluations;
|
|
23
|
-
return copy_n_1bit_evaluations > 0
|
|
24
|
-
? 100.0 * (copy_n_1bit_evaluations - copy_n_multibit_evaluations) /
|
|
25
|
-
copy_n_1bit_evaluations
|
|
26
|
-
: 0.0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
} // namespace faiss
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <faiss/impl/platform_macros.h>
|
|
11
|
-
#include <cstddef>
|
|
12
|
-
|
|
13
|
-
namespace faiss {
|
|
14
|
-
|
|
15
|
-
/// Statistics for RaBitQ multi-bit two-stage search.
|
|
16
|
-
///
|
|
17
|
-
/// These stats are ONLY collected for multi-bit mode (nb_bits > 1).
|
|
18
|
-
/// In 1-bit mode, there is no two-stage filtering - all candidates are
|
|
19
|
-
/// evaluated with a single distance computation, so there is nothing
|
|
20
|
-
/// meaningful to track. For 1-bit mode, both counters remain 0.
|
|
21
|
-
///
|
|
22
|
-
/// Multi-bit mode uses a two-stage search:
|
|
23
|
-
/// Stage 1: Compute 1-bit lower bound distance for all candidates
|
|
24
|
-
/// Stage 2: Compute full multi-bit distance only for promising candidates
|
|
25
|
-
///
|
|
26
|
-
/// The skip_percentage() metric measures filtering effectiveness:
|
|
27
|
-
/// how many candidates were filtered out by the 1-bit lower bound
|
|
28
|
-
/// without needing the more expensive multi-bit distance computation.
|
|
29
|
-
///
|
|
30
|
-
/// WARNING: Statistics are not robust to internal threading nor to
|
|
31
|
-
/// concurrent RaBitQ searches. Use these values in a single-threaded
|
|
32
|
-
/// context to accurately gauge RaBitQ's filtering effectiveness.
|
|
33
|
-
/// Call reset() before search, then read stats after search completes.
|
|
34
|
-
struct RaBitQStats {
|
|
35
|
-
/// Number of candidates evaluated using 1-bit (lower bound) distance.
|
|
36
|
-
/// This is the first stage of two-stage search in multi-bit mode.
|
|
37
|
-
/// Always 0 in 1-bit mode (stats not tracked).
|
|
38
|
-
size_t n_1bit_evaluations = 0;
|
|
39
|
-
|
|
40
|
-
/// Number of candidates that passed 1-bit filtering and required
|
|
41
|
-
/// full multi-bit distance computation (second stage).
|
|
42
|
-
/// Always 0 in 1-bit mode (stats not tracked).
|
|
43
|
-
size_t n_multibit_evaluations = 0;
|
|
44
|
-
|
|
45
|
-
void reset();
|
|
46
|
-
|
|
47
|
-
/// Compute percentage of candidates skipped (filtered out by 1-bit stage).
|
|
48
|
-
/// Returns 0 if no candidates were evaluated (including 1-bit mode).
|
|
49
|
-
double skip_percentage() const;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/// Global stats for RaBitQ indexes
|
|
53
|
-
// NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
|
|
54
|
-
FAISS_API extern RaBitQStats rabitq_stats;
|
|
55
|
-
|
|
56
|
-
} // namespace faiss
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <cstdint>
|
|
11
|
-
#include <cstdlib>
|
|
12
|
-
|
|
13
|
-
#include <faiss/impl/CodePacker.h>
|
|
14
|
-
|
|
15
|
-
/** PQ4 SIMD packing and accumulation functions
|
|
16
|
-
*
|
|
17
|
-
* The basic kernel accumulates nq query vectors with bbs = nb * 2 * 16 vectors
|
|
18
|
-
* and produces an output matrix for that. It is interesting for nq * nb <= 4,
|
|
19
|
-
* otherwise register spilling becomes too large.
|
|
20
|
-
*
|
|
21
|
-
* The implementation of these functions is spread over 3 cpp files to reduce
|
|
22
|
-
* parallel compile times. Templates are instantiated explicitly.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
namespace faiss {
|
|
26
|
-
|
|
27
|
-
struct NormTableScaler;
|
|
28
|
-
struct SIMDResultHandler;
|
|
29
|
-
|
|
30
|
-
/** Pack codes for consumption by the SIMD kernels.
|
|
31
|
-
* The unused bytes are set to 0.
|
|
32
|
-
*
|
|
33
|
-
* @param codes input codes, size (ntotal, ceil(M / 2))
|
|
34
|
-
* @param ntotal number of input codes
|
|
35
|
-
* @param nb output number of codes (ntotal rounded up to a multiple of
|
|
36
|
-
* bbs)
|
|
37
|
-
* @param nsq number of sub-quantizers (=M rounded up to a multiple of 2)
|
|
38
|
-
* @param bbs size of database blocks (multiple of 32)
|
|
39
|
-
* @param blocks output array, size nb * nsq / 2.
|
|
40
|
-
* @param code_stride optional stride between consecutive codes (0 = use
|
|
41
|
-
default (M + 1) / 2)
|
|
42
|
-
*/
|
|
43
|
-
void pq4_pack_codes(
|
|
44
|
-
const uint8_t* codes,
|
|
45
|
-
size_t ntotal,
|
|
46
|
-
size_t M,
|
|
47
|
-
size_t nb,
|
|
48
|
-
size_t bbs,
|
|
49
|
-
size_t nsq,
|
|
50
|
-
uint8_t* blocks,
|
|
51
|
-
size_t code_stride = 0);
|
|
52
|
-
|
|
53
|
-
/** Same as pack_codes but write in a given range of the output,
|
|
54
|
-
* leaving the rest untouched. Assumes allocated entries are 0 on input.
|
|
55
|
-
*
|
|
56
|
-
* @param codes input codes, size (i1 - i0, ceil(M / 2))
|
|
57
|
-
* @param i0 first output code to write
|
|
58
|
-
* @param i1 last output code to write
|
|
59
|
-
* @param blocks output array, size at least ceil(i1 / bbs) * bbs * nsq / 2
|
|
60
|
-
* @param code_stride optional stride between consecutive codes (0 = use
|
|
61
|
-
* default (M + 1) / 2)
|
|
62
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
63
|
-
*/
|
|
64
|
-
void pq4_pack_codes_range(
|
|
65
|
-
const uint8_t* codes,
|
|
66
|
-
size_t M,
|
|
67
|
-
size_t i0,
|
|
68
|
-
size_t i1,
|
|
69
|
-
size_t bbs,
|
|
70
|
-
size_t nsq,
|
|
71
|
-
uint8_t* blocks,
|
|
72
|
-
size_t code_stride,
|
|
73
|
-
size_t block_stride);
|
|
74
|
-
|
|
75
|
-
/** get a single element from a packed codes table
|
|
76
|
-
*
|
|
77
|
-
* @param vector_id vector id
|
|
78
|
-
* @param sq subquantizer (< nsq)
|
|
79
|
-
*/
|
|
80
|
-
uint8_t pq4_get_packed_element(
|
|
81
|
-
const uint8_t* data,
|
|
82
|
-
size_t bbs,
|
|
83
|
-
size_t nsq,
|
|
84
|
-
size_t vector_id,
|
|
85
|
-
size_t sq);
|
|
86
|
-
|
|
87
|
-
/** set a single element "code" into a packed codes table
|
|
88
|
-
*
|
|
89
|
-
* @param vector_id vector id
|
|
90
|
-
* @param sq subquantizer (< nsq)
|
|
91
|
-
*/
|
|
92
|
-
void pq4_set_packed_element(
|
|
93
|
-
uint8_t* data,
|
|
94
|
-
uint8_t code,
|
|
95
|
-
size_t bbs,
|
|
96
|
-
size_t nsq,
|
|
97
|
-
size_t vector_id,
|
|
98
|
-
size_t sq);
|
|
99
|
-
|
|
100
|
-
/** CodePacker API for the PQ4 fast-scan */
|
|
101
|
-
struct CodePackerPQ4 : CodePacker {
|
|
102
|
-
size_t nsq;
|
|
103
|
-
|
|
104
|
-
CodePackerPQ4(size_t nsq, size_t bbs);
|
|
105
|
-
|
|
106
|
-
CodePacker* clone() const final;
|
|
107
|
-
|
|
108
|
-
void pack_1(const uint8_t* flat_code, size_t offset, uint8_t* block)
|
|
109
|
-
const final;
|
|
110
|
-
void unpack_1(const uint8_t* block, size_t offset, uint8_t* flat_code)
|
|
111
|
-
const final;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
/** Pack Look-up table for consumption by the kernel.
|
|
115
|
-
*
|
|
116
|
-
* @param nq number of queries
|
|
117
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
118
|
-
* @param src input array, size (nq, 16)
|
|
119
|
-
* @param dest output array, size (nq, 16)
|
|
120
|
-
*/
|
|
121
|
-
void pq4_pack_LUT(int nq, int nsq, const uint8_t* src, uint8_t* dest);
|
|
122
|
-
|
|
123
|
-
/** Loop over database elements and accumulate results into result handler
|
|
124
|
-
*
|
|
125
|
-
* @param nq number of queries
|
|
126
|
-
* @param nb number of database elements
|
|
127
|
-
* @param bbs size of database blocks (multiple of 32)
|
|
128
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
129
|
-
* @param codes packed codes array
|
|
130
|
-
* @param LUT packed look-up table
|
|
131
|
-
* @param scaler scaler to scale the encoded norm
|
|
132
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
133
|
-
*/
|
|
134
|
-
void pq4_accumulate_loop(
|
|
135
|
-
int nq,
|
|
136
|
-
size_t nb,
|
|
137
|
-
int bbs,
|
|
138
|
-
int nsq,
|
|
139
|
-
const uint8_t* codes,
|
|
140
|
-
const uint8_t* LUT,
|
|
141
|
-
SIMDResultHandler& res,
|
|
142
|
-
const NormTableScaler* scaler,
|
|
143
|
-
size_t block_stride);
|
|
144
|
-
|
|
145
|
-
/* qbs versions, supported only for bbs=32.
|
|
146
|
-
*
|
|
147
|
-
* The kernel function runs the kernel for *several* query blocks
|
|
148
|
-
* and bbs database vectors. The sizes of the blocks are encoded in qbs as
|
|
149
|
-
* base-16 digits.
|
|
150
|
-
*
|
|
151
|
-
* For example, qbs = 0x1223 means that the kernel will be run 4 times, the
|
|
152
|
-
* first time with 3 query vectors, second time with 2 query vectors, then 2
|
|
153
|
-
* vectors again and finally with 1 query vector. The output block will thus be
|
|
154
|
-
* nq = 3 + 2 + 2 + 1 = 6 queries. For a given total block size, the optimal
|
|
155
|
-
* decomposition into sub-blocks (measured empirically) is given by
|
|
156
|
-
* preferred_qbs().
|
|
157
|
-
*/
|
|
158
|
-
|
|
159
|
-
/* compute the number of queries from a base-16 decomposition */
|
|
160
|
-
int pq4_qbs_to_nq(int qbs);
|
|
161
|
-
|
|
162
|
-
/** return the preferred decomposition in blocks for a nb of queries. */
|
|
163
|
-
int pq4_preferred_qbs(int nq);
|
|
164
|
-
|
|
165
|
-
/** Pack Look-up table for consumption by the kernel.
|
|
166
|
-
*
|
|
167
|
-
* @param qbs 4-bit encoded number of query blocks, the total number of
|
|
168
|
-
* queries handled (nq) is deduced from it
|
|
169
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
170
|
-
* @param src input array, size (nq, 16)
|
|
171
|
-
* @param dest output array, size (nq, 16)
|
|
172
|
-
* @return nq
|
|
173
|
-
*/
|
|
174
|
-
int pq4_pack_LUT_qbs(int fqbs, int nsq, const uint8_t* src, uint8_t* dest);
|
|
175
|
-
|
|
176
|
-
/** Same as pq4_pack_LUT_qbs, except the source vectors are remapped with q_map
|
|
177
|
-
*/
|
|
178
|
-
int pq4_pack_LUT_qbs_q_map(
|
|
179
|
-
int qbs,
|
|
180
|
-
int nsq,
|
|
181
|
-
const uint8_t* src,
|
|
182
|
-
const int* q_map,
|
|
183
|
-
uint8_t* dest);
|
|
184
|
-
|
|
185
|
-
/** Run accumulation loop.
|
|
186
|
-
*
|
|
187
|
-
* @param qbs 4-bit encoded number of queries
|
|
188
|
-
* @param nb number of database codes (multiple of bbs)
|
|
189
|
-
* @param nsq number of sub-quantizers
|
|
190
|
-
* @param codes encoded database vectors (packed)
|
|
191
|
-
* @param LUT look-up table (packed)
|
|
192
|
-
* @param res call-back for the results
|
|
193
|
-
* @param scaler scaler to scale the encoded norm
|
|
194
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
195
|
-
*/
|
|
196
|
-
void pq4_accumulate_loop_qbs(
|
|
197
|
-
int qbs,
|
|
198
|
-
size_t nb,
|
|
199
|
-
int nsq,
|
|
200
|
-
const uint8_t* codes,
|
|
201
|
-
const uint8_t* LUT,
|
|
202
|
-
SIMDResultHandler& res,
|
|
203
|
-
const NormTableScaler* scaler,
|
|
204
|
-
size_t block_stride);
|
|
205
|
-
|
|
206
|
-
/** Wrapper of pq4_accumulate_loop_qbs using simple StoreResultHandler
|
|
207
|
-
* and DummyScaler
|
|
208
|
-
*
|
|
209
|
-
* @param nq number of queries
|
|
210
|
-
* @param ntotal2 number of database elements (multiple of 32)
|
|
211
|
-
* @param nsq number of sub-quantizers (muliple of 2)
|
|
212
|
-
* @param codes packed codes array
|
|
213
|
-
* @param LUT packed look-up table
|
|
214
|
-
* @param accu array to store the results
|
|
215
|
-
*/
|
|
216
|
-
void accumulate_to_mem(
|
|
217
|
-
int nq,
|
|
218
|
-
size_t ntotal2,
|
|
219
|
-
int nsq,
|
|
220
|
-
const uint8_t* codes,
|
|
221
|
-
const uint8_t* LUT,
|
|
222
|
-
uint16_t* accu);
|
|
223
|
-
|
|
224
|
-
} // namespace faiss
|