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-CSwiftGoLangWolfram
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 numpy

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

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.0.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.0.1-cp311-cp311-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.0.1-cp311-cp311-macosx_11_0_arm64.whl (383.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl (394.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.0.1-cp311-cp311-macosx_10_9_universal2.whl (747.8 kB view details)

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

usearch-2.0.1-cp310-cp310-win_amd64.whl (244.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.0.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.0.1-cp310-cp310-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.0.1-cp310-cp310-macosx_11_0_arm64.whl (382.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl (393.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.0.1-cp310-cp310-macosx_10_9_universal2.whl (745.4 kB view details)

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

usearch-2.0.1-cp39-cp39-win_amd64.whl (244.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.0.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.0.1-cp39-cp39-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.0.1-cp39-cp39-macosx_11_0_arm64.whl (382.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl (393.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.0.1-cp39-cp39-macosx_10_9_universal2.whl (745.7 kB view details)

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

usearch-2.0.1-cp38-cp38-win_amd64.whl (244.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.0.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.0.1-cp38-cp38-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.0.1-cp38-cp38-macosx_11_0_arm64.whl (382.0 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl (393.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.0.1-cp38-cp38-macosx_10_9_universal2.whl (745.2 kB view details)

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

usearch-2.0.1-cp37-cp37m-win_amd64.whl (245.6 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.0.1-cp37-cp37m-manylinux_2_28_x86_64.whl (3.8 MB view details)

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

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl (387.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 245.5 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.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eded772d1215d4ba4756e9b9c01d2bce481a44974ae1198ce0a4b29734dba916
MD5 f83532066ee396fe27d3cdf4bc73a27b
BLAKE2b-256 016c384708696b825d635596b90a746e0b3fbcd4f61acec735a22c0147c80ee1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0355b487d25dfa2811135be132f6d5c852e2946b92774e9e040b8e2a9bc379e8
MD5 a5a9c0ecba6c10e02bde752ed1b2c54f
BLAKE2b-256 4c526f6a561a414da2ec493807b5b0acabce231f771f8791a8cd4e0f64be7493

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 607f0131c14bd46ded352e68be2a31bab67c3739b1019eddf76249cacbbc6194
MD5 21f879e9e88b821c006fa7bd7294b4ad
BLAKE2b-256 3aa56bfb27476e7ae11116a5e1b572fa9afb23c92183307a16924976874c4edd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f96a4f9b6fc59d33e39ddbc43a8cb8dbcc7391009b54061cfaed7731e57e26f3
MD5 f8767b69b285b41783144148f7aa1faf
BLAKE2b-256 23abf8f4630852359f90681b7d94935ae676872601cde8f6ad878d1230f4a52b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6846b981dcc8e17b67a783d3db45f808aa07db92e0bde14c019e6e5aaf58184f
MD5 a8f78ac1f5a7ae84751a7df2f3ebcd53
BLAKE2b-256 42d70fc573372877d3050b3c38706c573b5edd6505288f70d4c0659297dca2bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 be92dfefd66f5a329c178cde97416116ca9a014c49a890fdd008836061018109
MD5 8a0ec8c59b8e4ab9387521f61d4ba4e2
BLAKE2b-256 8924360b33304f7d905f9f92bf2f8f70d07fc38303b3498a255c8f0c02ef8dda

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 244.2 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.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 350fa91ab57e444e5bf020ecbd59de61e0b5ea978e5d3e4885ac519f1456061e
MD5 becd753af2f2634fe02898d136d1b0b2
BLAKE2b-256 0b254cbb2fa315c5e191800be29b4994f5b9100537c87c650b4692a132fcf163

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bb93263b51bd5183f7869f0adb421f5ad3f710018b21444abd8584b4291fe26
MD5 e874727d260e34d62da208588c7bbb33
BLAKE2b-256 327c4c41918b9516d6dc9cc135a70f920c2c65481f1ea8f268b7fd5937dd5b5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c8d508f10502f2e1ccac051ec385ef17462108eb19008e961317cbc65b85b8e
MD5 9f90639efc1d81159dc391bd446e0c6b
BLAKE2b-256 7899bb39b7211e48b492b7139f4edc2c1fe8e7ed5f0c35a61e16e0068817ae08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19616ac4bbafd0bc7094683a7654e516c08ff3542627de96b74c1c7eeca4fd04
MD5 076cda2a6f2105519e614f9d0620e1fd
BLAKE2b-256 2923215055b8796960665a2a2f9d914b7e3f8ae6855f1720ebc43ff930877de8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e55d7e98b605794a19d54f5870666b788a37646058f2fabf1feab5482e5d7fc0
MD5 962abb18f308ad4c9c46e15a755aece5
BLAKE2b-256 b3ca6fd0e1fedda2fe52906f7b2a13698959a910c84c1df861db9d7dcd4b440e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0df6ab61873a47f39b3988eb7202afe8d7512319ae88f2c0526baeee73fee458
MD5 6197941fea80ec8ecd01755dd6b566c9
BLAKE2b-256 99d49d7635e461d2a223bba3816d90647c234efc345bfadb292daf237a8702a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 244.3 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.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ab8641e1723463ed11394362923f29bc0cf68ab711dfb99dad4bea23737d86ca
MD5 9532cff1a789ca68e977ba4db402db5e
BLAKE2b-256 ec50ffca9c8a63d7d165ae3ea1dffd3ac165121c9a7b2bfe58bff916b507e270

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 72c6d31a76ac7c926616f29541e604c542a6df4a2568031183d372450850167c
MD5 a446a2e68cf5290ff201b84f3a934b43
BLAKE2b-256 38bfc4bf34831323942f98d778e7cc63102a964ce8a5bbc182955ffe4a05faff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 060cb5b3e0b58c128fa6435216fb0f4f1c7c2e8928a1fccaf52b80961579a285
MD5 fb17ee481d461de934e61dff4fac023b
BLAKE2b-256 92a14ac97d89983b0f29655638300df6202551b38e852d77fbc6b35acf20e986

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d3079eae12a9d7d24043a22d57a19ff3e69f7c2ab05febe4ba1fdf184b204da
MD5 e5126b77add6823a662a0f521fe49e9c
BLAKE2b-256 6c4b6618ba17a049879a03daa6fe04ea57e65abbadb4e99e70cd5a8221952857

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2d96e963798abee48b724c6bba5dcaed300975129d871e5bdfcaaf006eb8f090
MD5 a35bf31dda39c01e2241908c81feaad5
BLAKE2b-256 9ae11f1de0f10c8ee728b2c822f58d21efee3e2680985571dd88e60ff7cf1fd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5ee9944c8a0234d5c831538bf89157b5b31696affae6c2a6937734806d8fc696
MD5 3197ad3e34f21a25dff9aaf7d2258bdc
BLAKE2b-256 e2010daf8b1825ed8c02c2995a9f30544983f922b7a5df346f461ff6e457c574

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 244.2 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.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f0f2f53e58d58bd7f88e09d16652e1c11c1a602291b68eb879f4e2ee5adb0102
MD5 1104d9f3401d9c6bd0b5070f55b90d12
BLAKE2b-256 61df70633c0b55761d42372767922b07f044d8c36d3692bb99ce9dfa1347d3d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94187f6cbc1b751ad7f0b326d1509e3eded2ba2e817dd764868c7e0d8b77f596
MD5 fe220daeb99e6a30a111fc531ef61e2c
BLAKE2b-256 cfe775aa1a3578b3b59a8ac30235f8789997cd940faeb97cf4a407cff4c07659

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae9a729659b5a7e01c678ce1152322caaf2a3e3133d3f72ef93102010929d1d2
MD5 b453c6a1c409f5e53f9ba4e5c9005f0f
BLAKE2b-256 64e80ef06515274ef784bb909f14e8d2719c5d1b08435db87f2cea2f53e1e126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c297a44ec5c9e794712618d27531d6ca527223f8c46ebb021f5c263048c7d16
MD5 6ff1f0eda407fc106a47ba0d718ff744
BLAKE2b-256 68265436ba829b950c660d0010a7736037e652ae0384f44c4e803fee4248e1d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 52d2f4c1102dd96fa7c9e88d5ad9fe221de83844afc4d508d323a65bb6c7c260
MD5 f79eba8c4436e526c217bb6ab451b268
BLAKE2b-256 f99ba507ab2190871449b7756a62107fbae0d9e1f8896ec1744afa88604b3214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4f74613666f5157f1fbf6304be988a14da252e0f41854ef3e7b57c9b221dea92
MD5 2e72e389e94b5d3a761c1963d5a98c6f
BLAKE2b-256 d30573f1b910d90435aca94ba11b3a934837ea0865e036e87799b036a5323323

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 245.6 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.0.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 220b3772c3442289dcb2d9e59dd3c2f631bb61a05b4a8c8f3911f2e9e6c7b50b
MD5 ceb66d6b7e276b7f24116f4ee2282680
BLAKE2b-256 0aede6c37e225d8290e6d131b9cacca3065e44a3b838ffb8261f90513c60e0db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 92e43bba7df1c320e20c92a4be592ef4640abcae7c5b3889dc872251a7e22937
MD5 d4954bc8a8e65cf16b3f81efda7cf599
BLAKE2b-256 2844f3379f6ca7c1dced52de80f8a7c3c06bc614fb3d84b56ec4b704434a7f6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f6ac9b5bb914dad047d32a07961587e50193dc243b688dc03a6197a99c80f190
MD5 12af4d2c57d4ec2bcb90a7a5e4d14d99
BLAKE2b-256 ddd90d8d4e0128473341d5395b2c9cdcd9bc9004fc22625a64937180419e0099

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 11ae2217d268bbb302281b755bb9749a3eea370c7f29c4f76ae498bd279d09e1
MD5 16f74bc2e9cdcc0f88ab131131b96058
BLAKE2b-256 66de422fc51daff1ab1470ad306f8d6a869251d629a4e1dacb92b52cd93ac8be

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