Skip to main content

Smaller & Faster Single-File Vector Search Engine from Unum

Project description

USearch

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


Discord     LinkedIn     Twitter     Blog     GitHub

Spatial • Binary • Probabilistic • User-Defined Metrics
C++ 11Python 3JavaScriptJavaRustC 99Objective-CSwiftC#GoLangWolfram
Linux • MacOS • Windows • iOS • 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, primarily focusing on user-defined metrics and fewer dependencies.

FAISS USearch Improvement
Indexing time
100 Million 96d f32, f16, i8 vectors 2.6 h, 2.6 h, 2.6 h 0.3 h, 0.2 h, 0.2 h 9.6x, 10.4x, 10.7x
100 Million 1536d f32, f16, i8 vectors 5.0 h, 4.1 h, 3.8 h 2.1 h, 1.1 h, 0.8 h 2.3x 3.6x, 4.4x
Codebase length 84 K SLOC in faiss/ 3 K SLOC in usearch/ maintainable ¹
Supported metrics 9 fixed metrics any user-defined metrics extendible ²
Supported languages C++, Python 10 languages portable ³
Supported ID types 32-bit, 64-bit 32-bit, 40-bit, 64-bit efficient ⁴
Required dependencies BLAS, OpenMP - light-weight ⁵
Bindings SWIG Native low-latency ⁶

Tested on Intel Sapphire Rapids, with the simplest inner-product distance, equivalent recall, and memory consumption, while also providing far superior search speed. ¹ A shorter codebase makes the project easier to maintain and audit. ² User-defined metrics allow you to customize your search for various applications, from GIS to creating custom metrics for composite embeddings from multiple AI models or hybrid full-text and semantic search. ³ With USearch, you can reuse the same preconstructed index in various programming languages. ⁴ The 40-bit integer allows you to store 4B+ vectors without allocating 8 bytes for every neighbor reference in the proximity graph. ⁵ Lack of obligatory dependencies makes USearch much more portable. ⁶ Native bindings introduce lower call latencies than more straightforward approaches.

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)

vector = np.array([0.2, 0.6, 0.4])
index.add(42, vector)

matches = index.search(vector, 10)

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

More settings are always available, and the API is designed to be as flexible as possible.

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
)

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 essence, 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 splitting 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 binary similarity metrics, like the Tanimoto coefficient. Below is an example using the RDKit package.

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

import numpy as np

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

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

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

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

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

USearch Maps with SwiftUI

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

Integrations

Citations

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

Project details


Release history Release notifications | RSS feed

This version

2.8.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

usearch-2.8.4-cp311-cp311-win_amd64.whl (258.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.8.4-cp311-cp311-macosx_11_0_arm64.whl (371.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.4-cp311-cp311-macosx_10_9_x86_64.whl (391.9 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.8.4-cp311-cp311-macosx_10_9_universal2.whl (731.8 kB view details)

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

usearch-2.8.4-cp310-cp310-win_amd64.whl (257.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.4-cp310-cp310-macosx_11_0_arm64.whl (369.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.4-cp310-cp310-macosx_10_9_x86_64.whl (390.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.4-cp310-cp310-macosx_10_9_universal2.whl (728.5 kB view details)

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

usearch-2.8.4-cp39-cp39-win_amd64.whl (253.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.8.4-cp39-cp39-macosx_11_0_arm64.whl (369.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.4-cp39-cp39-macosx_10_9_x86_64.whl (390.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.8.4-cp39-cp39-macosx_10_9_universal2.whl (729.2 kB view details)

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

usearch-2.8.4-cp38-cp38-win_amd64.whl (257.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.4-cp38-cp38-macosx_11_0_arm64.whl (369.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.4-cp38-cp38-macosx_10_9_x86_64.whl (390.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.4-cp38-cp38-macosx_10_9_universal2.whl (728.4 kB view details)

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

usearch-2.8.4-cp37-cp37m-win_amd64.whl (258.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

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

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.4-cp37-cp37m-macosx_10_9_x86_64.whl (385.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1fe00803ef2880488176f32127ed6ac3553bb643d2a8ac435f472d1dc30d7fe3
MD5 9f512ed47a86150a7a0f18bc51e5c97a
BLAKE2b-256 12a60f9f3ec6566660d53badad72788b2e77ca0258d99fe748fae8b32647cd85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fde05320820d7f4d057ace200200a95ca738a8cd7c2154b74a7cf1f9945aec74
MD5 7998c9ba8fa08896c7067bab7083f4f1
BLAKE2b-256 f5937434ab6867481b2d2f4f674556dd491b18d6e70745f8339a753c1aaad438

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b42cec530e03fa939d9bdb435493bb562c9a0e7d6203493523e3b3aee5e82de6
MD5 a8a350d9bec49d5ba9b353bdd32205ae
BLAKE2b-256 20ab708dd233702dfc9e700b650289efdb4185888bf9b606018f6e391382ccb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99caef8f4c3746766a882f68516c987c3a73f5f1f61dcc179cb314b0544ecfcb
MD5 bcbf927f5634db26a5b650cd5f185ba5
BLAKE2b-256 91179575598ade6925dc90cdda421ccabadca008950fe18bd364e2e147c77e28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 48e10d19695a364ad1f523576d0ad982f7b44a25096242827c69ae9f07b87896
MD5 190882df9029047c2b288c3417a44097
BLAKE2b-256 6d83bcb3ac29817a7ecc0cb6db48bc87b8e3bef8687983fee07b6f0f8dcb695a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 35e4830039287194767b240a8534070c4daa49e7df0365a0c72c947a39ffc06e
MD5 b6b3091a3a91190ecf8a95b8cb50e76b
BLAKE2b-256 61f02d6dc60234ce789268a0e712c415b6a7be1b2d591f93cce360025059d677

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 40c7c2a7a119b5d3a56e112c8bb64e4d03bf0ebd618a110896d8188372b9051d
MD5 2aad7b53e44d839a714c4023bb50c6bf
BLAKE2b-256 a766f7a36d6faef379cdcae7bf791b9c5abf37096e8a1624cea718a26ef4e72e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 002973b672d5a01c26001b675b0fbb84c5398bce6b1f92447c77567c8cdecac6
MD5 59a90e2a9cf41b1ae1583ac334eb3ec7
BLAKE2b-256 c01ddf33eecc5682cd1287fd5e0fbb953aa7c1d28dc90af21b9654b22f3c124f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c3802d9f181a358dbc4b96639b7dfe392087b784896e6d46d0ac9b7d5ac89d06
MD5 9c7016c33d3b6ba96016f102fd04ace3
BLAKE2b-256 94ff7da9dd831ac2c4391b35909a5ca44e748c86d5906587138cf364cdb60063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f5b89c1470f7d32f1be96ab8aa22eecba2c76fe932e4ce3707d4b6fa3d3b5af0
MD5 b76cf8f7f7548299e9c04dfad3ce719f
BLAKE2b-256 965a99df9b4649569f7cb3786a92b4f080160071c80a4b9219e86075c909e6a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b7be27fa3e8186738b812c9a2faecc6d859c31b225ce3b95fe7b4c80816f21c
MD5 46af04231527ca3a761c74942ed1d729
BLAKE2b-256 fa105b425cf889472450a9f33ced916ebdfb43a85768a4afe475976894f80beb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 377134def5e88b7def3fdf6e28548eaa07b0ccda3e2536030ca3f2831024eb5a
MD5 4e108baaf40aa470fc3e80847f5f16a8
BLAKE2b-256 8702e76e02333bd2bf8d0b654e438d35d4622a2b84a10b8d5766fb3159f2e51b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d25ee8eb000590f800f987df0cbcd71ad55428227edf48ba9777421aba01efc2
MD5 dc10e05e71d80c43e23071f07d99d314
BLAKE2b-256 80c872421df2254be8e8efb6368bf24c66a552b43b494ea7e0b7190e4e4c79f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b93711bbf14a75e6a56b849659e2cf9bd94d8aa257f0f40b9fec599c1373c5ed
MD5 29bb6bcaf92eb4a14774a447548e78e0
BLAKE2b-256 633b9c62e45a9f202003028f3011523a7fa747044f94b6b7b26a8e9ee6b641a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23117a74e1885f24d762d2a5ea0dcae7bcbf6174866a0786a0b5102854aa7fd5
MD5 d98620fb78267ba2b0ceec3eec32fc27
BLAKE2b-256 ee06f453ffd531213dc91ebd5c2c67e111ffa5b46c5b9c972d9f60c8ee29d32e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ef7b3266552529fdb905740440c594364b221566ecb11166697d2e28d6fcd51
MD5 8178235484652c7a7cef97849f0cdb74
BLAKE2b-256 41ec9cf6ea634be399c39c17b3ab2079658d7e71d06be6a0b4b4fd72026e9669

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a85e2e81a88e957d425ac749cefab1591e0de8443482e4eca27754841ac7581e
MD5 af08cf9878a6175467066271a31ae486
BLAKE2b-256 77b87c4d238fd092272f5f34b8483fae6dade84e96c149879792de04fedab03c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5787aba6e60028ea5421e9e1da1e0d89c1b8db88b405ff9fd3c7a6a9472b0c62
MD5 ac734913e0d62fdef9a3e783e55ad397
BLAKE2b-256 e6390eb1e19b96af449014799669a40c49bc6d491756c3c33fb4489932ace6e6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 bee42ed9874ecc0875fc0997b6cb5b39abf77e508f6b0f6bb630b240f763b93d
MD5 9637b51179b0bb1fd3daaaca19c3b05b
BLAKE2b-256 a26050f9e6e53ec74ae0ad4decff8f6e5bd241ae721859bd2dc5980f3bb099a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a0799b33c7efc81cce2260ba3bdbf62a3a72b832dbf3fe1cc6eb9ab48b7343c
MD5 5da79dcff999c218abf00bdf7c3a30a4
BLAKE2b-256 c4401b9595f6adb57e050f4d4e0625747c04e397f86c906ba1e74c19f23e197f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d64695dca3b98500a9e7f190c6f861a3fb74648d54442065be584e273b6a942c
MD5 06fbddaa19fd004e29ce7a28612d3fb8
BLAKE2b-256 940b79c4f23959c1e0d8a05b781ab30a217913a6e2b47f5ef45cdf1c24bb87f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3250df0c697e3e3d5de051aef37893642ab9848d71413bebdb7bf42ca1d4d38c
MD5 a2d28a429f3eecb041ec2adf88ac4288
BLAKE2b-256 8dc48d0d69a4d7cfc0c2a1dee978588ac5784be76d6359dd35fe8cbd479d9c91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d0065473145c429757e0fcaea52882f1be80f75548ca08e75d492b811339a4c2
MD5 0b7f83fd7e5d5673b8ed16c30a192aca
BLAKE2b-256 249bdc1f3e291314046a3e3c22e032e1356e834f6e32955fdf9e31e07531010f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 830815e7a8b34c62cbd36e992802fd580b130f4955409250d0bf147abb12731b
MD5 eadb14a1a7e6e8ca1472d3e688b93f59
BLAKE2b-256 5a1e76c75dc6c86ccba876fd9c97871c87e2bf806b39d1ff76e9d48fb80bd2b4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 96bd66d4865a7bb08ef3ca0d290352a3f4452e45269ad277e813f2ea7c710030
MD5 08cd597bfa9e125e5e649261f5554c71
BLAKE2b-256 fbfce9fd191b890c473d742073dec1cbbf05f2ad9f3310d30668060cb4f62579

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f25bc476de6287d4d07bf9a5c9cc9fd201541a9ca2ef86fb4e6787226883bb4c
MD5 2bf73ccb8f08cda53f5674021b061f5c
BLAKE2b-256 498f8206c9fef95dca51ea983a97dad151c6de8dd62e621a3447de0d05b844ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 97257d369e545bc6fd48549334c1e1398e68d9dce2928066fcd2e969e0350cda
MD5 67eebdaa6b87fbb1b0579f6f4e447d59
BLAKE2b-256 8ed81a4685685faf58eca741662ddea45062fa7e0bf0800adc333e586545aaa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 179a4863a9547d4dfc31dfc0cf474af976ab9ea0932d753e131bdfd980a49af0
MD5 509328765f81f1a116226fc547e795f4
BLAKE2b-256 c4f47ec20ee646dffa793984e667eb0ce0a85af29701cd3f33993fcc2f783643

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