|
for (uint32_t i = 0; i < this->data_dim; i++) { |
loop condition should be
for (uint32_t i = 0; i < (this->data_dim-1); i++) {
this->data_dim is assigned at
|
this->data_dim = pq_file_dim; |
and pq_file_dim is assigned at
|
get_bin_metadata(pq_table_bin, pq_file_num_centroids, pq_file_dim); |
pq_file_dim is equal to number of dimensions of vectors in index file. However, In MIPS, original vectors are transformed with an additional dimension, which is sqrt(1-||x||/||w||). So vectors in index file are 1 more dimension than original vectors, whose number of dimensions are equal to queries'.
DiskANN/src/pq_flash_index.cpp
Line 849 in bc39cd0
loop condition should be
for (uint32_t i = 0; i < (this->data_dim-1); i++) {this->data_dimis assigned atDiskANN/src/pq_flash_index.cpp
Line 619 in bc39cd0
and
pq_file_dimis assigned atDiskANN/src/pq_flash_index.cpp
Line 608 in bc39cd0
pq_file_dimis equal to number of dimensions of vectors in index file. However, In MIPS, original vectors are transformed with an additional dimension, which is sqrt(1-||x||/||w||). So vectors in index file are 1 more dimension than original vectors, whose number of dimensions are equal to queries'.