You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the hnswlib library, there is a distinction between internal IDs and external IDs. However, I noticed that in glass's hnsw index, what is returned during the search is the internal ID of the neighbor. When using single thread, the internal ID and external ID are completely consistent, so returning the internal ID will not affect the recall rate. However, in the case of multi-threading, this can become a problem.
After a series of experimental verifications, I confirmed the existence of this problem.
Server configuration: 96 cores, 512G memory
Dataset: deep1M, deep10M
Method:glass(hnsw),hnswlib
Parameters: R=32(M=16), efc=200, efs=500
It is worth noting that when using multi-core, recall is not stable because the internal ID and external ID are inconsistent due to concurrency issues.
In the hnswlib library, there is a distinction between internal IDs and external IDs. However, I noticed that in glass's hnsw index, what is returned during the search is the internal ID of the neighbor. When using single thread, the internal ID and external ID are completely consistent, so returning the internal ID will not affect the recall rate. However, in the case of multi-threading, this can become a problem.
After a series of experimental verifications, I confirmed the existence of this problem.
Server configuration: 96 cores, 512G memory
Dataset: deep1M, deep10M
Method:glass(hnsw),hnswlib
Parameters: R=32(M=16), efc=200, efs=500
Result(recall@100):
deep1M: glass(90.0532%), hnswlib(99.3282%)
deep10M: glass(92.6417%), hnswlib(97.8977%)
The text was updated successfully, but these errors were encountered: