Skip to main content

Smaller & Faster Single-File Vector Search Engine from Unum

Project description

USearch

Faster & Smaller Single-File
Search Engine for Vectors & Texts


Discord     LinkedIn     Twitter     Blog     GitHub

Euclidean • Angular • Bitwise • Haversine • User-Defined Metrics
C++ 11Python 3JavaScriptJavaRustC 99Objective-CSwiftC#GoLangWolfram
Linux • MacOS • Windows • iOS • Docker • WebAssembly


Comparison with FAISS

FAISS is a widely recognized standard for high-performance vector search engines. USearch and FAISS both employ the same HNSW algorithm, but they differ significantly in their design principles. USearch is compact and broadly compatible without sacrificing performance, with a primary focus on user-defined metrics and fewer dependencies.

FAISS USearch
Implementation 84 K SLOC in faiss/ 3 K SLOC in usearch/
Supported metrics 9 fixed metrics Any User-Defined metrics
Supported languages C++, Python 10 languages
Supported ID types uint32_t, uint64_t uint32_t, uint40_t, uint64_t
Dependencies BLAS, OpenMP None
Bindings SWIG Native
Acceleration Learned Quantization Downcasting

Base functionality is identical to FAISS, and the interface must be familiar if you have ever investigated Approximate Nearest Neighbors search:

$ pip install usearch

import numpy as np
from usearch.index import Index

index = Index(
    ndim=3, # Define the number of dimensions in input vectors
    metric='cos', # Choose 'l2sq', 'haversine' or other metric, default = 'ip'
    dtype='f32', # Quantize to 'f16' or 'i8' if needed, default = 'f32'
    connectivity=16, # Optional: How frequent should the connections in the graph be
    expansion_add=128, # Optional: Control the recall of indexing
    expansion_search=64, # Optional: Control the quality of search
)

vector = np.array([0.2, 0.6, 0.4])
index.add(42, vector)
matches: Matches = index.search(vector, 10)

assert len(index) == 1
assert len(matches) == 1
assert matches[0].key == 42
assert matches[0].distance <= 0.001
assert np.allclose(index[42], vector)

Comparing the performance of FAISS against USearch on 1 Million 96-dimensional vectors from the famous Deep1B dataset, once can expect the following numbers on modern AWS c7g.metal instances.

FAISS, f32 USearch, f32 USearch, f16 USearch, i8
Batch Insert 16 K/s 73 K/s 100 K/s 104 K/s +550%
Batch Search 82 K/s 103 K/s 113 K/s 134 K/s +63%
Bulk Insert 76 K/s 105 K/s 115 K/s 202 K/s +165%
Bulk Search 118 K/s 174 K/s 173 K/s 304 K/s +157%
Recall @ 10 99% 99.2% 99.1% 99.2%

HNSW was configured with identical hyper-parameters: connectivity M=16, expansion @ construction efConstruction=128, and expansion @ search ef=64. Batch size is 256. Jump to the Performance Tuning section to read about the effects of those hyper-parameters.

User-Defined Functions

While most vector search packages concentrate on just a couple of metrics - "Inner Product distance" and "Euclidean distance," USearch extends this list to include any user-defined metrics. This flexibility allows you to customize your search for a myriad of applications, from computing geo-spatial coordinates with the rare Haversine distance to creating custom metrics for composite embeddings from multiple AI models.

USearch: Vector Search Approaches

Unlike older approaches indexing high-dimensional spaces, like KD-Trees and Locality Sensitive Hashing, HNSW doesn't require vectors to be identical in length. They only have to be comparable. So you can apply it in obscure applications, like searching for similar sets or fuzzy text matching, using GZip as a distance function.

Read more about JIT and UDF in USearch Python SDK.

Memory Efficiency, Downcasting, and Quantization

Training a quantization model and dimension-reduction is a common approach to accelerate vector search. Those, however, are only sometimes reliable, can significantly affect the statistical properties of your data, and require regular adjustments if your distribution shifts.

USearch uint40_t support

Instead, we have focused on high-precision arithmetic over low-precision downcasted vectors. The same index, and add and search operations will automatically down-cast or up-cast between f32_t, f16_t, f64_t, and i8_t representations, even if the hardware doesn't natively support it. Continuing the topic of memory efficiency, we provide a uint40_t to allow collection with over 4B+ vectors without allocating 8 bytes for every neighbor reference in the proximity graph.

Serialization & Serving Index from Disk

USearch supports multiple forms of serialization:

  • Into a file defined with a path.
  • Into a stream defined with a callback, serializing or reconstructing incrementally.
  • Into a buffer of fixed length, or a memory-mapped file, that supports random access.

The latter allows you to serve indexes from external memory, enabling you to optimize your server choices for indexing speed and serving costs. This can result in 20x cost reduction on AWS and other public clouds.

index.save("index.usearch")

loaded_copy = index.load("index.usearch")
view = Index.restore("index.usearch", view=True)

other_view = Index(ndim=..., metric=CompiledMetric(...))
other_view.view("index.usearch")

Exact vs. Approximate Search

Approximate search methods, such as HNSW, are predominantly used when an exact brute-force search becomes too resource-intensive. This typically occurs when you have millions of entries in a collection. For smaller collections, we offer a more direct approach with the search method.

from usearch.index import search, MetricKind, Matches, BatchMatches
import numpy as np

# Generate 10'000 random vectors with 1024 dimensions
vectors = np.random.rand(10_000, 1024).astype(np.float32)
vector = np.random.rand(1024).astype(np.float32)

one_in_many: Matches = search(vectors, vector, 50, MetricKind.L2sq, exact=True)
many_in_many: BatchMatches = search(vectors, vectors, 50, MetricKind.L2sq, exact=True)

By passing the exact=True argument, the system bypasses indexing altogether and performs a brute-force search through the entire dataset using SIMD-optimized similarity metrics from SimSIMD. When compared to FAISS's IndexFlatL2 in Google Colab, USearch may offer up to a 20x performance improvement:

  • faiss.IndexFlatL2: 55.3 ms.
  • usearch.index.search: 2.54 ms.

Indexes for Multi-Index Lookups

For larger workloads targeting billions or even trillions of vectors, parallel multi-index lookups become invaluable. These lookups prevent the need to construct a single, massive index, allowing users to query multiple smaller ones instead.

from usearch.index import Indexes

multi_index = Indexes(
    indexes: Iterable[usearch.index.Index] = [...],
    paths: Iterable[os.PathLike] = [...],
    view: bool = False,
    threads: int = 0,
)
multi_index.search(...)

Clustering

Once the index is constructed, it can be used to cluster entries much faster. In essense, the Index itself can be seen as a clustering, and it allows iterative deepening.

clustering = index.cluster(
    min_count=10, # Optional
    max_count=15, # Optional
    threads=..., # Optional
)

# Get the clusters and their sizes
centroid_keys, sizes = clustering.centroids_popularity

# Use Matplotlib draw a histogram
clustering.plot_centroids_popularity()

# Export a NetworkX graph of the clusters
g = clustering.network

# Get members of a specific cluster
first_members = clustering.members_of(centroid_keys[0])

# Deepen into that cluster spliting it into more parts, all same arguments supported
sub_clustering = clustering.subcluster(min_count=..., max_count=...)

Using Scikit-Learn, on a 1 Million point dataset, one may expect queries to take anywhere from minutes to hours, depending on the number of clusters you want to highlight. For 50'000 clusters the performance difference between USearch and conventional clustering methods may easily reach 100x.

Joins, One-to-One, One-to-Many, and Many-to-Many Mappings

One of the big questions these days is how will AI change the world of databases and data management. Most databases are still struggling to implement high-quality fuzzy search, and the only kind of joins they know are deterministic. A join is different from searching for every entry, as it requires a one-to-one mapping, banning collisions among separate search results.

Exact Search Fuzzy Search Semantic Search ?
Exact Join Fuzzy Join ? Semantic Join ??

Using USearch one can implement sub-quadratic complexity approximate, fuzzy, and semantic joins. This can come in handy in any fuzzy-matching tasks, common to Database Management Software.

men = Index(...)
women = Index(...)
pairs: dict = men.join(women, max_proposals=0, exact=False)

Read more in post: From Dating to Vector Search - "Stable Marriages" on a Planetary Scale 👩‍❤️‍👨

Functionality

By now, the core functionality is supported across all bindings. Broader functionality is ported per request.

C++ 11 Python 3 C 99 Java JavaScript Rust GoLang Swift
Add, search
Save, load, view
User-defined metrics
Joins
Variable-length vectors
4B+ capacities

Application Examples

USearch + AI = Multi-Modal Semantic Search

USearch Semantic Image Search

AI has a growing number of applications, but one of the coolest classic ideas is to use it for Semantic Search. One can take an encoder model, like the multi-modal UForm, and a web-programming framework, like UCall, and build a text-to-image search platform in just 20 lines of Python.

import ucall
import uform
import usearch

import numpy as np
import PIL as pil

server = ucall.Server()
model = uform.get_model('unum-cloud/uform-vl-multilingual')
index = usearch.index.Index(ndim=256)

@server
def add(key: int, photo: pil.Image.Image):
    image = model.preprocess_image(photo)
    vector = model.encode_image(image).detach().numpy()
    index.add(key, vector.flatten(), copy=True)

@server
def search(query: str) -> np.ndarray:
    tokens = model.preprocess_text(query)
    vector = model.encode_text(tokens).detach().numpy()
    matches = index.search(vector.flatten(), 3)
    return matches.keys

server.run()

A more complete demo with Streamlit is available on GitHub. We have pre-processed some commonly used datasets, cleaned the images, produced the vectors, and pre-built the index.

Dataset Modalities Images Download
Unsplash Images & Descriptions 25 K HuggingFace / Unum
Conceptual Captions Images & Descriptions 3 M HuggingFace / Unum
Arxiv Titles & Abstracts 2 M HuggingFace / Unum

USearch + RDKit = Molecular Search

Comparing molecule graphs and searching for similar structures is expensive and slow. It can be seen as a special case of the NP-Complete Subgraph Isomorphism problem. Luckily, domain-specific approximate methods exist. The one commonly used in Chemistry, is to generate structures from SMILES, and later hash them into binary fingerprints. The latter are searchable with bitwise similarity metrics, like the Tanimoto coefficient. Below is an example using the RDKit package.

from usearch.index import Index, MetricKind
from rdkit import Chem
from rdkit.Chem import AllChem

import numpy as np

molecules = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO')]
encoder = AllChem.GetRDKitFPGenerator()

fingerprints = np.vstack([encoder.GetFingerprint(x) for x in molecules])
fingerprints = np.packbits(fingerprints, axis=1)

index = Index(ndim=2048, metric=MetricKind.Tanimoto)
keys = np.arange(len(molecules))

index.add(keys, fingerprints)
matches = index.search(fingerprints, 10)

USearch + POI Coordinates = GIS Applications... on iOS?

USearch Maps with SwiftUI

With Objective-C and Swift iOS bindings, USearch can be easily used in mobile applications. The SwiftVectorSearch project illustrates how to build a dynamic, real-time search system on iOS. In this example, we use 2-dimensional vectors—encoded as latitude and longitude—to find the closest Points of Interest (POIs) on a map. The search is based on the Haversine distance metric, but can easily be extended to support high-dimensional vectors.

Integrations

Citations

@software{Vardanian_USearch_2022,
doi = {10.5281/zenodo.7949416},
author = {Vardanian, Ash},
title = {{USearch by Unum Cloud}},
url = {https://github.com/unum-cloud/usearch},
version = {1.0.0},
year = {2022},
month = jun,
}

Project details


Release history Release notifications | RSS feed

This version

2.1.3

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.1.3-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.3-cp311-cp311-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.1.3-cp311-cp311-macosx_11_0_arm64.whl (379.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.1.3-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.3-cp311-cp311-macosx_10_9_universal2.whl (745.0 kB view details)

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

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.1.3-cp310-cp310-macosx_11_0_arm64.whl (377.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.1.3-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.3-cp310-cp310-macosx_10_9_universal2.whl (742.2 kB view details)

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

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.1.3-cp39-cp39-macosx_11_0_arm64.whl (377.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl (394.0 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.1.3-cp39-cp39-macosx_10_9_universal2.whl (742.7 kB view details)

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

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.1.3-cp38-cp38-macosx_11_0_arm64.whl (377.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl (393.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.1.3-cp38-cp38-macosx_10_9_universal2.whl (742.1 kB view details)

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

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

Uploaded CPython 3.7m Windows x86-64

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

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

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl (388.7 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.1.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3c958c68a522d0baaf11ffc4ee261f482300f44571e7ad5f6028028f778cb313
MD5 2be8361fbf1dddb24678e2832189da05
BLAKE2b-256 98d201c6ab0234f0e1885b84cbb6816b5adec0d30c2b31af6b8485379a7d4590

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37b2d551efe1151627395e33bb48aa9cf8bfcee0273dfa0dc594e602c8a9a941
MD5 efb8a0044b0d452e8266752416caae96
BLAKE2b-256 b7c9ca4fdaa944512201d4dd04cac19b5377842a6ab391814fb216ac2a88a283

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fc568c0902a6a7a34f6c7221a351ab3929b20aa6eab6d2733f8920f3e69bc5ea
MD5 43e34238ef41a2a2238c171dc5dd5d3f
BLAKE2b-256 4cc087a4c05c35b89bd8fdc76f59a411fe27570d0e078598231df1c618aa17db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b089f62b6c17170b6c0b2cd4bf078290cc9e41fb90e971d8527a869052bbbd9a
MD5 e6169118e16841f304eca9edd992f948
BLAKE2b-256 abb03548b9aa4f82138dc023be4475a5b2aee743930b5e6913be8a351445f6bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc8fe40b6fc1b09ea52fe7f97432212c959d2da1b8e7581a0d8667100e209c03
MD5 54f82ef3d40c755fa56a4f80c6505472
BLAKE2b-256 701d66eabc257a8c9ef32f535151dc92f7faa896ac1be35d3e34764fcbc50606

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d2778fd5ef412aabf262fae91eadcfb6dee7d1216aaf09f05d6c1523c06a6db6
MD5 fb24583f9c85447fd29aae5a4b58ea14
BLAKE2b-256 a00819f1cbb06773c9a7e7be54512ef4bad9085637751b7d9929cde7e62cd477

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4ecdbdb6038e57fed0b39ab84f0df44375b14ae3b2678744e6ab8a470a01370c
MD5 6525b2a43a79319aea2a36cdb8ff5f26
BLAKE2b-256 03e50df041f32ceb181733fdf9e536d688e389f157445d0f3c5c9895c0765125

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94800d6a31c511225ab138380d177a2d08d868b0fb7d8cca0b692f92666911fb
MD5 0874e6ce5f9e05c0435bf2f6503309dc
BLAKE2b-256 8bcccfe261c27bd39db7aa88427b44b9a57b1515ec935c8c025f5d909eca8074

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d747b54fe51416c2a9f7ab924ce4d224372cb728794f23184b0210ea72f161d8
MD5 7d7279bb3b5bdd49a4026c5fb7a8cb1d
BLAKE2b-256 fca47f3de8e2b9b45a448d744a14cd58e17f70ec5ee6e9e1ae5b5ed4ad2e260d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e5a00579dcc5f0e61117d80af5f4561fcbff28fc7c5eda59ee74cc01b0511fd
MD5 789623665207ad8b936e938dea02e4f3
BLAKE2b-256 62cdcba506573359ddf35f49b7823a33003cf384de576968955865309767848a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6859233710b2b8f83d70471b3b1dcb034c5e77cd17cc5c1c46b0526e1e8e30b5
MD5 240de36dccd614854f1f5760bcc67eb9
BLAKE2b-256 69d37f650ae72c65adfb3c5de9eae70d1d9efbc045dccc2ef0c2cebe4e844489

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 14b5c95f680a5e9cd1c38ec30f0c999e630d6dd559c81d9591dded0e6a4662a5
MD5 0447b8394ffc2412bc9d46c31e1c78ba
BLAKE2b-256 ca3ae8d6b4c4629b998abc4fee6074866af79e7c980e0bb3b6d7860838e8dcdc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6288a34fe770a1b82b2b7da416ecba82d1a4d082d142d432cb56c28cc53b399d
MD5 69fb9f35cb70639dbbfbdd8a853d29da
BLAKE2b-256 2ccb83d39692f4482acb6dbcb78f126f1badfd40689b5167a648980f376de025

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 658035c022efce2da9f69bb8d71366f9e5c31b3e668f52f34c8d8d78abd897da
MD5 2baf6856005195740057174effd074f0
BLAKE2b-256 1f1e00fe8cd61fc8bd9e2014782fc53b3320d24dc838cd77eeadcb25b0de035c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2455a30ae493b5cf23c91d7f3004c8afbb921087a4660156545b1b53fd55d0fe
MD5 8c63618f581cacfa621df5a3a7c39ef3
BLAKE2b-256 1c139591fd2dd3a2885a1874fa96480689704de2342daed8614f380ee979bb06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f4c7efeef5cc06ff50b4c58cc164f0c8d9e73387efddbb19c7a880ed7267b7c
MD5 e81c55088b95dd229a9c1ac182262eb8
BLAKE2b-256 d809d1c09950feb778734098adbf6f6a32dc72673542fe0beef7b425bc91396a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0ef73166beb8da1b81ca98da90a94698d2fdf7be19908b199201d6f1f05e682a
MD5 927b74495899c0b406cf38920d64f42f
BLAKE2b-256 eeeb1fbaa49e39a1ce824f30ad92a370b6b18cacdd837fe5e14289e1f681195d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a6f5192544d9957e206218b2ed028724dd0c129ddbb04473327253d91f09a9ba
MD5 57b981a3895e25ed842bf619a51a3a89
BLAKE2b-256 90118f162ac496d35f161479372beb116ffda26f963ad1fc6352bc05924bdca5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.3-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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 049db5e3a68ef7664055d1e4d923ba40de4533752df5b49afca8861c30593686
MD5 3d1cd3d353a3f702fe20ca9b11916a04
BLAKE2b-256 c6eacfb53c719db9349a89084b59e8dbf96ce2fe44979fcdac50989694d2734e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4c666cbe89f64a48166a7639bcbb31e968cf509cb5f7c1dc030b72e0ef5f1a54
MD5 8eb25b20de5ddd93b6974747056f175c
BLAKE2b-256 62af5cfe82bc0fd7b8c0ca59bab47606a61fa8f0b6dfaeb838f82b7dc6569873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e1273d24b3f811094689133b4c1bd2eb06c610ca00192340b5ac47ae67293bd6
MD5 128711bd038ee12ac81c3d7011a023fd
BLAKE2b-256 75f37c9e8cfd5d83336691cbcb9c946c59b5254dad5fb0f6c0027d432bd5e049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4f60b94fcbaeadf6c6576e2d333d81e88821af1ac26d7d91f6d675ea2db2aff
MD5 855d6e21b70718dd93392c50dc40fab2
BLAKE2b-256 e7002689423ac8822aa1c59b326933e452f5d726f4ba5d773781b977c3cdb09e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8a96e13142421fbc675a13d019b78b2b2575d390a759fdacd679df3c594ae987
MD5 932ecd30f2bf842ccfebb9ce8115e75c
BLAKE2b-256 e2bfd45ba3210c3ec0a58a226671557bbca1c0f3e4ff2d1c166a9a4907b7e8be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4ff80a773c8591c86932b1314416350c655c6a89d5271ef79831fe7ae47f755d
MD5 4c36f9f7e640c6b2bf7e356794677c25
BLAKE2b-256 ed54360da0eef34c5ba4d2edee209a799b691b635789c3572b7c9ed735f71707

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.1.3-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.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 302fd3f84ab69bf13cd2dd69ff532028e4d389cae1d9cfc5473dddc990a819e0
MD5 c20bb5761be19e7175314438ae42bccf
BLAKE2b-256 374ba142ca1711130f45b9ab6590153c9cd59507a7e40874e394e40e94a381ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 887bf48dbcfff6498a75cbe2be1e93c14fce210433ec4e270f359cef4f622920
MD5 1d516ddcdc7c5cc0d9f7e3d197c261d5
BLAKE2b-256 4d1f68f6d73b4f8dafc2437c573bb7643f568d574f91be584bc5504823496873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ea0d361bb43518401fa77575287d38280f2e0bc0d1f1fbdfbb14c1ea6f9d123
MD5 d1c3dd552784fa8b83cd56677164e659
BLAKE2b-256 2d2625c189c8624847ead92d2e84f5973967eefc800801d436c5ac2935fc82d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d6598b08429ccf9c9514beda653c7b02fccaeab5addde6ed1e6f97fa267513ba
MD5 ce77e27400733c9c291b5eef94a42efe
BLAKE2b-256 7f5d8d8899eb419c9a4146815046bfc2720220ae914f8d1d6d2a080274219b56

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