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

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()

We have pre-processed some commonly used datasets, cleaned the images, produced the vectors, and pre-built the index.

Dataset Modalities Images Download
Unsplash 25K Images & Descriptions 25 K HuggingFace / Unum
Conceptual Captions 3M Images & Descriptions 3 M HuggingFace / Unum
Arxiv 2M 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?

With Objective-C and iOS bindings, USearch can be easily used in mobile applications

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-1.3.0-cp311-cp311-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-1.3.0-cp311-cp311-macosx_11_0_arm64.whl (384.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl (395.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-1.3.0-cp311-cp311-macosx_10_9_universal2.whl (748.7 kB view details)

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

usearch-1.3.0-cp310-cp310-win_amd64.whl (244.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-1.3.0-cp310-cp310-macosx_11_0_arm64.whl (382.7 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl (393.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-1.3.0-cp310-cp310-macosx_10_9_universal2.whl (746.3 kB view details)

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

usearch-1.3.0-cp39-cp39-win_amd64.whl (243.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-1.3.0-cp39-cp39-macosx_11_0_arm64.whl (382.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl (393.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-1.3.0-cp39-cp39-macosx_10_9_universal2.whl (746.6 kB view details)

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

usearch-1.3.0-cp38-cp38-win_amd64.whl (243.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-1.3.0-cp38-cp38-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-1.3.0-cp38-cp38-macosx_11_0_arm64.whl (382.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl (393.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-1.3.0-cp38-cp38-macosx_10_9_universal2.whl (746.3 kB view details)

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

usearch-1.3.0-cp37-cp37m-win_amd64.whl (245.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

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

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (388.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-1.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 245.3 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-1.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bebca14ab9d5ab8772a333f2280efbbc1ee685ca9ea82d3b52c12a15ded124f6
MD5 a8cb3a9e295afa405065b078f01adf05
BLAKE2b-256 9c2dbdc920ec87879e3a8050378fbff2feaa0a034506f930b4e39b5a3dfd8a8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf3b39a4f2506fc7836069146c9d91e1eeea4e3b6b854275e3dd51ffed1d9f82
MD5 93ca4071a8474845ef71f0c205072bb3
BLAKE2b-256 e2e1c53acccb5f04a179bb73061a0c8aa3f5335e1f9278eef7babae8de4830f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8915f9992298e18900f1eb2b3ea6c2718e38d2dad25ec572a5300b10927dcb83
MD5 8f3afeb9bfe83ef0f6d8ff2159849d04
BLAKE2b-256 75f2d530758aeb2e686189cb2a71b7fd32818df03c1479e371f32f2feceabf5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f9c3beb4b517b7e06d857420d5c0eda9abec3a40f84299125af971abb66b700
MD5 4aa7e401bda072110d62aa7c26548c88
BLAKE2b-256 718551b49d3604c89075860b4e0066552b01642ed54484b4b3cf31631fcb1c91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6fbdc28f4c7a3371fa56dfc1f9373494034bade535e0a635fc8702472b573484
MD5 7eafd4092ffd8a7486f03ab009ff6de9
BLAKE2b-256 c52291f0008a5a6ef06dbbc18488acc8e5a50a32723c74484689859277dacb12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 eccba9c2259beb021fda1dd6c91c5d6ad500dd3a8cb276ff6b20bb9645d2b4f5
MD5 968f4fb917cc342889974970dda960db
BLAKE2b-256 7784139e0b128a27e6658fe5dd5c05b39015746888a93762e4608f92dc103086

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 244.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-1.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0797279e8abb81263de1867658a28a2f57488fe9fd29dd6a6a6258bb659c759e
MD5 93c11012b78e9a65891a2bddb429001d
BLAKE2b-256 f046905369043babcdc05ba22429efd73701735f28bff97208a7be16fe0e7684

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aeeb434b98822b92a9177aff37f7fc20a58bb9a0ec824559ae736605a9f6a650
MD5 de5568f2d6b318aba0ce02425f41a9d0
BLAKE2b-256 487dc1aeaaef7d9151df58147780c0cf2b79f2bf10e3c1180fb17f2d7c2def12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c18437c1d5f645130ff7147cde1afe4e7abc1a0f06f8346ed4349145596f91de
MD5 b88c22992dc1eaa6b521f52f79cff82f
BLAKE2b-256 7d51f19705962dd93287522d2e6e1ac548a0841c53d738e5e3d4f57b18fd1a36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cde745fb1be4009d7f8e38fce13dd7b23c58a047b99449939f91136c1b61d2a8
MD5 70d8c3afbb64e1c55456d41b8598f5b8
BLAKE2b-256 9bf68ed83d473393bb6f7cac4b1311d24dd276ab7b630c119bb8ca6ce6639c29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 12e1c18dccb13d9cba3a183e7783f0a84bbc7b057df635ccf39d564982d89f9f
MD5 39de16fd45fe4b548f63b8dd9e0b8db2
BLAKE2b-256 c96646338ac871e4f00412ab27cfc23189c54cf55df5820babdd46a5df85dc3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3f11d0f1ea697e29a7e5f0661b3fb919a46c97ab6ab0d9c942ed64af93493fb8
MD5 4bdfc570f26461f07716a061699371f7
BLAKE2b-256 088ed0fc167e3fbe518c3f7c668760cfa7277f768384b00d34c7fd42cdc32318

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 243.9 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-1.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a1356f6f1aa621d276a84e11868f3bb74dc2e4f2704aacede5a6dc12f3997104
MD5 d623d4188b0bc46452ad03f6199a445f
BLAKE2b-256 eb2bb576088ecbf46c8860a50ece4ad450e36da7d4d62a5c96e8af95fba6256a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 560611e4c304d0964aa59abcc4fc13805a5ee6c81cd1f4a9a1a40a369b97c4fa
MD5 b5fa1e2fed0334254ff137641fdac0c1
BLAKE2b-256 c28bf6f62acf23f0eb739411fbdc6f5b5bd37d3d57341fabaf76b9fa823b15ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8a4359821db7159b04cf6f08fbb5bde0bdef079789a0223f7a796860db289d8c
MD5 235e6d6f5599db2495742d2add87712d
BLAKE2b-256 fb675a19e88c8f35e4462e912780ee0dfe06f2428072dca7f863d6ac6de4f52e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ca8853ba674a67c165a1a9db0aaaadbafb22026c8100a2b2b7e86aa30a93de7
MD5 8f09794b184c29897b21e9790ad67984
BLAKE2b-256 a86513a51e0153d883bb6e6c53e6cffe49c28a954e928f0fcc975abd43b501db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c53f4e30195961dacc649187fd8787700b27f5877022499d84f3675102dccc6e
MD5 b6e3511629ffc6363c771519115a5573
BLAKE2b-256 a286ec5c5113584304268c5134613121d062f533b6c0a8eebaa8455e6fdf6cda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 76bf41a0af13d187c547b79455afe186166c84d0fb285ae4896c5692e04d59b5
MD5 44803900fad802cdad7817c10d47cc8c
BLAKE2b-256 8b14dfe9ffe1ace4eb95c181ba40855954bf53890373db648c10f7614f0b0b94

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 243.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-1.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4be2f678a6d36eb86225cd297c2cf37fe2d273043f1fadea412740b18e9624b5
MD5 2b354dc0022b80baea12830e3522d935
BLAKE2b-256 1a11ce246a8355e3186a56e13863c95ffe303c7d618a738ad217fe698e01ad59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 89c8b4b909803256e60d588cd769d2578eb07698caf1c73dc09663d536746036
MD5 39ad83a42da3a13941e3232ab2656086
BLAKE2b-256 29101b6f695c2770837d189eb04a24e850913b83d9bba50ade8a5d4df59452a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2131ef4dcaacc84a002b041cbb2c8f4f8ae19396cb68829afafbe2ae3944894f
MD5 4e2cd0adf42be8035b7fa58bc2150062
BLAKE2b-256 951dea20dc52ceb07f65c66052685e217e85ab71f2411fe265a0a55aaa30a764

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93db2013497c29aaa63f57740cb185db8e007d46975b0834bd83a2af9c9b6d2e
MD5 96e4279711cb11e3d2b2389272ae633f
BLAKE2b-256 85e8b866c581bde05ad331c25b8dd60c38cbebd664fa4fc134119a1253360722

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b185ab18bd417c5c1880783bf25df683bced21d114f3d7175d0fae81e4ef809a
MD5 f4c55c6ddc465761539ee1f837bd9a88
BLAKE2b-256 04e4de60a65b54f5d350cc7787994c25c7f17828ca74a26004cac05d920a4782

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 984032acff7b07a102ca6306f7b112cc3bf582ecfa2d91b90053ff33e034c290
MD5 3177a9525bedf7f5a39bf01ed877b3b8
BLAKE2b-256 f119722bc8505fd7ab52eb295c1e65f53f149b53ec95cad7f6944641bdfcc8c8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.3.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 245.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-1.3.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 013f72eb4edc5e3630375d04afec924fb106da57e2534590fb980c30e508309e
MD5 e86a4e58b8b448d18e9ca1afcd55d0f5
BLAKE2b-256 a668a387ca8b9b6730dd6a5c375165533ee96441cf11eaaab8efad4b08039c9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5b10d73a868e779c28ff00358b080c4026f8573c03255a3e247da95568746d1
MD5 3f1644422fe314f7ca15d9ce80b186df
BLAKE2b-256 eaa22eff4848f031fb0dd1b388ab312fb7ee350349f792f3d4df00be31d3dfa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 953e3446edf91dcada8e37fb4bcd316c3341753e658ddabc7401da55a58af8a1
MD5 2529173490a3872089170d69941fb1c9
BLAKE2b-256 ff2ce6901061b9464be490609533b9d87749379406cd31ea048aff8c2f5abe3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a57842c47ade16a3d5928bbc4cd3df38ee1585ffb8c23bca315b857f2849c41b
MD5 d723d147d7b0b9d5acafbb1904f7119f
BLAKE2b-256 449aaa212e3f768f4757242cbd3a1cf7f62253c381e21725623e07d1119eae12

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