in lib/metrics.py [0:0]
def get_nearestneighbors_faiss(xq, xb, k, device, needs_exact=True, verbose=False):
assert device in ["cpu", "cuda"]
if verbose:
print("Computing nearest neighbors (Faiss)")
if needs_exact or device == 'cuda':
index = faiss.IndexFlatL2(xq.shape[1])
else:
index = faiss.index_factory(xq.shape[1], "HNSW32")
index.hnsw.efSearch = 64
if device == 'cuda':
index = faiss.index_cpu_to_all_gpus(index)
start = time.time()
index.add(xb)
_, I = index.search(xq, k)
if verbose:
print(" NN search (%s) done in %.2f s" % (
device, time.time() - start))
return I