Index creation, vector addition and search loop is 90x slower than identical loop for faiss.
Reproduced in Google colab.
import faiss
from usearch.index import Index
import numpy as np
# Set the seed for reproducibility
np.random.seed(42)
# Generate 500 random vectors of length 1024 with values between 0 and 1
vectors = np.random.rand(500, 1024)
vector=np.random.rand(1024)
%%timeit
# FAISS
indexf = faiss.IndexFlatL2(vectors.shape[-1])
indexf.add(np.array(vectors).astype(np.float32))
D, I = indexf.search(np.array([vector]), 50)
# 1.14 ms ± 4.34 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
index = Index(
ndim=vectors.shape[-1], # Define the number of dimensions in input vectors
metric='l2_sq', # Choose 'cos', 'l2sq', 'haversine' or other metric, default = 'ip'
)
index.add(labels= np.arange(len(vectors)), vectors=vectors)
matches, distances, count = index.search(vector, 50, exact=True)
# 94.7 ms ± 20.9 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Describe the bug
Index creation, vector addition and search loop is 90x slower than identical loop for faiss.
Reproduced in Google colab.
Steps to reproduce
Expected behavior
n/a
USearch version
latest pip
Operating System
ubuntu
Hardware architecture
x86
Which interface are you using?
Python bindings
Contact Details
No response
Is there an existing issue for this?
Code of Conduct