← all repositories
hora-search/hora

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.

hora
Velocity · 7d
+1.4
★ / day
Trend
steady
star history

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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.