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…