Upgrade hnsw dep.

This commit is contained in:
Kishore Nallan 2023-04-22 10:18:09 +05:30
parent d5112f72cb
commit 47f0808396
3 changed files with 12 additions and 12 deletions

View File

@ -160,8 +160,8 @@ new_git_repository(
new_git_repository(
name = "hnsw",
build_file = "//bazel:hnsw.BUILD",
commit = "21de18ffabea1a9d1e8b16b49afc6045d7707e4c",
remote = "https://github.com/typesense/hnswlib.git",
commit = "359b2ba87358224963986f709e593d799064ace6",
remote = "https://github.com/nmslib/hnswlib.git",
)
http_archive(

View File

@ -232,7 +232,7 @@ struct index_record {
}
};
class VectorFilterFunctor: public hnswlib::FilterFunctor {
class VectorFilterFunctor: public hnswlib::BaseFilterFunctor {
const uint32_t* filter_ids = nullptr;
const uint32_t filter_ids_length = 0;
@ -240,7 +240,7 @@ public:
explicit VectorFilterFunctor(const uint32_t* filter_ids, const uint32_t filter_ids_length) :
filter_ids(filter_ids), filter_ids_length(filter_ids_length) {}
bool operator()(unsigned int id) {
bool operator()(hnswlib::labeltype id) override {
if(filter_ids_length == 0) {
return true;
}
@ -251,13 +251,13 @@ public:
struct hnsw_index_t {
hnswlib::InnerProductSpace* space;
hnswlib::HierarchicalNSW<float, VectorFilterFunctor>* vecdex;
hnswlib::HierarchicalNSW<float>* vecdex;
size_t num_dim;
vector_distance_type_t distance_type;
hnsw_index_t(size_t num_dim, size_t init_size, vector_distance_type_t distance_type):
space(new hnswlib::InnerProductSpace(num_dim)),
vecdex(new hnswlib::HierarchicalNSW<float, VectorFilterFunctor>(space, init_size, 16, 200, 100, true)),
vecdex(new hnswlib::HierarchicalNSW<float>(space, init_size, 16, 200, 100, true)),
num_dim(num_dim), distance_type(distance_type) {
}

View File

@ -850,9 +850,9 @@ void Index::index_field_in_memory(const field& afield, std::vector<index_record>
if(afield.vec_dist == cosine) {
std::vector<float> normalized_vals(afield.num_dim);
hnsw_index_t::normalize_vector(float_vals, normalized_vals);
vec_index->insertPoint(normalized_vals.data(), (size_t)record.seq_id);
vec_index->addPoint(normalized_vals.data(), (size_t)record.seq_id, true);
} else {
vec_index->insertPoint(float_vals.data(), (size_t)record.seq_id);
vec_index->addPoint(float_vals.data(), (size_t)record.seq_id, true);
}
} catch(const std::exception &e) {
record.index_failure(400, e.what());
@ -2866,9 +2866,9 @@ Option<bool> Index::search(std::vector<query_tokens_t>& field_query_tokens, cons
if(field_vector_index->distance_type == cosine) {
std::vector<float> normalized_q(vector_query.values.size());
hnsw_index_t::normalize_vector(vector_query.values, normalized_q);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(normalized_q.data(), k, filterFunctor);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(normalized_q.data(), k, &filterFunctor);
} else {
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(vector_query.values.data(), k, filterFunctor);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(vector_query.values.data(), k, &filterFunctor);
}
}
@ -3113,9 +3113,9 @@ Option<bool> Index::search(std::vector<query_tokens_t>& field_query_tokens, cons
if(field_vector_index->distance_type == cosine) {
std::vector<float> normalized_q(vector_query.values.size());
hnsw_index_t::normalize_vector(vector_query.values, normalized_q);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(normalized_q.data(), k, filterFunctor);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(normalized_q.data(), k, &filterFunctor);
} else {
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(vector_query.values.data(), k, filterFunctor);
dist_labels = field_vector_index->vecdex->searchKnnCloserFirst(vector_query.values.data(), k, &filterFunctor);
}
std::vector<std::pair<uint32_t,float>> vec_results;