|
13 | 13 | #include "VecSim/memory/vecsim_malloc.h" |
14 | 14 | #include "VecSim/vec_sim_index.h" |
15 | 15 | #include "VecSim/algorithms/hnsw/hnsw_tiered.h" |
| 16 | +#include "VecSim/algorithms/svs/svs_tiered.h" |
16 | 17 | #include "VecSim/algorithms/brute_force/brute_force.h" |
17 | 18 | #include "VecSim/index_factories/factory_utils.h" |
18 | 19 |
|
@@ -58,8 +59,35 @@ VecSimIndex *NewIndex(const TieredIndexParams *params, HNSWIndex<DataType, DistT |
58 | 59 | // verification of the backend index algorithm. To be removed once a proper verification is |
59 | 60 | // introduced. |
60 | 61 | namespace TieredSVSFactory { |
61 | | -BFParams NewBFParams(const TieredIndexParams *params); |
| 62 | + |
| 63 | +#if HAVE_SVS |
| 64 | +template <typename DataType> |
| 65 | +inline VecSimIndex *NewIndex(const TieredIndexParams *params, |
| 66 | + VecSimIndexAbstract<DataType, float> *svs_index) { |
| 67 | + // Initialize brute force index. |
| 68 | + BFParams bf_params = {.type = svs_index->getType(), |
| 69 | + .dim = svs_index->getDim(), |
| 70 | + .metric = svs_index->getMetric(), |
| 71 | + .multi = svs_index->isMultiValue(), |
| 72 | + .blockSize = svs_index->getBlockSize()}; |
| 73 | + |
| 74 | + AbstractIndexInitParams abstractInitParams = |
| 75 | + VecSimFactory::NewAbstractInitParams(&bf_params, params->primaryIndexParams->logCtx, false); |
| 76 | + assert(svs_index->getInputBlobSize() == abstractInitParams.storedDataSize); |
| 77 | + assert(svs_index->getStoredDataSize() == abstractInitParams.storedDataSize); |
| 78 | + auto frontendIndex = static_cast<BruteForceIndex<DataType, float> *>( |
| 79 | + BruteForceFactory::NewIndex(&bf_params, abstractInitParams, false)); |
| 80 | + |
| 81 | + // Create new tiered svs index |
| 82 | + std::shared_ptr<VecSimAllocator> management_layer_allocator = |
| 83 | + VecSimAllocator::newVecsimAllocator(); |
| 84 | + |
| 85 | + return new (management_layer_allocator) |
| 86 | + TieredSVSIndex<DataType>(svs_index, frontendIndex, *params, management_layer_allocator); |
62 | 87 | } |
63 | 88 | #endif |
| 89 | +BFParams NewBFParams(const TieredIndexParams *params); |
| 90 | +} // namespace TieredSVSFactory |
| 91 | +#endif |
64 | 92 |
|
65 | 93 | }; // namespace TieredFactory |
0 commit comments