Title some title party ha 😂, I also do not know why so see more talent
Hora is an approximate nearest neighbor search algorithm (wiki) library
Hora is implemented entirely based on Rust🦀, which turns out to be very, very fast, comparable to C++, and Hora is accelerated with SIMD, which is very fast ⚡️⚡️⚡. For details, see benchmark below.
Hora, “ほ passionate” in Japanese, pronounced like [H ōlə], means Wow, You see! , Look at that! . The name was inspired by the famous Japanese song “Komagiya ō ō ai UN Himi”.
Making:Github.com/hora-search…
Home page:horasearch.com/
Python library:Github.com/hora-search…
Javascript library:Github.com/hora-search…
Hora is the ANN algorithm library implemented by Rust. It is hoped that based on the advantages of Rust itself, it can provide multiple secure language libraries that can be deployed anywhere. It is currently available on Linux, macOS and Windows, as well as WebAssembly, and will support Android and IOS and embedded devices in the future
Demo
This is Hora’s online demo (you can find it here, try speed is highly recommended!! horasearch.com/)
👩 Face – Match [online demo], have a try!
🍷 Dream wine comments search [online demo], have a try!
benchmark
Hora is very fast, bench (compared to Faiss and rude)
Usage
Installation is extremely simple: Rust
[dependencies]
hora = "0.1.1"
Copy the code
Python
$ pip install horapy
Copy the code
Javascript (WebAssembly)
$ npm i horajs
Copy the code
Building from source
$ git clone https://github.com/hora-search/hora
$ cargo build
Copy the code
Using the API is also very simple:
Python
example [more info]
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
Copy the code
We welcome any participation and any contributions, including documentation and testing, are welcome. We use GitHub Issues to track issues and bugs. You can do Pull Requests, issues on GitHub
At the end of the day, if you think the project is good, or are interested in it, or you want to use it, feel free to star on Github or give us an issue
Making:Github.com/hora-search…
Python library:Github.com/hora-search…
Javascript library:Github.com/hora-search…