horapy
1.0.0
[Homepage] [Document] [Examples] [Hora]
Python binding for the Hora Approximate Nearest Neighbor Search
Performant ⚡️
Multiple Indexes Support
Hierarchical Navigable Small World Graph Index(HNSWIndex)
(detail)Satellite System Graph (SSGIndex)
(detail)Product Quantization Inverted File(PQIVFIndex)
(detail)Random Projection Tree(RPTIndex)
(LSH, WIP)BruteForce (BruteForceIndex)
(naive implementation with SIMD)Portable
no_std
(WIP, partial)Windows
, Linux
and OS X
IOS
and Android
(WIP)BLAS
Reliability
Rust
compiler secure all codeRust
Multiple Distances Support ?
Dot Product Distance
Euclidean Distance
Manhattan Distance
Cosine Similarity
Productive
by aws t2.medium (CPU: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz)
more information
pip install horapy
import numpy as np
from horapy import HNSWIndex
dimension = 50
n = 1000
# init index instance
index = HNSWIndex(dimension, "usize")
samples = np.float32(np.random.rand(n, dimension))
for i in range(0, len(samples)):
# add node
index.add(np.float32(samples[i]), i)
index.build("euclidean") # build index
target = np.random.randint(0, n)
# 410 in Hora ANNIndex <HNSWIndexUsize> (dimension: 50, dtype: usize, max_item: 1000000, n_neigh: 32, n_neigh0: 64, ef_build: 20, ef_search: 500, has_deletion: False)
# has neighbors: [410, 736, 65, 36, 631, 83, 111, 254, 990, 161]
print("{} in {} nhas neighbors: {}".format(
target, index, index.search(samples[target], 10))) # search
The entire repo is under Apache License.