@@ -113,6 +113,7 @@ class HnswIndexHandler
113113 int64_t count,
114114 char *extra_infos);
115115 int get_vid_bound (int64_t &min_vid, int64_t &max_vid);
116+ uint64_t estimate_memory (uint64_t row_count);
116117 int knn_search (const vsag::DatasetPtr& query, int64_t topk,
117118 const std::string& parameters,
118119 const float *& dist, const int64_t *& ids, int64_t &result_size,
@@ -224,6 +225,11 @@ int HnswIndexHandler::get_vid_bound(int64_t &min_vid, int64_t &max_vid)
224225 return static_cast <int >(error);
225226}
226227
228+ uint64_t HnswIndexHandler::estimate_memory (uint64_t row_count)
229+ {
230+ return index_->EstimateMemory (row_count);
231+ }
232+
227233int HnswIndexHandler::knn_search (const vsag::DatasetPtr& query, int64_t topk,
228234 const std::string& parameters,
229235 const float *& dist, const int64_t *& ids, int64_t &result_size,
@@ -904,6 +910,17 @@ int get_extra_info_by_ids(VectorIndexPtr& index_handler,
904910 return ret;
905911}
906912
913+ uint64_t estimate_memory (VectorIndexPtr& index_handler,
914+ uint64_t row_count) {
915+ vsag::logger::debug (" TRACE LOG[estimate_memory]" );
916+ uint64_t estimate_memory_size = 0 ;
917+ if (index_handler != nullptr ) {
918+ HnswIndexHandler* hnsw = static_cast <HnswIndexHandler*>(index_handler);
919+ estimate_memory_size = hnsw->estimate_memory (row_count);
920+ }
921+ return estimate_memory_size;
922+ }
923+
907924int64_t example () {
908925 return 0 ;
909926}
@@ -977,4 +994,8 @@ extern int deserialize_bin_c(VectorIndexPtr& index_handler,const std::string dir
977994 return deserialize_bin (index_handler, dir);
978995}
979996
997+ extern uint64_t estimate_memory_c (VectorIndexPtr& index_handler, uint64_t row_count) {
998+ return estimate_memory (index_handler, row_count);
999+ }
1000+
9801001} // namespace obvectorlib
0 commit comments