Skip to main content

Smaller & Faster Single-File Vector Search Engine from Unum

Project description

USearch

Faster & Smaller Single-File
Search Engine for Vectors & Texts


Discord     LinkedIn     Twitter     Blog     GitHub

Euclidean • Angular • Bitwise • Haversine • User-Defined Metrics
C++ 11Python 3JavaScriptJavaRustC 99Objective-CSwiftC#GoLangWolfram
Linux • MacOS • Windows • iOS • Docker • WebAssembly


Comparison with FAISS

FAISS is a widely recognized standard for high-performance vector search engines. USearch and FAISS both employ the same HNSW algorithm, but they differ significantly in their design principles. USearch is compact and broadly compatible without sacrificing performance, with a primary focus on user-defined metrics and fewer dependencies.

FAISS USearch
Implementation 84 K SLOC in faiss/ 3 K SLOC in usearch/
Supported metrics 9 fixed metrics Any User-Defined metrics
Supported languages C++, Python 10 languages
Supported ID types uint32_t, uint64_t uint32_t, uint40_t, uint64_t
Dependencies BLAS, OpenMP None
Bindings SWIG Native
Acceleration Learned Quantization Downcasting

Base functionality is identical to FAISS, and the interface must be familiar if you have ever investigated Approximate Nearest Neighbors search:

$ pip install usearch

import numpy as np
from usearch.index import Index

index = Index(
    ndim=3, # Define the number of dimensions in input vectors
    metric='cos', # Choose 'l2sq', 'haversine' or other metric, default = 'ip'
    dtype='f32', # Quantize to 'f16' or 'i8' if needed, default = 'f32'
    connectivity=16, # Optional: How frequent should the connections in the graph be
    expansion_add=128, # Optional: Control the recall of indexing
    expansion_search=64, # Optional: Control the quality of search
)

vector = np.array([0.2, 0.6, 0.4])
index.add(42, vector)
matches: Matches = index.search(vector, 10)

assert len(index) == 1
assert len(matches) == 1
assert matches[0].key == 42
assert matches[0].distance <= 0.001
assert np.allclose(index[42], vector)

Comparing the performance of FAISS against USearch on 1 Million 96-dimensional vectors from the famous Deep1B dataset, once can expect the following numbers on modern AWS c7g.metal instances.

FAISS, f32 USearch, f32 USearch, f16 USearch, i8
Batch Insert 16 K/s 73 K/s 100 K/s 104 K/s +550%
Batch Search 82 K/s 103 K/s 113 K/s 134 K/s +63%
Bulk Insert 76 K/s 105 K/s 115 K/s 202 K/s +165%
Bulk Search 118 K/s 174 K/s 173 K/s 304 K/s +157%
Recall @ 10 99% 99.2% 99.1% 99.2%

HNSW was configured with identical hyper-parameters: connectivity M=16, expansion @ construction efConstruction=128, and expansion @ search ef=64. Batch size is 256. Jump to the Performance Tuning section to read about the effects of those hyper-parameters.

User-Defined Functions

While most vector search packages concentrate on just a couple of metrics - "Inner Product distance" and "Euclidean distance," USearch extends this list to include any user-defined metrics. This flexibility allows you to customize your search for a myriad of applications, from computing geo-spatial coordinates with the rare Haversine distance to creating custom metrics for composite embeddings from multiple AI models.

USearch: Vector Search Approaches

Unlike older approaches indexing high-dimensional spaces, like KD-Trees and Locality Sensitive Hashing, HNSW doesn't require vectors to be identical in length. They only have to be comparable. So you can apply it in obscure applications, like searching for similar sets or fuzzy text matching, using GZip as a distance function.

Read more about JIT and UDF in USearch Python SDK.

Memory Efficiency, Downcasting, and Quantization

Training a quantization model and dimension-reduction is a common approach to accelerate vector search. Those, however, are only sometimes reliable, can significantly affect the statistical properties of your data, and require regular adjustments if your distribution shifts.

USearch uint40_t support

Instead, we have focused on high-precision arithmetic over low-precision downcasted vectors. The same index, and add and search operations will automatically down-cast or up-cast between f32_t, f16_t, f64_t, and i8_t representations, even if the hardware doesn't natively support it. Continuing the topic of memory efficiency, we provide a uint40_t to allow collection with over 4B+ vectors without allocating 8 bytes for every neighbor reference in the proximity graph.

Serialization & Serving Index from Disk

USearch supports multiple forms of serialization:

  • Into a file defined with a path.
  • Into a stream defined with a callback, serializing or reconstructing incrementally.
  • Into a buffer of fixed length, or a memory-mapped file, that supports random access.

The latter allows you to serve indexes from external memory, enabling you to optimize your server choices for indexing speed and serving costs. This can result in 20x cost reduction on AWS and other public clouds.

index.save("index.usearch")

loaded_copy = index.load("index.usearch")
view = Index.restore("index.usearch", view=True)

other_view = Index(ndim=..., metric=CompiledMetric(...))
other_view.view("index.usearch")

Exact vs. Approximate Search

Approximate search methods, such as HNSW, are predominantly used when an exact brute-force search becomes too resource-intensive. This typically occurs when you have millions of entries in a collection. For smaller collections, we offer a more direct approach with the search method.

from usearch.index import search, MetricKind, Matches, BatchMatches
import numpy as np

# Generate 10'000 random vectors with 1024 dimensions
vectors = np.random.rand(10_000, 1024).astype(np.float32)
vector = np.random.rand(1024).astype(np.float32)

one_in_many: Matches = search(vectors, vector, 50, MetricKind.L2sq, exact=True)
many_in_many: BatchMatches = search(vectors, vectors, 50, MetricKind.L2sq, exact=True)

By passing the exact=True argument, the system bypasses indexing altogether and performs a brute-force search through the entire dataset using SIMD-optimized similarity metrics from SimSIMD. When compared to FAISS's IndexFlatL2 in Google Colab, USearch may offer up to a 20x performance improvement:

  • faiss.IndexFlatL2: 55.3 ms.
  • usearch.index.search: 2.54 ms.

Indexes for Multi-Index Lookups

For larger workloads targeting billions or even trillions of vectors, parallel multi-index lookups become invaluable. These lookups prevent the need to construct a single, massive index, allowing users to query multiple smaller ones instead.

from usearch.index import Indexes

multi_index = Indexes(
    indexes: Iterable[usearch.index.Index] = [...],
    paths: Iterable[os.PathLike] = [...],
    view: bool = False,
    threads: int = 0,
)
multi_index.search(...)

Clustering

Once the index is constructed, it can be used to cluster entries much faster. In essense, the Index itself can be seen as a clustering, and it allows iterative deepening.

clustering = index.cluster(
    min_count=10, # Optional
    max_count=15, # Optional
    threads=..., # Optional
)

# Get the clusters and their sizes
centroid_keys, sizes = clustering.centroids_popularity

# Use Matplotlib draw a histogram
clustering.plot_centroids_popularity()

# Export a NetworkX graph of the clusters
g = clustering.network

# Get members of a specific cluster
first_members = clustering.members_of(centroid_keys[0])

# Deepen into that cluster spliting it into more parts, all same arguments supported
sub_clustering = clustering.subcluster(min_count=..., max_count=...)

Using Scikit-Learn, on a 1 Million point dataset, one may expect queries to take anywhere from minutes to hours, depending on the number of clusters you want to highlight. For 50'000 clusters the performance difference between USearch and conventional clustering methods may easily reach 100x.

Joins, One-to-One, One-to-Many, and Many-to-Many Mappings

One of the big questions these days is how will AI change the world of databases and data management. Most databases are still struggling to implement high-quality fuzzy search, and the only kind of joins they know are deterministic. A join is different from searching for every entry, as it requires a one-to-one mapping, banning collisions among separate search results.

Exact Search Fuzzy Search Semantic Search ?
Exact Join Fuzzy Join ? Semantic Join ??

Using USearch one can implement sub-quadratic complexity approximate, fuzzy, and semantic joins. This can come in handy in any fuzzy-matching tasks, common to Database Management Software.

men = Index(...)
women = Index(...)
pairs: dict = men.join(women, max_proposals=0, exact=False)

Read more in post: From Dating to Vector Search - "Stable Marriages" on a Planetary Scale 👩‍❤️‍👨

Functionality

By now, the core functionality is supported across all bindings. Broader functionality is ported per request.

C++ 11 Python 3 C 99 Java JavaScript Rust GoLang Swift
Add, search
Save, load, view
User-defined metrics
Joins
Variable-length vectors
4B+ capacities

Application Examples

USearch + AI = Multi-Modal Semantic Search

USearch Semantic Image Search

AI has a growing number of applications, but one of the coolest classic ideas is to use it for Semantic Search. One can take an encoder model, like the multi-modal UForm, and a web-programming framework, like UCall, and build a text-to-image search platform in just 20 lines of Python.

import ucall
import uform
import usearch

import numpy as np
import PIL as pil

server = ucall.Server()
model = uform.get_model('unum-cloud/uform-vl-multilingual')
index = usearch.index.Index(ndim=256)

@server
def add(key: int, photo: pil.Image.Image):
    image = model.preprocess_image(photo)
    vector = model.encode_image(image).detach().numpy()
    index.add(key, vector.flatten(), copy=True)

@server
def search(query: str) -> np.ndarray:
    tokens = model.preprocess_text(query)
    vector = model.encode_text(tokens).detach().numpy()
    matches = index.search(vector.flatten(), 3)
    return matches.keys

server.run()

A more complete demo with Streamlit is available on GitHub. We have pre-processed some commonly used datasets, cleaned the images, produced the vectors, and pre-built the index.

Dataset Modalities Images Download
Unsplash Images & Descriptions 25 K HuggingFace / Unum
Conceptual Captions Images & Descriptions 3 M HuggingFace / Unum
Arxiv Titles & Abstracts 2 M HuggingFace / Unum

USearch + RDKit = Molecular Search

Comparing molecule graphs and searching for similar structures is expensive and slow. It can be seen as a special case of the NP-Complete Subgraph Isomorphism problem. Luckily, domain-specific approximate methods exist. The one commonly used in Chemistry, is to generate structures from SMILES, and later hash them into binary fingerprints. The latter are searchable with bitwise similarity metrics, like the Tanimoto coefficient. Below is an example using the RDKit package.

from usearch.index import Index, MetricKind
from rdkit import Chem
from rdkit.Chem import AllChem

import numpy as np

molecules = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO')]
encoder = AllChem.GetRDKitFPGenerator()

fingerprints = np.vstack([encoder.GetFingerprint(x) for x in molecules])
fingerprints = np.packbits(fingerprints, axis=1)

index = Index(ndim=2048, metric=MetricKind.Tanimoto)
keys = np.arange(len(molecules))

index.add(keys, fingerprints)
matches = index.search(fingerprints, 10)

USearch + POI Coordinates = GIS Applications... on iOS?

USearch Maps with SwiftUI

With Objective-C and Swift iOS bindings, USearch can be easily used in mobile applications. The SwiftVectorSearch project illustrates how to build a dynamic, real-time search system on iOS. In this example, we use 2-dimensional vectors—encoded as latitude and longitude—to find the closest Points of Interest (POIs) on a map. The search is based on the Haversine distance metric, but can easily be extended to support high-dimensional vectors.

Integrations

Citations

@software{Vardanian_USearch_2022,
doi = {10.5281/zenodo.7949416},
author = {Vardanian, Ash},
title = {{USearch by Unum Cloud}},
url = {https://github.com/unum-cloud/usearch},
version = {2.3.2},
year = {2022},
month = jun,
}

Project details


Release history Release notifications | RSS feed

This version

2.3.2

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-2.3.2-cp311-cp311-win_amd64.whl (255.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

usearch-2.3.2-cp311-cp311-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.3.2-cp311-cp311-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.3.2-cp311-cp311-macosx_11_0_arm64.whl (396.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl (411.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.3.2-cp311-cp311-macosx_10_9_universal2.whl (774.5 kB view details)

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

usearch-2.3.2-cp310-cp310-win_amd64.whl (253.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.3.2-cp310-cp310-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.3.2-cp310-cp310-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.3.2-cp310-cp310-macosx_11_0_arm64.whl (396.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl (410.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.3.2-cp310-cp310-macosx_10_9_universal2.whl (773.4 kB view details)

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

usearch-2.3.2-cp39-cp39-win_amd64.whl (254.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.3.2-cp39-cp39-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.3.2-cp39-cp39-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.3.2-cp39-cp39-macosx_11_0_arm64.whl (396.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl (410.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.3.2-cp39-cp39-macosx_10_9_universal2.whl (773.5 kB view details)

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

usearch-2.3.2-cp38-cp38-win_amd64.whl (253.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.3.2-cp38-cp38-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.3.2-cp38-cp38-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.3.2-cp38-cp38-macosx_11_0_arm64.whl (396.0 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.3.2-cp38-cp38-macosx_10_9_x86_64.whl (410.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.3.2-cp38-cp38-macosx_10_9_universal2.whl (773.4 kB view details)

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

usearch-2.3.2-cp37-cp37m-win_amd64.whl (254.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.3.2-cp37-cp37m-manylinux_2_28_x86_64.whl (4.1 MB view details)

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

usearch-2.3.2-cp37-cp37m-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.3.2-cp37-cp37m-macosx_10_9_x86_64.whl (407.0 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file usearch-2.3.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: usearch-2.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 255.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for usearch-2.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d0f9073bd147aa7658fa426a5d71eaf07cd44bdd39858c6e95dd81c602dc3ee8
MD5 6a243464db3ef2a13b617230481f3fa1
BLAKE2b-256 5212abbde89bfca137343169d8c877774f0b4375d5a8f2dc4ff5cc1459899209

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fdf4935cd1cb4f76289184dff0e2387eda4c6bc74f3f8ae1b825f035bfbfdf5
MD5 6d951efbb7548fa23cc40490937d2fc0
BLAKE2b-256 08f53d9a63e4e89ce8eaf6ad8f70552869dac076eab110b54ccd80d2f345e59c

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9d8581ce198a8dee0f4f4e2f9b74692a4c9212b85902a4bd3d84495cdd6e4c5
MD5 690741ed96fc2755375f3f3b207333bd
BLAKE2b-256 83af60f89d1ab7687a994d3dc5ff084ae582df853622729781a6807ccf8b3a25

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b578e93f831354a240eb818fc637264a2cc6eaeb2affd59a75722e8c8f677021
MD5 587d656764df85bcfdb6516dfa5f6a2f
BLAKE2b-256 8682143340853ed24b0dbb74e7f1b5fccdd7fe05267057dc9616ccaf5855bbf1

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0628994690037b77b91ecee2abe30e9f56f088901a81f351fd1bedfaf72113e2
MD5 51d83d81ce365fc37f270cc18079c9d2
BLAKE2b-256 b656669f046007795ed3a69aa41de426fe6ede6a09db8a8fdd81ea8e9836b6ae

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d96a30f87d80e0943a9eb5ca4e010dabcf94d5e7fc3c6513f95bb867d091a652
MD5 dc8bdd8de3b8ec37ae18dfd305821fb3
BLAKE2b-256 f54ec1fdb8915ecda7b89445ade7d76d4409c6b661ce1010d5747f43b6bb4b63

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: usearch-2.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 253.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for usearch-2.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c246bbfb27a936098dc546be70d2a877065378e9e6a91bdeae5d302244b26819
MD5 ef3343ba5e0416c19a2bc1b426030b51
BLAKE2b-256 2d8250c187cba82b44ad5d7a18fc3a5baa7340010429c9c683d7a64f6b6e2902

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 da5e812010ecc744ade9055db1c1e00303ccf59a0346048eec06807ee1358ba9
MD5 4d6c71440b979d8d1fa9ec717926bc02
BLAKE2b-256 103aa724e76beb3361c23f07159196b8b921c6d631869a740f68459a2730e04f

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 84982d61c5cbc02cd30f74f1b1005262e6e0ebf6a542ae65c100c6f514df6a0b
MD5 cabd4eb7a9f1697e9cb5bff9396d5141
BLAKE2b-256 bb1d0d7cfe63efb2e091b5757a68c11dcf752396dcbb0397d505cf4abb72198b

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fdf78701ba10309a851bc6b0a360af43ffc0b57eea6f706c08af0c241e7bf12
MD5 1a034c9c8c46fdb4dd90ff5b5f5d52f0
BLAKE2b-256 6ba85c92ba654ca2fc0e777b86145ce793e93928144575558d92ea86515912d0

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e73987e87d43018772e30c63fe24054a6624a106b50e03b945c7e0784e4ced9a
MD5 45932a2b71a55f1873a345f15660d260
BLAKE2b-256 ecb00f29be27861178bc940e5de724f635d38f779cd87c749f808d77df802dde

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5926bf4af767901faed95d3d229c08c7cd6f8a7fe7d19ebb8fc7849c1ea61b0c
MD5 4eaabfcf6d84ee2495c22701299f8014
BLAKE2b-256 119a83eb82d6beab19bad428ef26b019667b36ee3b2e5d802c455923d9f19718

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: usearch-2.3.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 254.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for usearch-2.3.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 bba1a958c35ae0b09862c2a066da1e5c0ffe16c72402b474eb1b339fd02ce569
MD5 aa6c93d1793ca4e3a44f486ac14eb835
BLAKE2b-256 be0584c8b7f285d931a0942a7715cd7bde3340d1011ddf848ed395085273fac5

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e29e42bfcbb954bb4158fe2aadd99fe8ac7ed9fbcd0388bf7b45f174a98711c4
MD5 58da201e5cc885dbd39d77f268068859
BLAKE2b-256 5eb3c51a0459ac297d42468acda26d77bd41e1fb6b9beb046e83488fbdf7db92

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a313cc9a902f6a34ae38d145227a28e16b909b9aab2e55be43b76c730dd73d18
MD5 79f4bcf303fc2e3f465adf4ce394a4d9
BLAKE2b-256 1d8a0ace526364d465fe09f381e963028f65142bcdb31f110f2a3b89c701bdea

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd30a907f949d2bb775ea1c378efba4175450c371339a498a1735af1dfc7d0d6
MD5 9fa9d9bce03502aa0979885d91074ca5
BLAKE2b-256 afa442c901552c2012b94d34a9bdc9e089b511fa0bc46fdf722c905e8289a3fa

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b0c9c8d2a768c4d650b8d13b2ac9a83f6a2b46137035bbc29fafbd1f1a0e1081
MD5 28958f4228dfcaf50619768e07b68263
BLAKE2b-256 8e2b1c397987fd73db758b157e3c1c840ccaf91417adfcb2442bccc9b1df4ae0

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 16059874932f4edfe4b31a6addca36e3c9d3f65839682bb5baf1f6b820e94394
MD5 7ce8e580a73f7d23b15e614f33953143
BLAKE2b-256 f8ec608a161d536f98fab0928cb05d3b863b50a642dd720fe0c74a4a1b995989

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: usearch-2.3.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 253.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for usearch-2.3.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7ca65b9a645b2b4521e5c59c3c89fc03a50e6205d01b63f9e748ef01bc7e50ad
MD5 b9154494886de4753a132cec5b3d8109
BLAKE2b-256 9e15c8d7578ec24e4d192174d272c07221a2d81bd29cb48004efeeaf761f6da2

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 035a8948b75dc79b218839cfc1fa23e54672bb3c6eb0dd3cc2b59a78e7173ace
MD5 37f2106067db9fda3852e8e54b7b8aed
BLAKE2b-256 f9b46209a9fd998c9aae4fc99587bbcecfb05f043c052fa5c87751c348a14c68

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d3af372e814277531b49bdb4e6d5e97fda1d270637574a72d9e370bbde993d0d
MD5 f607c37fd3f3257ded49c9b9b93531af
BLAKE2b-256 31227004109b9674411bb1d5a5c06ee0a47f31cce9873d6f44156ee56c748d24

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f57cd0b81b4abc41e647162823ba757aac6c4acac5a26eabd34a02ad2cb44197
MD5 5e28bfcf44966faa06f074dcddb8e8fb
BLAKE2b-256 97d61ee2723ad2a9f66feeda56d9a9ca18173ecf479b53bb7fe7172dea77de37

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ca2b451cee4574144594fc2ab43fc7d5ad5f7dca3a2a5850878d3faafd53200f
MD5 453fb470bb9ae5e223471e4e41198d89
BLAKE2b-256 0401d7c1192d4c7df22d8915127be410e6238e01d148db70e0f98ecbca70106e

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 54605cf18f62c911248fef2865706636bf066650df19a33aca11e32eff425480
MD5 8a1846fec433b6d5428204eb337475af
BLAKE2b-256 770c966cc6ee42d28be577d4321a9902417ea663c38b6d51c56eb39b7198f9b5

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: usearch-2.3.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 254.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for usearch-2.3.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1505817f469e491e38dad1714bba10e83c02996ab3b94e450ecf98d87beee484
MD5 8a899c094156fcbe928d4b021ac08627
BLAKE2b-256 03005498692edd3750fdcd3d3896ca9153f213fdac3570e4853845b3d03b576a

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp37-cp37m-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20c40cb44a8ef5694ecb5d9b7852e7147933ef39eb4aee5cce6bbdffe98e1b8a
MD5 44a1d2f431e5c64462d1a04e4818cad1
BLAKE2b-256 50636b84493ec5ec81dbd2cd8c6bf7278094cea149809f8b306a9632402af807

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp37-cp37m-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2b83c4b5ce75c4a4fcf78c33b04ca6d940f696b9aa23a380ee98a21468b6000
MD5 7400b39202d53da27352bc3b71cc0691
BLAKE2b-256 34e5c5e46486c026a2aad3d64022e50d640e10195356559fac65ed9276344b12

See more details on using hashes here.

File details

Details for the file usearch-2.3.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for usearch-2.3.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 913390437eac4774e3c06fc2f15c6592c2801308e2f8eb8c1fe0d3806d1f5ee8
MD5 cf141c326448f4cc26d1c0cc1d993966
BLAKE2b-256 31d6748916fb68a426627f6a888f4a45bbbaa7d52e0fe7b25d1f9920977e44a8

See more details on using hashes here.

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