Given a input dataset with vectors and a query dataset, for every query vector find:
- The true nearest neighbor of the input dataset.
- The aproximate nearest neighbor of the input dataset.
- The aproximate N nearest neighbors of the input dataset.
- All vectors inside a given range R. (approximate search)
In order to find the aproximate nearest neighbor(s) we use:
- Locality-sensitive hashing (LSH)
- Projection to Hypercube
Vector Clustering.
The initialization of the clusters is done using kMeans++.
The assignment to each cluster can be performed by each of the following:
- Lloyds assignment.
- LSH reverse assignment using Range search.
- Hypercube reverse assignment using Range search.