hora wasm
1.0.0
[Homepage] [Document] [Examples] [Hora]
Javascript bidding for the Hora Approximate Nearest Neighbor Search
, in WebAssembly way.
Performant ⚡️
Multiple Indexes Support
Hierarchical Navigable Small World Graph Index(HNSWIndex)
(detail)Satellite System Graph (SSGIndex)
(detail)Product Quantization Inverted File(PQIVFIndex)
(detail)Random Projection Tree(RPTIndex)
(LSH, WIP)BruteForce (BruteForceIndex)
(naive implementation with SIMD)Reliability
Rust
compiler secure all codeRust
for all language libs such as Python lib
Multiple Distances Support ?
Dot Product Distance
Euclidean Distance
Manhattan Distance
Cosine Similarity
Productive
by aws t2.medium (CPU: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz)
more information
npm i horajs
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();
})();
The entire repo is under Apache License.