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 = {1.0.0},
year = {2022},
month = jun,
}

Project details


Release history Release notifications | RSS feed

This version

2.2.1

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.2.1-cp311-cp311-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.2.1-cp311-cp311-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.2.1-cp311-cp311-macosx_11_0_arm64.whl (380.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl (397.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.2.1-cp311-cp311-macosx_10_9_universal2.whl (748.0 kB view details)

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

usearch-2.2.1-cp310-cp310-win_amd64.whl (245.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.2.1-cp310-cp310-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.2.1-cp310-cp310-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.2.1-cp310-cp310-macosx_11_0_arm64.whl (379.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl (395.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.2.1-cp310-cp310-macosx_10_9_universal2.whl (745.3 kB view details)

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

usearch-2.2.1-cp39-cp39-win_amd64.whl (245.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.2.1-cp39-cp39-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.2.1-cp39-cp39-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.2.1-cp39-cp39-macosx_11_0_arm64.whl (379.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl (395.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.2.1-cp39-cp39-macosx_10_9_universal2.whl (745.6 kB view details)

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

usearch-2.2.1-cp38-cp38-win_amd64.whl (245.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.2.1-cp38-cp38-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.2.1-cp38-cp38-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.2.1-cp38-cp38-macosx_11_0_arm64.whl (378.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl (395.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.2.1-cp38-cp38-macosx_10_9_universal2.whl (745.1 kB view details)

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

usearch-2.2.1-cp37-cp37m-win_amd64.whl (246.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl (3.9 MB view details)

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

usearch-2.2.1-cp37-cp37m-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.2.1-cp37-cp37m-macosx_10_9_x86_64.whl (390.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 246.2 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.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 999ed4e835b0bce610faae24a876cd7d608b814513e62d58b553c772bd67cc20
MD5 4e465d68702194ec92174eeec812838a
BLAKE2b-256 91ae976b0661b277da47f12bb332df6a7357b589b8d3ef5dab4fefea9f9479c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 01f57b959f4187f433dd3b534344ac118699227bd0ba8d59bde94de7fa1c7885
MD5 634ce92f452380ceb763c7774a4154f5
BLAKE2b-256 b4d828afc5ee57fd378bffe79da7d19568f4b0dc333bac94d3d73a166a512018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 95b29f64f8e4378556f717839d68b394051260880bbaf5f5f8c6623052f05f72
MD5 34fad7a956720e1e9303e1602a7c0d0e
BLAKE2b-256 e8c41542c5c8e466a8ddca5f2a5138c546d1134af7d46e560b17babbaceaf8a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 814d62ebcafaaa86e0420b2713434b5628caf5509b8d694528826a8ad72ba0fa
MD5 93e036c6c09a95fccb6b49b75d3f4f8e
BLAKE2b-256 c34398a434b608fa1f134320cd9a8bfdc7788811f6c519517fb24809945a26a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4664b673fdc71de4b0f3f1ec6435e91ead8023e185a09fc5e353180cd07ced52
MD5 106cdcaae85b303788b347cc409cf78f
BLAKE2b-256 78e0a9502d8841dc6de55bfc481a93cf573ddcf86dc67e7518f2782dfb80271e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 475b2937dc067e593601b96ecc60ef82741ae86d987aff183381ec945288fb05
MD5 4d451fbae4141f43cc9878872bd5d135
BLAKE2b-256 a0c784c3cf6576463b08c5c51ba2657e71d60cdb6f49f6a9a5b39d92c63f400e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 245.0 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.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 186e18c683fcdb156da98420021e31c2c70de4cc3e1f752aa2dabd7923d86bba
MD5 a852b64a007d5515f9d26d5ce0886753
BLAKE2b-256 9bee67e9fe700f3267cece95eb307b0964b7bfd9cf7ddfd3ebfcb5b6279c9126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c599775a6910469aad4a0ce40f838dcc1a9687dd690551595b7e6d982cdcfa8c
MD5 ffd8713ace32b9d4974b79c9ffb07a8b
BLAKE2b-256 6c30a55c6444b72ce2e58f67892482ee63edfd8fe1cd8e60df84a316f59e506e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99934093dfba0d2021e54dc5d2165e7215c02f4948a9c06269391d97d6620cc3
MD5 4b610ecb98b28eb445620b1e3e43ab79
BLAKE2b-256 aff1afea11da892994a8fd9800854f0484a03123aeaa8cd153d22e8b057e6d3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12cd0f6bdfbbf3e51d6fe9ab15c28dd1701df3fd7a163103c7ed59d345c91419
MD5 dcbee95f8473e6da60b5a6df79824630
BLAKE2b-256 a5e004eecbf64b55fe6cc449c606c398efae03c19697243353843255e90bdc6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cdb78599df7c2f84061c6a4975bbb6f94d3680cc38cfdcc79a9619c96c07ade1
MD5 f419a1fa947295c79700761192f69ffd
BLAKE2b-256 ccec0e90812c6f1dcff9ea8c45c710d5c8820647d767239a202c603563f36f62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f8e45f07c6d46ae3369d39797b87d3505b9bb1d83a65415e243797a990bba96b
MD5 3b433dbc1833484bb527d252a62a8127
BLAKE2b-256 20c44b5957cdef56b2ec037ef5b4b749afd1565a6603026d3f692500c67bc244

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 245.1 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.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 52ad03a40e14a6a642a9bf5fb044bc982e44a27c9871982a22963a6ba1feb124
MD5 44fc63f296d96e17ee656d87c8f5ffa6
BLAKE2b-256 e9d655fc11d0dff550538101aa00e851a97c03d70a0bec9fc338554432ae2953

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a5a423feea1f4c4950aabbe94bda7b8f55ca53f68dda46772e75d6e0d94f086
MD5 79992f51bb936c583670f0dcd797037b
BLAKE2b-256 3645eb111fd45f9b7ff2ea84a901b627e74f78dbdf44faf2b66f8288ddc2b7fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 092dcf381dd5ca6576970b92d3a0316755bd3ab6a46e1bf9d43c5be8b60376a5
MD5 b6f8ce7a704e03e9610e9fd7ea2e69f1
BLAKE2b-256 18c9625d5d2fd9d195bb825cab3066330b9269e492df0f1fa86c244a840a1db7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6f395766b8b33425ed9a051b231536e56807605f2da36affad798397beaee9d
MD5 f151078fa6b33640299b98ea21dee5e3
BLAKE2b-256 7d7ce1727c8c7b50242ef10ad131a7f8338849f5ff8977779dffdc3f88c73898

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a42d5ec0e96e48d1baaf2e4673ab8b59781ebe8ba3635e9cbd8cd4b877090894
MD5 ff9078e642d9fa168bfb903560aa6ff1
BLAKE2b-256 db1d725ba0ccf9d6eac14c928195e13d70fc09bcd96134e7a0ec512d78cf9322

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6bc8093dd54727f15ea9761154f6291a34d8794b48e244b619653f5654457946
MD5 ea6346e2fe08fe888794a45c5c60f9ef
BLAKE2b-256 2bd4f0c06d8c481fd9d61239cb6730bb07bb38b4ae69605d830f9b983f10bd48

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.2.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 245.0 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.2.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6eda6f003b552dab49e39f7d30cca763246b76069080ebdabe8e8883919026db
MD5 83b900b6eede69881e4706f51e7a9d5c
BLAKE2b-256 1e37208e3f6c0b7ad90aa7a38c3d7fea2d01108ef8f8e233404f1f9e2841784f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 212f9c92d8827525e3c24332014c83ccf98f2ba881b8ddb246598d71a5a99535
MD5 7bdb8c6bf6512c9d9968b542a53f6b77
BLAKE2b-256 a773c46ea48928dc072f411ce22f8a5f572d6f6236748fe83e0738fe6e50e312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 52fd8d250b6d71827966d34082e1046597c301e891c77e61ccbef79e99f5f825
MD5 a49c4ab77cbba1227a1b306ad86e93ab
BLAKE2b-256 07831883bcc97971839a95363e12ef0658ad23492287f75c8db32c856e382259

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f6b467b2283eff9d7bf2da74a4bf9cf7ca1ffd6bbc945640584185b6f9d262f
MD5 905072981d2b4e8c9421d087080f3d1f
BLAKE2b-256 a29ecf8fecfe6c5e34f4744e1bf9c8752c3a8a9ec5509c2d8696ff819eb29ddd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2c3cd9709fb462ea3332fc9e8cfac18e84d89863e51285870296363b70d55cb
MD5 cd11f249b13c48d00719e5e16e11ade2
BLAKE2b-256 ead300b0852438fa2c6eb5d2563b024cc5093bed2dd8f7e2f38d984b0b3c9976

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ef7b352e628192f62d41b54965d6a32a813f024d32d201d94834e147ce246275
MD5 fc2a2e109f8f16fefba39f80971d947c
BLAKE2b-256 f361371a580f068dae25cb5916696bbace1384e43931acb168c1af7978a90a57

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.2.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 246.2 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.2.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 24c6a359aefc684302de559ca21da9cf65c082ceef2bd389144aa9b44681187f
MD5 0a2d14bf2e1411f351b9d4e1b85aa47b
BLAKE2b-256 b5178da3091fb2d6a471b4e173441c794638e5f769f1dcefcf69e1dc9b5da34e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c9c6f8b9af8390e1e1e35f6686b5c10f2115a8bc1cba994fd90fe8280f1740d1
MD5 87788c0b8bdf14979a3a6844d08a454b
BLAKE2b-256 cc19f9d815ed307a199a911e02c0fe4393b833b61d46d0a5893ecbb19336ae49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 529f686a38a9b714752f6715228e674ff08784a3d0bc04c111684844a052703a
MD5 8d4232a190b95fae426054bb1736e4b4
BLAKE2b-256 b27133fec32f8f9952e3fe3e866e751540e51206cc13010cb7fb09d993597f9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.2.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f657b8c61d336e05288e185cd4d9096c77d27c20393f00903e527625d426de86
MD5 05ac97117f2aa393e9300bc2d3508a94
BLAKE2b-256 7396d026091aaa62281e505d5d5508b76cadce947ace01222c88e8c9cbf670bf

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