1515 */
1616
1717#include " dynamic_vamana_index.h"
18- #include " svs_runtime_utils.h"
1918#include " dynamic_vamana_index_impl.h"
19+ #include " svs_runtime_utils.h"
2020
2121#include < algorithm>
2222#include < memory>
2626#include < svs/core/data.h>
2727#include < svs/core/distance.h>
2828#include < svs/core/query_result.h>
29- #include < svs/lib/float16.h>
30- #include < svs/orchestrators/dynamic_vamana.h>
3129#include < svs/cpuid.h>
3230#include < svs/extensions/vamana/scalar.h>
31+ #include < svs/lib/float16.h>
32+ #include < svs/orchestrators/dynamic_vamana.h>
3333#include < svs/quantization/scalar/scalar.h>
3434
3535#include SVS_LVQ_HEADER
@@ -45,8 +45,8 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
4545
4646 DynamicVamanaIndexManagerBase (std::unique_ptr<Impl> impl)
4747 : impl_{std::move (impl)} {
48- assert (impl_ != nullptr );
49- }
48+ assert (impl_ != nullptr );
49+ }
5050
5151 DynamicVamanaIndexManagerBase (const DynamicVamanaIndexManagerBase&) = delete ;
5252 DynamicVamanaIndexManagerBase& operator =(const DynamicVamanaIndexManagerBase&) = delete ;
@@ -56,25 +56,26 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
5656
5757 Status add (size_t n, const size_t * labels, const float * x) noexcept override {
5858 SVS_RUNTIME_TRY_BEGIN
59- svs::data::ConstSimpleDataView<float > data{x, n, impl_->dimensions ()};
60- std::span<const size_t > lbls (labels, n);
61- impl_->add (data, lbls);
62- return Status_Ok;
59+ svs::data::ConstSimpleDataView<float > data{x, n, impl_->dimensions ()};
60+ std::span<const size_t > lbls (labels, n);
61+ impl_->add (data, lbls);
62+ return Status_Ok;
6363 SVS_RUNTIME_TRY_END
6464 }
6565
66- Status remove_selected (size_t * num_removed, const IDFilter& selector) noexcept override {
66+ Status
67+ remove_selected (size_t * num_removed, const IDFilter& selector) noexcept override {
6768 SVS_RUNTIME_TRY_BEGIN
68- *num_removed = impl_->remove_selected (selector);
69- return Status_Ok;
69+ *num_removed = impl_->remove_selected (selector);
70+ return Status_Ok;
7071 SVS_RUNTIME_TRY_END
7172 }
7273
7374 Status remove (size_t n, const size_t * labels) noexcept override {
7475 SVS_RUNTIME_TRY_BEGIN
75- std::span<const size_t > lbls (labels, n);
76- impl_->remove (lbls);
77- return Status_Ok;
76+ std::span<const size_t > lbls (labels, n);
77+ impl_->remove (lbls);
78+ return Status_Ok;
7879 SVS_RUNTIME_TRY_END
7980 }
8081
@@ -88,9 +89,10 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
8889 IDFilter* filter = nullptr
8990 ) const noexcept override {
9091 SVS_RUNTIME_TRY_BEGIN
91- // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and here
92- impl_->search (n, x, k, distances, labels, params, filter);
93- return Status_Ok;
92+ // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
93+ // here
94+ impl_->search (n, x, k, distances, labels, params, filter);
95+ return Status_Ok;
9496 SVS_RUNTIME_TRY_END
9597 }
9698
@@ -103,30 +105,33 @@ struct DynamicVamanaIndexManagerBase : public DynamicVamanaIndex {
103105 IDFilter* filter = nullptr
104106 ) const noexcept override {
105107 SVS_RUNTIME_TRY_BEGIN
106- // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and here
107- impl_->range_search (n, x, radius, results, params, filter);
108- return Status_Ok;
108+ // TODO wrap arguments into proper data structures in DynamicVamanaIndexImpl and
109+ // here
110+ impl_->range_search (n, x, radius, results, params, filter);
111+ return Status_Ok;
109112 SVS_RUNTIME_TRY_END
110113 }
111114
112115 Status reset () noexcept override {
113116 SVS_RUNTIME_TRY_BEGIN
114- impl_->reset ();
115- return Status_Ok;
117+ impl_->reset ();
118+ return Status_Ok;
116119 SVS_RUNTIME_TRY_END
117120 }
118121
119122 Status save (std::ostream& out) const noexcept override {
120123 SVS_RUNTIME_TRY_BEGIN
121- impl_->save (out);
122- return Status_Ok;
124+ impl_->save (out);
125+ return Status_Ok;
123126 SVS_RUNTIME_TRY_END
124127 }
125128};
126129
127130using DynamicVamanaIndexManager = DynamicVamanaIndexManagerBase<DynamicVamanaIndexImpl>;
128- using DynamicVamanaIndexLeanVecImplTrainedManager = DynamicVamanaIndexManagerBase<DynamicVamanaIndexLeanVecImplTrained>;
129- using DynamicVamanaIndexLeanVecImplDimsManager = DynamicVamanaIndexManagerBase<DynamicVamanaIndexLeanVecImplDims>;
131+ using DynamicVamanaIndexLeanVecImplTrainedManager =
132+ DynamicVamanaIndexManagerBase<DynamicVamanaIndexLeanVecImplTrained>;
133+ using DynamicVamanaIndexLeanVecImplDimsManager =
134+ DynamicVamanaIndexManagerBase<DynamicVamanaIndexLeanVecImplDims>;
130135
131136} // namespace
132137
@@ -140,25 +145,33 @@ Status DynamicVamanaIndex::build(
140145) noexcept {
141146 *index = nullptr ;
142147 SVS_RUNTIME_TRY_BEGIN
143- auto impl = std::make_unique<DynamicVamanaIndexImpl>(dim, metric, storage_kind, params, default_search_params);
144- *index = new DynamicVamanaIndexManager{std::move (impl)};
145- return Status_Ok;
148+ auto impl = std::make_unique<DynamicVamanaIndexImpl>(
149+ dim, metric, storage_kind, params, default_search_params
150+ );
151+ *index = new DynamicVamanaIndexManager{std::move (impl)};
152+ return Status_Ok;
146153 SVS_RUNTIME_TRY_END
147154}
148155
149156Status DynamicVamanaIndex::destroy (DynamicVamanaIndex* index) noexcept {
150157 SVS_RUNTIME_TRY_BEGIN
151- delete index;
152- return Status_Ok;
158+ delete index;
159+ return Status_Ok;
153160 SVS_RUNTIME_TRY_END
154161}
155162
156- Status DynamicVamanaIndex::load (DynamicVamanaIndex** index, std::istream& in, MetricType metric, StorageKind storage_kind) noexcept {
163+ Status DynamicVamanaIndex::load (
164+ DynamicVamanaIndex** index,
165+ std::istream& in,
166+ MetricType metric,
167+ StorageKind storage_kind
168+ ) noexcept {
157169 *index = nullptr ;
158170 SVS_RUNTIME_TRY_BEGIN
159- std::unique_ptr<DynamicVamanaIndexImpl> impl{DynamicVamanaIndexImpl::load (in, metric, storage_kind)};
160- *index = new DynamicVamanaIndexManager{std::move (impl)};
161- return Status_Ok;
171+ std::unique_ptr<DynamicVamanaIndexImpl> impl{
172+ DynamicVamanaIndexImpl::load (in, metric, storage_kind)};
173+ *index = new DynamicVamanaIndexManager{std::move (impl)};
174+ return Status_Ok;
162175 SVS_RUNTIME_TRY_END
163176}
164177
@@ -174,9 +187,11 @@ Status DynamicVamanaIndexLeanVec::build(
174187) noexcept {
175188 *index = nullptr ;
176189 SVS_RUNTIME_TRY_BEGIN
177- auto impl = std::make_unique<DynamicVamanaIndexLeanVecImplDims>(dim, metric, storage_kind, leanvec_dims, params, default_search_params);
178- *index = new DynamicVamanaIndexLeanVecImplDimsManager{std::move (impl)};
179- return Status_Ok;
190+ auto impl = std::make_unique<DynamicVamanaIndexLeanVecImplDims>(
191+ dim, metric, storage_kind, leanvec_dims, params, default_search_params
192+ );
193+ *index = new DynamicVamanaIndexLeanVecImplDimsManager{std::move (impl)};
194+ return Status_Ok;
180195 SVS_RUNTIME_TRY_END
181196}
182197
@@ -192,10 +207,13 @@ Status DynamicVamanaIndexLeanVec::build(
192207) noexcept {
193208 *index = nullptr ;
194209 SVS_RUNTIME_TRY_BEGIN
195- auto training_data_impl = static_cast <const LeanVecTrainingDataManager*>(training_data)->impl_ ;
196- auto impl = std::make_unique<DynamicVamanaIndexLeanVecImplTrained>(dim, metric, storage_kind, training_data_impl, params, default_search_params);
197- *index = new DynamicVamanaIndexLeanVecImplTrainedManager{std::move (impl)};
198- return Status_Ok;
210+ auto training_data_impl =
211+ static_cast <const LeanVecTrainingDataManager*>(training_data)->impl_ ;
212+ auto impl = std::make_unique<DynamicVamanaIndexLeanVecImplTrained>(
213+ dim, metric, storage_kind, training_data_impl, params, default_search_params
214+ );
215+ *index = new DynamicVamanaIndexLeanVecImplTrainedManager{std::move (impl)};
216+ return Status_Ok;
199217 SVS_RUNTIME_TRY_END
200218}
201219
0 commit comments