Skip to main content

The Mighty Tiny Vector Search Engine with Automatic Quantization and Hardware Acceleration

Project description

USearch

C++11 Single Header Vector Search
Compact, yet Powerful


Discord     LinkedIn     Twitter     Blog     GitHub

  • Single C++11 header implementation, easily extendible.
  • 4B+ sized space efficient point-clouds with uint40_t.
  • Half-precision support with maratyszcza/fp16.
  • View from disk, without loading into RAM.
  • Any metric, includes:
    • Euclidean, Dot-product, Cosine,
    • Jaccard, Hamming, Haversine.
    • Hardware-accelerated ashvardanian/simsimd.
  • Variable dimensionality vectors.
  • Don't copy vectors if not needed.
  • Bring your threads.
  • Multiple vectors per label.
  • Python bindings: pip install usearch
  • JavaScript bindings: npm install usearch
  • Rust bindings: cargo add usearch
  • Wolfram language bindings.
  • For Linux: GCC, Clang.
  • For MacOS: Apple Clang.
  • For Windows.
  • Multi-index lookups in Python.
  • Thread-safe reserve.
  • Distributed construction.

Usage

C++

To use in a C++ project simply copy the include/usearch/usearch.hpp header into your project.

using namespace unum::usearch;

index_gt<cos_gt<float>> index;
float vec[3] = {0.1, 0.3, 0.2};
index.add(/* label: */ 42, /* vector: */ {&vec, 3});
index.search(
  /* query: */ {&vec, 3}, 10 /* results */,
  /* callback: */ [](std::size_t label, float distance) { });

Alternatively fetch it with CMake:

FetchContent_Declare(usearch GIT_REPOSITORY https://github.com/unum-cloud/usearch.git)
FetchContent_MakeAvailable(usearch)

Features

Bring your Threads

Performance

TODO

  • JavaScript: Allow calling from "worker threads".
  • Rust: Allow passing a custom thread ID.

Project details


Release history Release notifications | RSS feed

This version

0.1.5

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

usearch-0.1.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (119.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (113.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (106.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-0.1.5-cp311-cp311-macosx_10_9_x86_64.whl (115.2 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-0.1.5-cp311-cp311-macosx_10_9_universal2.whl (219.7 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

usearch-0.1.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (119.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (113.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (106.7 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-0.1.5-cp310-cp310-macosx_10_9_x86_64.whl (115.2 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-0.1.5-cp310-cp310-macosx_10_9_universal2.whl (219.7 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

usearch-0.1.5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (119.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (113.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp39-cp39-macosx_11_0_arm64.whl (106.9 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-0.1.5-cp39-cp39-macosx_10_9_x86_64.whl (115.4 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-0.1.5-cp39-cp39-macosx_10_9_universal2.whl (220.0 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

usearch-0.1.5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (119.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (113.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp38-cp38-macosx_11_0_arm64.whl (106.6 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-0.1.5-cp38-cp38-macosx_10_9_x86_64.whl (115.1 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-0.1.5-cp38-cp38-macosx_10_9_universal2.whl (219.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

usearch-0.1.5-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (122.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp37-cp37m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (116.4 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp37-cp37m-macosx_10_9_x86_64.whl (114.8 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

usearch-0.1.5-cp36-cp36m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (122.2 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

usearch-0.1.5-cp36-cp36m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (116.4 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.24+ ARM64 manylinux: glibc 2.28+ ARM64

usearch-0.1.5-cp36-cp36m-macosx_10_9_x86_64.whl (114.8 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page