English | Français | 日本語 | 한국어 | Русский | 中文
[Homepage] [Document] [Examples]
Hora Search Everywhere!
Hora is an approximate nearest neighbor search algorithm (wiki) library. We implement all code in
Rust🦀 for reliability, high level abstraction and high speeds comparable to
「ほら」 in Japanese, sounds like
[hōlə], and means
You see! or
Look at that!. The name is inspired by a famous Japanese song
👩 Face-Match [online demo], have a try!
🍷 Dream wine comments search [online demo], have a try!
- SIMD-Accelerated (packed_simd)
- Stable algorithm implementation
- Multiple threads design
Supports Multiple Languages ☄️
- Can also be used as a service
Supports Multiple Indexes 🚀
Hierarchical Navigable Small World Graph Index (HNSWIndex)(details)
Satellite System Graph (SSGIndex)(details)
Product Quantization Inverted File(PQIVFIndex)(details)
Random Projection Tree(RPTIndex)(LSH, WIP)
BruteForce (BruteForceIndex)(naive implementation with SIMD)
No heavy dependencies, such as
Rustcompiler secures all code
- Memory managed by
Rustfor all language libraries such as
- Broad testing coverage
Supports Multiple Distances 🧮
Dot Product Distance
- Well documented
- Elegant, simple and easy to learn API
Building from source
aws t2.medium (CPU: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz) more information
Rust example [more info]
thank @vaaaaanquish for this complete pure
Rust 🦀 image search example, For more information about this example, you can click Pure Rust な近似最近傍探索ライブラリ hora を用いた画像検索を実装する
Python example [more info]
Java example [more info]
- Full test coverage
- Implement EFANNA algorithm to achieve faster KNN graph building
- Swift support and iOS/macOS deployment example
Related Projects and Comparison
Faiss, Annoy, ScaNN:
Hora's implementation is strongly inspired by these libraries.
Faissfocuses more on the GPU scenerio, and
Horais lighter than Faiss (no heavy dependencies).
Horaexpects to support more languages, and everything related to performance will be implemented by Rust🦀.
Annoyonly supports the
LSH (Random Projection)algorithm.
Faissare less user-friendly, (e.g. lack of documentation).
- Hora is ALL IN RUST 🦀.
Milvus, Vald, Jina AI
Valdalso support multiple languages, but serve as a service instead of a library
Milvusis built upon some libraries such as
Horais a library with all the algorithms implemented itself
We appreciate your participation!
We are glad to have you participate, any contributions are welcome, including documentations and tests.
You can create a
Pull Request or
Issue on GitHub, and we will review it as soon as possible.
We use GitHub issues for tracking suggestions and bugs.
Clone the repo
Try the changes
The entire repository is licensed under the Apache License.