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 = 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_2023,
doi = {10.5281/zenodo.7949416},
author = {Vardanian, Ash},
title = {{USearch by Unum Cloud}},
url = {https://github.com/unum-cloud/usearch},
version = {2.8.1},
year = {2023},
month = oct,
}

Project details


Release history Release notifications | RSS feed

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.8.1-cp311-cp311-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.8.1-cp311-cp311-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.8.1-cp311-cp311-macosx_11_0_arm64.whl (370.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl (391.5 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.8.1-cp311-cp311-macosx_10_9_universal2.whl (731.5 kB view details)

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

usearch-2.8.1-cp310-cp310-win_amd64.whl (251.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.8.1-cp310-cp310-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.8.1-cp310-cp310-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.1-cp310-cp310-macosx_11_0_arm64.whl (369.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl (390.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.1-cp310-cp310-macosx_10_9_universal2.whl (728.1 kB view details)

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

usearch-2.8.1-cp39-cp39-win_amd64.whl (251.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.8.1-cp39-cp39-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.8.1-cp39-cp39-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.8.1-cp39-cp39-macosx_11_0_arm64.whl (369.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl (390.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.8.1-cp39-cp39-macosx_10_9_universal2.whl (728.8 kB view details)

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

usearch-2.8.1-cp38-cp38-win_amd64.whl (251.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.8.1-cp38-cp38-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.8.1-cp38-cp38-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.1-cp38-cp38-macosx_11_0_arm64.whl (369.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl (390.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.1-cp38-cp38-macosx_10_9_universal2.whl (728.0 kB view details)

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

usearch-2.8.1-cp37-cp37m-win_amd64.whl (252.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.8.1-cp37-cp37m-manylinux_2_28_x86_64.whl (1.4 MB view details)

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

usearch-2.8.1-cp37-cp37m-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl (385.3 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0fe846e60439ba172743fd9cc65946e694bab0e98451cc8ba8b894e12b726c0b
MD5 6a03f62dab57fb1cfed8f6760fae9256
BLAKE2b-256 d82133fe81b5141fc5641c7900041a985843c47f8915b3bf21d773784669a193

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1043176132c23e378bf1dab5aa6817741281edca2e9559d5ef30c16ad0213d77
MD5 098ead63e0dda9e58d685ee047c50b22
BLAKE2b-256 f4cbecaeaae398df4c7d0ebf97c82d8a30761c7590052b9a0b9f0f44858a29c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b966800c98bb1bdd9d45c844e52d870f2a5c75acc10282e208699cfec74a195a
MD5 8fa366c776ef27959c6226b0dcd5cbf0
BLAKE2b-256 d239a296748155dcda594a971025c21edae8c9c212492d7587abfda4aa3d1888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 16d0aa59accfcdcf9150fa9255692490e0c8e456d33ae507e77e2dc8ca6ae136
MD5 4b7f40a90e6fab0da7ad28bd135ddcb3
BLAKE2b-256 f7e0cdca37da99f17e565ea1183e6b68031a5a23200f473687d88cb4d92fd7f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64c3c85e078dae766a824c19cbb1e9c8859e83298e17f308f8b3825258905542
MD5 5d0f9806f51959fd55ea5e9aa8839f4b
BLAKE2b-256 dc9a105b7c062848bf2209ad9f2a8a937345381898e7e3b02054ff472f416d01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 988480a729299e026b0d776a390b8765df1cdf63372fbc53401371f9b40a48d9
MD5 15ffb80360624becc1e0e9f64a2b97b1
BLAKE2b-256 63944152582595b4bf1ca4b623038269e477d5e092839eb0cd2b1cb6f030090f

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d6dc444e762e214204c20b5f5cfa26bf98ed3c45ac1e6a26d4f4ae073c062e84
MD5 1b43cae438c8586b3438ab86dd960cb8
BLAKE2b-256 b3f699e3dfa1d68328c5d77b30410078338b7672a5fdf599b5446f2263dbe0c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23ab3f13132cb84e732c26750bff2cea2918250e70a804e9cc8a1294c59e86bb
MD5 1b974fe8f8324fe2d547ebe9946fb7b2
BLAKE2b-256 25128a3b7c256d57da19d019153d9fc617f01d5815939febe285b5b1c0186094

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a44d33becb00b6ca010bb0a35209485c1c8704efdbfbf0760ff68f0fbf012ce
MD5 e53e556e60dcdca93221170edfb30d63
BLAKE2b-256 81748565f0acfdac323818ade9391aa8482aedba78c9e8ecdba3b1438285516f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce67c553b2d9c4fd7ecdabe09c4d0410ee274a84aa8b6faf02ee0a764bf5a9b5
MD5 2f35d7c35131d43fbca6b363ac5a9d42
BLAKE2b-256 8d037cc1ed0ed4852484c79952b9b199d23e469ef9c908efde05819a3ac47bd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3681052b955457badf1c33cf209d3050389489a9a73332f8b778f388df64310e
MD5 ecc1a705b72ea7bd1013e565732e25de
BLAKE2b-256 0f1af7a4da772c7fd687d5d8bab599e4aacd9f8b937e7ed1e0376844c1ae6d13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 33b1496c8094d5041c26ff96c7f3f609efa23a29177b9c106fde4c5ba24af724
MD5 242fff312c4575643459101f968b2cc7
BLAKE2b-256 728e24b6bea7d8576c6f41fe3b5e808b31f96a019d54b0fc0bf5ff1cb0c88b99

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ed765f78ce4808044b19c3fc9b4bc72dd52840fc6260b722f800d6f30d6c9ca4
MD5 a68153771e0b25f0392b0106481405cb
BLAKE2b-256 dde21b9b3546630d2f7cb88b3b910b8b8e9db9a3bf8163485c44cbb40c128540

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3b2ff31ee5198ca56e5de11a057755f7d4a5e9a239dffe658eec86ee5acd57e2
MD5 24a8aee7d4d2a078b104904964960a84
BLAKE2b-256 53ae934694f6268e4cd983b11f6eda7c8e3e359b68958d16f7cc484ea98f5bf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0b87006b61c7b24fcb76588889118cc82db118fd8d091364716efc2970fa2f59
MD5 9d4fb2adec03e85ec138f4366f30f066
BLAKE2b-256 f119a6d498c57f26a83515d7b8584fc9e0c3e8c81ce82f3b77d0efc71fb20465

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c8156535c5ad5e5c22f1c25e582793092766c1576bd25d070b4947245a575d9
MD5 240100fdaf230e2e30ae0daf7e4d169d
BLAKE2b-256 bf4d7dc51f93c05382823e2121705bfe12a01a5d24a1faa166f12bf3ef615683

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ce857a6aee5099e7a0c3a4f80449e61ebc4af7bce3e313326754d458f88f57ee
MD5 3dd06bd36dc3fb0e89eb50f2e57ff227
BLAKE2b-256 e08ca9324d825d8c6e02e8dd11574fe207cfc68768831c15b9454d36b1f046d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5c8dbccf2ef5519574f32a056287ef970200f5236b7cfac3c897c5921128d484
MD5 5378d401c2e765aafc5ae5a647a7a540
BLAKE2b-256 715f4688a3453025839a4455a103a33d80bed254eef23650fd940a5ec4f7d76c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 bdf392bdf62c2ffa8fbe74d9da3e1690b193ccdf951e682caee497e11401982f
MD5 b52685a2f450b6a3223a9d6b7a7b638f
BLAKE2b-256 109d2dbe608c20767bc852bf2d544d811824ee15abd17de92aa10d43d486bada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ffe058ff53a14487280d38f3aa7481c0930f8e5821cd3cc303acef813f190270
MD5 080b3f9041f9c66bb88ade18f58f8f80
BLAKE2b-256 c4fdd438a2cf99b79b4f9386ee94ab6f3a83f289e772a53b250cb6ebbf04ea0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f77e5b3d7495324d7bb38815f6c2a68fe97b02058f21c4c28b52838f70c7549f
MD5 cd3239d4ee3c7454bd0320c0c14b89c0
BLAKE2b-256 e59fb86ec4e5ff0e8f8a573825a3c0d0b63be7597560009b3e86c394bd6f85b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca04497da028ada95e4286a910ef4a3cbd807d6b9b6a7319787aec034eb53c74
MD5 d1acf70a85fdf83f870aeb719eaf37d5
BLAKE2b-256 738060561c88c3a5c3c47d42eb0dc401b9f8d34fb296cee33bc1c862b03c4432

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 95a5786b97ff995f351929df1efecb459fc46ebc6a73134277182adf6cc2fffa
MD5 3ff11661c49a6c305752d6585a06ee36
BLAKE2b-256 cd5ae07bb95e711a30c4dbbeec73d6a15703bd4da4f5c1e85643cc6c80c20dd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 52a9d5b64c1f04059f5df7d41ceadff730aa192a54eb794be052aedf3de24ec9
MD5 cd7c317e37549983e6fd787af09878ea
BLAKE2b-256 74c372ef004852fdfe4bcb15372a90251a39a0af43a46ab91fb74c7a92e78578

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7832f3f8f6dfefd976c44f0d29176fc7c4dcb85ea130bae1a94139d7524120e6
MD5 127290eecd570bad5d5682e92f61d087
BLAKE2b-256 86535cf42aa239df9486978fd60bf08f47e4dd10f4e7d441b9234ae470c8154c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5e7f2d812b5b2f64c820360cbe1f106023229ecd49a2e74a2d46fd1817b80d3
MD5 8edb318ad3ae72b7c7bf83cd95fd1a38
BLAKE2b-256 2193f5857d10485b3bb847e51bb507bce68232820615d8408a0ccc91b2c673c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6c5f703639d786fbff0dba4a3daf0d40148ad48c06f4a65037aa0c45c703050
MD5 0fe86226a2c2b22abd84806a9bcf1112
BLAKE2b-256 ac09f3f75b9158dec150aae2903605eba8ec28ac5539b8b43ad4e75d0f5b1d51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 835cda960771cac08fa6c915ebddade92112977f77f5dcf2a0393fae88e7a0e1
MD5 eba0a2f15006f1ce376cb5bd31d6bd81
BLAKE2b-256 635471acb0cc6a043930d6b11776633d9bd68a056d5901bce45a30e46ccf0012

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