# Hora Search Everywhere!
Hora, a approximate nearest neighbor search algorithm library. We implement all code in
Rust🦀 for reliability, high level abstraction and high speed comparable to
C++, these make it really suitable for Artificial Intellingence Computing scene.
「ほら」 in Japanese, sound like
You see! or
Look at that!. he name is inspired by a famous lyrics
「ほら あなたにとって大事な人ほど すぐそばにいるの」 of a famous Japanese song
小さな恋のうた, it means
You See, the most important people to you is always stay near you
# Approximate Nearest Neighbor
As shown in the picture below, we have a large data set. Each piece of data is an
array<float> (usually a float) representing a store. Now the request is also an
array<float>. We now hope that we Find k points with the smallest
make it in math language:
ND-dim query vectors
1D-dim query vector
for futher more information, I really recommend this speech tutorial
[CVPR20 Tutorial] Billion-scale Approximate Nearest Neighbor Search present in
# Key Features
- SIMD-Accelerated (packed_simd (opens new window))
- Stable algorithm implementation
- Multiple threads design
Multiple Languages Support ☄️
- also can serve as a service
Multiple Indexes Support 🚀
Hierarchical Navigable Small World Graph Index(HNSWIndex)(detail (opens new window))
Satellite System Graph (SSGIndex)(detail (opens new window))
Product Quantization Inverted File(PQIVFIndex)(detail (opens new window))
Random Projection Tree(RPTIndex)(LSH, WIP)
BruteForce (BruteForceIndex)(naive implementation with SIMD)
- No heavy dependency, such as
Rustcompiler secure all code
- Memory managed by
Rustfor all language libs such as
- Broad testing coverage
Multiple Distances Support 🧮
Dot Product Distance
- Well documented
- Elegant and simple API, easy to learn
# Related Projects and Comparison
Hora's implementation is strongly inspired by these lib.
Faissfocus more on the GPu scenerio, and
Horais lighter than Faiss, such as no heavy dependency.
Horaexpects to support more language, and everything related to performance shall be implemented by Rust🦀.
Faissare less user-friendly, such as lack of document.
- Hora is ALL IN RUST 🦀.
Valdalso support multiple languages, but serve as a service instead of a lib
Milvusis built upon some libs such as
Horais an algorithm lib with all the algo implemented by itself