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 numpy 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: Limit number of neighbors per graph node
    expansion_add=128, # Optional: Control the recall of indexing
    expansion_search=64, # Optional: Control the quality of the search
)

User-Defined Functions

While most vector search packages concentrate on just a few 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 various applications, from computing geospatial 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)

If you pass 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. Instead of constructing one extensive index, you can build multiple smaller ones and view them together.

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 cluster entries much faster than using a separate clustering algorithm implementation. Essentially, the Index itself can be seen as a clustering, allowing 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 to 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 the same arguments supported
sub_clustering = clustering.subcluster(min_count=..., max_count=...)

The resulting clustering isn't identical to K-Means or other conventional approaches but serves the same purpose. Alternatively, 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 AI will 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 differs from searching for every entry, requiring 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 be useful 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 the post: Combinatorial Stable Marriages for Semantic Search 💍

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.8},
year = {2023},
month = oct,
}

Project details


Release history Release notifications | RSS feed

This version

2.8.8

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.8.8-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.8-cp311-cp311-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.8.8-cp311-cp311-macosx_11_0_arm64.whl (385.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.8-cp311-cp311-macosx_10_9_x86_64.whl (397.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.8.8-cp311-cp311-macosx_10_9_universal2.whl (751.6 kB view details)

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

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

Uploaded CPython 3.10 Windows x86-64

usearch-2.8.8-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.8-cp310-cp310-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.8-cp310-cp310-macosx_11_0_arm64.whl (384.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.8-cp310-cp310-macosx_10_9_x86_64.whl (396.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.8-cp310-cp310-macosx_10_9_universal2.whl (748.1 kB view details)

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

usearch-2.8.8-cp39-cp39-win_amd64.whl (253.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.8.8-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.8-cp39-cp39-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.8.8-cp39-cp39-macosx_11_0_arm64.whl (384.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.8-cp39-cp39-macosx_10_9_x86_64.whl (396.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.8.8-cp39-cp39-macosx_10_9_universal2.whl (748.6 kB view details)

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

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

Uploaded CPython 3.8 Windows x86-64

usearch-2.8.8-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.8-cp38-cp38-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.8-cp38-cp38-macosx_11_0_arm64.whl (384.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.8-cp38-cp38-macosx_10_9_x86_64.whl (396.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.8-cp38-cp38-macosx_10_9_universal2.whl (747.8 kB view details)

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

usearch-2.8.8-cp37-cp37m-win_amd64.whl (258.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.8.8-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.8-cp37-cp37m-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.8-cp37-cp37m-macosx_10_9_x86_64.whl (392.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.8.8-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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6db0b1fcf87c574a69388bccef045db84a3d560abcb5f46f996329d659ed2069
MD5 c52d6958531d77bcd36c3c493aa5e014
BLAKE2b-256 05c55bb610e3ee6ab9710dc860e0ac13a8001fe4ed6f964656ad88ed569c69e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 709bf291a22f8de6d33ab7cb17f20303b58f06deaa43e3986dd99f8bc7155c93
MD5 0a74aa343400924e430b533de55d13c2
BLAKE2b-256 5e96eaf9c214b4b2c254d5fd5f7af04286b645f4cdd0c43ced7910f850cedf33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 547db8a2b1377303a4d6b90f7a6e65e31e3bb6e1d65e13eda2a3d20cfd32055c
MD5 bee3aad6211f1cd41b217f2aa82490cc
BLAKE2b-256 a1dbc1c4e6bc10a90e67419f478d92e8b80140dd43dc049b754d295fde983b27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ca0536a3955961773f781d2e07aac7c911286dd727ba9fad220639d7e4487bb
MD5 754551a802b6696d315e48e6d03a5c74
BLAKE2b-256 b85e036ca962afed0d1f44fcd812676dd1ba1df88863132b974248d2e8b71b0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fe9cfe0da10811c6eb7580eb35c3e6ebb8204f8440ecbb90c08fd663569d4537
MD5 461dd34da1592c67e496f42a345b9dac
BLAKE2b-256 7882b017b11842024a71788eb7c521f2ce695e67f3d79d37ba8948371e070cf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0ead80bb093b754193ec82361bad8d927fd4d1ae907ba0109f76844e0974bf04
MD5 3bde15f8ed174119c6fbb0bbaa1f94be
BLAKE2b-256 1a5ac1c32620727ab92425672e7ed8f199fde4623e47db17926a1c954611aab7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.8-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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5a2d10272f96c5a6937e9cc344d8fb6a6acca379970ebf696a150ed517987357
MD5 95022c3f8f4d5bb31f1317f8dcfdcafd
BLAKE2b-256 aaafc6c545e321609507f3a1df0d7f1747c91633db1036f7e3689c7294c9449a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3478f8bee5a79c6ce14c0f6a4621215e5034ec7147dcf6bd0a3ef43976ab86da
MD5 3f071a6582a9474bb7295eb3d842d3e4
BLAKE2b-256 1738304065cbbcfa8e8cdfe940b604ce1696aa81deedd924bfd7441a37dad5be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f2c831cb27df7a5f8d7884c3657659986b665e92740a26a3b293b742868711c
MD5 d51e688f98a8eef49a16ceb0d963b908
BLAKE2b-256 bfd0074733ab1b783d0b203caa82aea5b6a5a23a768652dfd154a4bafc821acb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c38897a721687097297e732804274d5c6204f810763789613b6232517350327
MD5 a4c7a5e07d11ec251197fb92826cc20b
BLAKE2b-256 daa7cacb6571a2cf4fa44a5f60bce0bc499eb460d031b25197c293c07355cac6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 370ee055c4b0d4ac22121d7a169585770c804c5095f0d0793d74bac5111534af
MD5 8e7bf4209f5f7d655f66882fd79cfa7f
BLAKE2b-256 19618898cd4b3c91098e81986f2e4b19e374f57b6c651b7a6591dc844e480335

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 463320d3a82ecfb1140cd1dbdf1427c46db967a42fab4c951df625eb4f1d85be
MD5 fcd31d8cc9beb451236d00fca8e4c00d
BLAKE2b-256 6b00a336ac759025aa2409e47f4b0da57fa89d4bb1c8749cc76070e5e448b1bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.8-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 253.5 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.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e2b09822e9f5a5a49fd42588f317e8f0075d827520b30b1c7e28be1e76b299f6
MD5 c61a13f0e53885ecee66e4cf2a84b260
BLAKE2b-256 e542da39191cffb49f757b4c46b13e81079314cf2b827dcbfa80fdb545f868c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a259aa070bb9c5682a97d4461279e6d62f8d682882c67722d9e4dd04eee0739
MD5 71e5a59c924e57e42dcfb2b185a30da1
BLAKE2b-256 bc8b605e9ac8b028927eddb65543579bb9fad4b8b076a5907a90e4332d2af548

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d264a9435df515addce9dc732702d9c7a9602332e1d8c865cce5593aba2b850b
MD5 54dccd88d9d9b97c63494ee635c47103
BLAKE2b-256 37063d93b13d2e074246d8171f2fbae7a150d2c4e285c92ced3554516645ea38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55fe77e0798680949b955d4517323905ebe9fd7196bedd4b4ded0bd7ac9ce516
MD5 1e2b7949b3cd734246b63b800741bebf
BLAKE2b-256 92e8fe85cda422627336ae4e4baefc8a2ad93151c3a05f3664c6ca01dbe0ed6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8b639a56f440cff0bdcfcd62bfa4c68b600dcf1dafb2dc739fee957bf2b0f19a
MD5 f475870f62bfc25d6de7d9c11b34c811
BLAKE2b-256 5a29a76dcb8f49e78091193ad52f4255e50244063fb774645c0041a2c111409b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 bb14435cc734cabe6c14eb1142ccaa07f27c5f7d6bb44f1f1bfca6213c39a697
MD5 45aa84c55f035e2c7a630a29a2ffad27
BLAKE2b-256 81966406b51314dfab8758578a6c9c6a4f812bcc84639207955c794f393c6378

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.8-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.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3552e24d176f775c2a16f09c4b601ac5d5b5a4e560f3ea62635dd1c943e7a0a1
MD5 b4c8c4f30f3afa89e9390169845445c0
BLAKE2b-256 48d401c385efcdeb7f08832e90390389efdaa54d170964979dd7216652bf2afa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6376f1a720bfdbe8981840d73d39a0a9d34fb628c19a104f650b30acc19ea769
MD5 9b1263e2852701056f386efe438b423d
BLAKE2b-256 45969fd44c22b37247b63223153f7fa42c08efe040ceca4239233e47c77900f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d8916caa0bb19be25b0de75c5ad2cb5783b94b57f09a4e8cb6d6cc4c1673db3
MD5 2916f1d279f9647a4ff0ef35d961da94
BLAKE2b-256 423ad76338f963c1e1a1349f7ba374a0ad35920120db161e3898a3708dcf5126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db9d0fe32f4b4e1b03564ba073fb4dcb733d03ac6466aadff2f80848969135d3
MD5 75951e5ff9d48078ab281fb6af7b0175
BLAKE2b-256 11ac464c9809981ff34c4d4599a56dc407d3d497dae8afd435ece7b19748fa21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b05f8527e3bf75e7ed8321b124f07ba15f8f972ce0e39cdaa5401b2bd7b1c416
MD5 cbd2ba64cbe32ced7789b93cc255e483
BLAKE2b-256 1534f39c0e24d39e0c5524fda3cc216d86915a982d90c5aa555875088cd8cc15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 24d3035b47f3d019967bc38314dba5ee7a28966243460612e8bed4969a7fe422
MD5 2a5167d04a0418565ff8dbd17934688b
BLAKE2b-256 e119d2c26054378fdd010a6ea7ff4016587ba7e58f30ad8ff277ba0bc7e6e98d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.8-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 258.5 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.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 5c8cd90b38a82754f2a1776148ae4a0273afe1437779a7d50a2d35c1ed365dbd
MD5 222bba2c9e439e30cbd17108619f753d
BLAKE2b-256 3591d7a5d3dba1a710f91fbcc981afb6604cd2595227f11e43f58264cb851786

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c9122953418ca9bb29c389ddf0a954c541b54552cc5128d10e19d83cdbcabe6
MD5 f8643ce852cc66a377af3fdce40f651e
BLAKE2b-256 d51cd1cf2da49672f636b677b3e9a91ac803e4b0e8606af31130b7615a670da2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c3d782499210236e7ca9d2c9642c76062f03656de1308ddaa9de10f93b19637
MD5 f62b8944e8d4df2e65882afa6c7497e8
BLAKE2b-256 76ca31bc4a5a00ba5ad0f27d33ffebcb7cd388d4f37dace47a6c2d7e84283378

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.8-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 99983d078fb09d420a32e08e006af95d4bda49561879870f4575bd9e6205b2f1
MD5 561ded7ae7101cc70c4dc97c51037abc
BLAKE2b-256 266e7416c2090d915a0dd56ac53d487e584c95b7ad4793b3403c36498280db9e

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