knncolle_hnsw
knncolle bindings for HNSW
Loading...
Searching...
No Matches
utils.hpp
1#ifndef KNNCOLLE_HNSW_UTILS_HPP
2#define KNNCOLLE_HNSW_UTILS_HPP
3
4#include "hnswlib/hnswalg.h"
5
6#include <functional>
7#include <string>
8#include <type_traits>
9
10namespace knncolle_hnsw {
11
15template<typename Input_>
16using I = std::remove_cv_t<std::remove_reference_t<Input_> >;
25inline static const char* save_name = "knncolle_hnsw::Hnsw";
26
42template<class HnswData_>
43std::function<void(const std::string&)>& custom_save_for_hnsw_data() {
44 static std::function<void(const std::string&)> fun;
45 return fun;
46}
47
67template<typename HnswData_>
68std::function<void(const std::string&, const hnswlib::SpaceInterface<HnswData_>*)>& custom_save_for_hnsw_distance() {
69 static std::function<void(const std::string&, const hnswlib::SpaceInterface<HnswData_>*)> fun;
70 return fun;
71}
72
92template<typename Distance_>
93std::function<void(const std::string&, const std::function<Distance_(Distance_)>&)>& custom_save_for_hnsw_normalize() {
94 static std::function<void(const std::string&, const std::function<Distance_(Distance_)>&)> fun;
95 return fun;
96}
97
118template<typename HnswData_>
119std::function<hnswlib::SpaceInterface<HnswData_>*(const std::string&, std::size_t)>& custom_load_for_hnsw_distance() {
120 static std::function<hnswlib::SpaceInterface<HnswData_>*(const std::string&, std::size_t)> fun;
121 return fun;
122}
123
142template<typename Distance_>
143std::function<std::function<Distance_(Distance_)>(const std::string&)>& custom_load_for_hnsw_normalize() {
144 static std::function<std::function<Distance_(Distance_)>(const std::string&)> fun;
145 return fun;
146}
147
148}
149
150#endif
knncolle bindings for HNSW search.
Definition distances.hpp:13
std::function< hnswlib::SpaceInterface< HnswData_ > *(const std::string &, std::size_t)> & custom_load_for_hnsw_distance()
Definition utils.hpp:119
std::function< std::function< Distance_(Distance_)>(const std::string &)> & custom_load_for_hnsw_normalize()
Definition utils.hpp:143
std::function< void(const std::string &, const hnswlib::SpaceInterface< HnswData_ > *)> & custom_save_for_hnsw_distance()
Definition utils.hpp:68
std::function< void(const std::string &)> & custom_save_for_hnsw_data()
Definition utils.hpp:43
std::function< void(const std::string &, const std::function< Distance_(Distance_)> &)> & custom_save_for_hnsw_normalize()
Definition utils.hpp:93