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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.1.1-cp311-cp311-macosx_11_0_arm64.whl (384.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl (395.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.1.1-cp311-cp311-macosx_10_9_universal2.whl (748.1 kB view details)

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

usearch-2.1.1-cp310-cp310-win_amd64.whl (243.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.1.1-cp310-cp310-macosx_11_0_arm64.whl (382.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl (393.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.1.1-cp310-cp310-macosx_10_9_universal2.whl (745.7 kB view details)

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

usearch-2.1.1-cp39-cp39-win_amd64.whl (244.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl (393.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.1.1-cp39-cp39-macosx_10_9_universal2.whl (746.1 kB view details)

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

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.1.1-cp38-cp38-macosx_11_0_arm64.whl (382.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl (393.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.1.1-cp38-cp38-macosx_10_9_universal2.whl (745.8 kB view details)

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

usearch-2.1.1-cp37-cp37m-win_amd64.whl (245.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.1.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.1.1-cp37-cp37m-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl (388.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.1.1-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-2.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ad6e4c8d28a0b4948a7f2279abdddb73cbeabf2286b29e0d486aeab91abba1a7
MD5 a8d1ef13b246ca84f2cf49510546c7b0
BLAKE2b-256 28d15bb529b8a287e441aa751db770d39d8877f92721dc2ae16359b6328e5c38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e4543dd38ba89f3bd044834642f3a84287e461068e76c9726e88070280e5552
MD5 3f78f75d20add220290d2e727fb48ef3
BLAKE2b-256 2ff415553ce338f96d476a0bfca41f63557287a47f7b5cecf1e3884b78ac0985

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ddbaf0186ed3b7bdc795eecaa24825d49fa66f5cb8739ac2c913dde5d719ba2c
MD5 3bbc2affbd1ff20ad44fb475b1db6eab
BLAKE2b-256 2c23c7389fb98b4dc629bcc806708d4f960e63473a5c62b9a98cac67b453d78a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43d7c8f84eab7fe69c57009e9e0717321774423b34abe14f1869c8f5420a322c
MD5 ffbd5818dff77e4511d9930c05fa277f
BLAKE2b-256 d7a0496f08ed7d5cfce2854e996d66f5cc7fa1f8cc2370bd30ae43ed15bd8df8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 81565e1f6ea26f7e8e181be28f1d5c1a4787f99e95b74f505e1217d853a17906
MD5 275b512893bb898cc3a416e59a6a9e64
BLAKE2b-256 b5fb0db02cb421e9303b58930b635b3e75f2f3869f86569a9b04cffa3c372b4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 95c09780092ea6f621e7b4bcc37fdf87402c9fd7e646e1ce13e488b7c9dc4237
MD5 d3938108e661f64a4e97703fdb2ed549
BLAKE2b-256 4f270d1faa8ea2c743d5d594a4da5795deee3126f91a4591165c03d019289106

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 44d22ac9ca9fe3af442d7234dcbbff81f016eeec48413eee688259166d486b53
MD5 b98e74b784bd0aacfef4497e8758abc3
BLAKE2b-256 dab3de2b30e162c2cbcec20ee52326fe120609a89785e15242a29317f2511e27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a747c7674ed9d3f80abb27d8f613cca336ed71f12bace63dafb40bfbf69f439a
MD5 d013d7907664197691b62a9570c45ecd
BLAKE2b-256 df044b9407a9142bfb6513c1a8956c3c19bc93d7a1456ca9865d39888f90ca29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c376a88a98e09c5065597904228c17ae99e7a237001a74ac4ee98cd7a1c0d686
MD5 8bdb8dcbb6cbc4869c74c0dd681328c8
BLAKE2b-256 34483fdaf8251160c1524912fec5bd5bf9c5e4e9909952c85eb8ec90280552eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d88802df96e9797086ec4d284f25b2fadac0e3210d1d2915a457859c5eab2de6
MD5 cf7ed63691416e90c9117f188d1acf39
BLAKE2b-256 744f0c127dbcc935eb2fd9adcb1fe1898ff68c3811020b15899efc411fbe9e3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 788adeb21d85e6b0f1d21548efeeb55b90ddd159444422b4544182a9bf8136ae
MD5 e939bcdf08a56a4975d7cca80bd3fe74
BLAKE2b-256 38937ffdc292ef755deeddd0d85b27ff4433722f107fd2c28633eb6979241960

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7765f95dc62a1998ea9e6c869ab67a89e209e5fc6de985c123ed6448ba2ab289
MD5 0eec2bbaefc4d06279a6c312d3c407b7
BLAKE2b-256 ac278908785807f61369102a1c0ee0d920773eafcedc66ac890502509d1bddbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 244.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.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2abd1aad2422bbf62ecc4b7e25a6bf9f624445a62d6776bcfae8b525e4b81020
MD5 a20e188cfa66099982451a11d946b0d3
BLAKE2b-256 79ce24eef5e6565572b242096a1baebc56ea8e68df145831debcdd70617f599c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86c902b50455de904dd85be773d572212efc8cdecd121a45ff33a465a5901c06
MD5 d66103ae19bb4be3162543d21358fe17
BLAKE2b-256 4cfd90d15eb279a5db7d22e41f8ae7d3b21b276110c7743817a3fa83d6f80e50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 08c13228ce45859b8b26423a2e3b711418bf902da6ba739366ed9a8aef156ede
MD5 cb7c22864e433d3f808cedb2a8908888
BLAKE2b-256 00403923532480da59b5f6dc7f6642969f0ca1c500294085821bb708ffb34870

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f5d9b6634e5c4643117cf438c7f13721893757c2cf863ae2426a9fab87f4d71d
MD5 cfaf7a05734682c4736c90b52585b4c7
BLAKE2b-256 db04b897c594900067334b17d8f6bb901dfd85bc7b22c09702c3638e4dd328f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 00665ceb73f2b4ab32f3f2ac30e5f6924642951ba78968c7fc1cbdd0a5447827
MD5 17792bf876579f1855878614b3ca8f3c
BLAKE2b-256 b1289758c0a8c6bc97bdfa936ff8aef17d7b285ac946e9cc0cc3b923f7d92fde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 16314750937acddcd64ac84d059c9ff4dc220dbb0367f21f1ffcba310ff80e38
MD5 4a7cba5d5796a030246480570b3e590f
BLAKE2b-256 2aff3cf3d79f36455f00d603f26362a7e406b42a6a11cbec192f393cb62f4600

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.1-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-2.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c2c9c3a049490ec2681d738eb5e5a902a44aca8f7622ab2e71fc62d5413fd7e2
MD5 ee6c7fe8a24a6a0d278bf78ec2ec30ab
BLAKE2b-256 92413b9d635e3bdc8388026b113545dfddfc3ed16022e75dea0556b9b4f99e11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea08e45794ee6c67965af8f87b7d9fa78bd940dfe39276d1a125abb58887147e
MD5 8663d08570aaddd57fea5c3aaa234c91
BLAKE2b-256 aed743919bdad4669d353588b9d68d941646709e69a523425f9ba51d2828528e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 62370cf1811170150ebfcdfe7a1637f5927a3ba21a7cf724cf25bdb48c03ea15
MD5 d5b21568f95fd40136739794271c7d97
BLAKE2b-256 731f1ccc60633b980bc7b27ffaac3edc00b0979445db9d2cb72cb7fae5f4f391

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41bd5b13333f61b0fa24eeb8622da97db07908ad386240c97b93aa79f6b1de18
MD5 eab3324d17e8b85eeb09c310e17ae2ab
BLAKE2b-256 31f74a5cd3c20294875ac57a96920d3ddfb5af16555338d1edaf81a98d189405

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 66455c23a8f385f24e972d6e8869118a007438957de1a3c0ce8ea9cedbdeb969
MD5 92ecef688b46f7c62df2488560ef41f6
BLAKE2b-256 b06fd5fd7abb0c5aa0a0d8649b4fee8ce75ab995a286ee43f0c07ef0d7985a45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 59032ea4757a6797ef410ad5b6cde2c3557b31a7788f26079c55da4334f4c587
MD5 248265dfdd64610f71d3eb14979e0657
BLAKE2b-256 f30ec12c4084537de4409537f03512b76d5ba61f0976efac1bc0272715b82653

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 245.3 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.1.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 38bcb7bdd032e21eb2148f6777afd24ef682c164c8542aeb0fe85e3196314a22
MD5 82c567fa4e712b8b37c213b09e4530a4
BLAKE2b-256 789e211f6f72bb4d2b44c6b27d806aa15b1b61fe71051ca8103b9db412e9ee24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b569a3ab8de11f9074f12ef775a4a808ff30176971b074b368feb43982d3b6a1
MD5 46db31b8d0683eb6991fa78c70803bfd
BLAKE2b-256 65e82921ce84eb2d5d2ba5126dc76a1273e7c8322861cecf5c8c855041f54281

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cdd1c117adbce45b0fdae85405fc05cf54263cf8ed1c999c088396fd0af0d889
MD5 c768e192715bdfe559a45e154fb3e29a
BLAKE2b-256 3abf98cf3775c2fedfbad0774964e80d2a6e7d1661d47ab28ec309622714cc5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da58fd1c3bdbfa850bca030e3c2a0dc15665ed13f55cfda5927978cd94771605
MD5 a74acf288d71f79aec40deed0f26998b
BLAKE2b-256 15ddfb14f4709bc3d2aba59b2f19ec463d04a6fac7b84769f57a8a24055dcd6b

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