A Rust ANN library that wants to be everywhere
Hora implements approximate-nearest-neighbor indexes in Rust, then wraps them for Python, JavaScript, Java, and more.
What it does
Hora is a library for approximate nearest neighbor search — the “find me vectors like this one, fast” problem that underpins search, recommendations, and image matching. It implements several index types (HNSW, SSG, PQIVF, brute-force) in Rust, with SIMD acceleration and multi-threading, then exposes them via bindings to other languages and WebAssembly.
The interesting bit
The project bets on Rust as the single implementation language for everything performance-critical, then aggressively ports outward. The README explicitly positions Hora against Faiss (“no heavy dependencies”), Annoy (“only supports LSH”), and Milvus/Vald (“serve as a service instead of a library”). It is a library-native alternative to service-heavy vector databases.
Key highlights
- Core algorithms: HNSW, SSG, PQIVF, plus brute-force with SIMD; distance metrics include Euclidean, cosine, Manhattan, dot product
- Language bindings: Python (
horapy), JavaScript/WebAssembly (horajs), Java (hora-java); Go, Ruby, Swift, R, Julia marked WIP - Claims no BLAS or other heavy dependencies
- Includes benchmark plot against fashion-mnist on AWS t2.medium (self-hosted benchmark repo)
- Apache 2.0 licensed
Caveats
- Several features are marked WIP: Go/Ruby/Swift/R/Julia bindings, iOS/Android support,
no_std,mmap, and the RPTIndex (LSH) - Roadmap lists “full test coverage” as unchecked, suggesting current coverage is incomplete
- Benchmarks are self-published; no independent validation mentioned
Verdict
Worth evaluating if you want an embeddable, multi-language ANN library without running a separate vector database service. Probably premature if you need mature Go/R/Swift bindings or guaranteed production hardening.