Content-Length: 321124 | pFad | https://github.com/hora-search/hora-wasm

CD GitHub - hora-search/hora-wasm: webassembly binding for Hora Approximate Nearest Neighbor Search Library
Skip to content

webassembly binding for Hora Approximate Nearest Neighbor Search Library

License

Notifications You must be signed in to change notification settings

hora-search/hora-wasm

Repository files navigation

hora-wasm

[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 🚀

    • 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 code
    • Memory managed by Rust for all language libs such as Python lib
    • Broad testing coverage
  • Multiple Distances Support 🧮

    • Dot Product Distance
      • equation
    • Euclidean Distance
      • equation
    • Manhattan Distance
      • equation
    • Cosine Similarity
      • equation
  • 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.

Releases

No releases published

Packages

No packages published








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://github.com/hora-search/hora-wasm

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy