import annoy import numpy as np import scipy.spatial.distance as ssd dim = 20 index = annoy.AnnoyIndex(dim, 'angular') vectors = [] for i in range(1000): vec = np.random.normal(size=dim) vec /= np.linalg.norm(vec) index.add_item(i, vec) vectors.append(vec) index.build(10) query = np.random.normal(size=dim) query /= np.linalg.norm(query) nns, distances = index.get_nns_by_vector(query, 10, include_distances=True) for nn_idx, dist in zip(nns, distances): print('annoy_dist = {}\teuclidean = {}\tdot = {}'.format(dist, ssd.euclidean(vectors[nn_idx], query), np.dot(vectors[nn_idx], query)))