[Homepage] [Document] [Examples] [Hora]
Javascript bidding for the Hora Approximate Nearest Neighbor Search, in WebAssembly way.
Features
-
Performant ⚡️
- SIMD-Accelerated (packed_simd)
- Stable algorithm implementation
- Multiple threads design
-
Multiple Indexes Support 🚀
-
Reliability 🔒
Rustcompiler secure all code- Memory managed by
Rustfor all language libs such asPython lib - Broad testing coverage
-
Multiple Distances Support 🧮
-
Productive ⭐
- Well documented
- Elegant and simple API, easy to learn
Benchmark
by aws t2.medium (CPU: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz) more information
Installation
npm i horajs
Example
import * as horajs from "horajs"; const demo = () => { const dimension = 50; var bf_idx = horajs.BruteForceIndexUsize.new(dimension); // var hnsw_idx = horajs.HNSWIndexUsize.new(dimension, 1000000, 32, 64, 20, 500, 16, false); for (var i = 0; i < 1000; i++) { var feature = []; for (var j = 0; j < dimension; j++) { feature.push(Math.random()); } bf_idx.add(feature, i); // add point } bf_idx.build("euclidean"); // build index var feature = []; for (var j = 0; j < dimension; j++) { feature.push(Math.random()); } console.log("bf result", bf_idx.search(feature, 10)); //bf result Uint32Array(10) [704, 113, 358, 835, 408, 379, 117, 414, 808, 826] } (async () => { await horajs.default(); await horajs.init_env(); demo(); })();
License
The entire repo is under Apache License.
