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 = 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_2023,
doi = {10.5281/zenodo.7949416},
author = {Vardanian, Ash},
title = {{USearch by Unum Cloud}},
url = {https://github.com/unum-cloud/usearch},
version = {2.8.2},
year = {2023},
month = oct,
}

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.8.2-cp311-cp311-macosx_11_0_arm64.whl (370.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.2-cp311-cp311-macosx_10_9_x86_64.whl (391.5 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.8.2-cp311-cp311-macosx_10_9_universal2.whl (731.5 kB view details)

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

usearch-2.8.2-cp310-cp310-win_amd64.whl (251.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.2-cp310-cp310-macosx_11_0_arm64.whl (369.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.2-cp310-cp310-macosx_10_9_x86_64.whl (390.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.2-cp310-cp310-macosx_10_9_universal2.whl (728.1 kB view details)

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

usearch-2.8.2-cp39-cp39-win_amd64.whl (251.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.8.2-cp39-cp39-macosx_11_0_arm64.whl (369.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.2-cp39-cp39-macosx_10_9_x86_64.whl (390.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.8.2-cp39-cp39-macosx_10_9_universal2.whl (728.8 kB view details)

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

usearch-2.8.2-cp38-cp38-win_amd64.whl (251.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.2-cp38-cp38-macosx_11_0_arm64.whl (369.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.2-cp38-cp38-macosx_10_9_x86_64.whl (390.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.2-cp38-cp38-macosx_10_9_universal2.whl (728.0 kB view details)

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

usearch-2.8.2-cp37-cp37m-win_amd64.whl (252.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.2-cp37-cp37m-macosx_10_9_x86_64.whl (385.3 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 252.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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e165b0835e7b3a56b0e9c5500e8da6cebd4a0b529e0911142deea7ba258f4048
MD5 a0039c33cd12bd61db86db264f93a737
BLAKE2b-256 95ffaf2c4e2710ebe40dc26a47846e5ddeaaa4a1692c80e7b5a6badfd7a91beb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 412b740f703fb34dcab84ee279a9fc0ccabd7f2837cda47eba3ab9c8908cb101
MD5 21d2c2564c43a5d1f421114336386f13
BLAKE2b-256 be1486aa5677c549cfbbf024b6628271412c1453255bc0ded88ebb55890ed38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d4d7615a497f9614550fcbeb3e2a3f9e0675d0a3fe6fda924e554edda626cacf
MD5 aa47c5aa0c576fa9aac9e8845419568c
BLAKE2b-256 fde3cb2dfd39d1308bde23692c32e7cef94030dc580f3d3fa00fe82f7151fdc5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2fc360afdf8fb827f556af6c850212256b7b0c8f0674d05b097f24e2cd7aa736
MD5 4be1cb65c741828e2613c1c95261b8af
BLAKE2b-256 98d9d0ffaa277cfdc00ca5ad0499dc658b620d86f50907b88a3ae8eb2f7c6cc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83b2f82c8eb3ad9df0c67c162480de1db07b7220f9fdb622320dbdc99bf471cd
MD5 ff84041d50fde077ab6b5d447bf4a969
BLAKE2b-256 3f81897262ac3e5431bbe229901ae70da4a610354c6ab69fc2f5680544d75d17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 97c50b8ea0652391e66b8000a10577e8e4f7059d27b289d235098e5371753213
MD5 b996f99336a2cb7e179b37548ca030ad
BLAKE2b-256 7065ac89e4c07f487cff2bede4bad433c0aa5224bdb64b12f6979d9c28b61da8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 251.6 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7e55535d68c63691146205a24ad7cd2ed84af2ce673c01f85393459080063676
MD5 0f99bd36c626bc215e52670f484332bb
BLAKE2b-256 a8720ba23b7ab1220812ca6a6f61bff0c94e63cc3b3cd313d5bc2f02bf7fdf80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0fb024997431aebf2c3656bcad24cf2543deb89c151ecdd191416bb6c93b7f80
MD5 223276e59f02492b13c7546123107cf6
BLAKE2b-256 170854d3442cf5b93eec49d8518ff6d198f37dd52b37a847047c76abfddb7487

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2202c0dad34bb17fab20b4fbde53af5ccb156b4afb37043feed0901ba8ceff99
MD5 c2912d6f55ed6d348991e3d858a0fd83
BLAKE2b-256 da8795db6af0b2f0543b668bb08e19a445e20913058858cc97bc432fc8ef3cfa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5a340b447a507deac169f8157bae9d6c0199bc554e5e2aa744821a1708c0805
MD5 d8a431518c57427479a307496e24eb4f
BLAKE2b-256 0e5db455022b17ae1514e40ab694ff10772d41055221554afeb5b3358a9d2d09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2593d2085955038abdabc4bf1d078a865e6e0f3ac4ea3cd1f92066da78916323
MD5 838a2039cdb6f03e01bfa25417d184e5
BLAKE2b-256 0cc672ff647723d727698c980ea7f1a5c701af77ed93062e647ad946e141fba0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fbc8ae95e178c09f5c22ed69951993ecbe7692dcaa25dc03f64cdefcc8fcbcfd
MD5 ffa1afd11c1e1c2692036ac638e1ac29
BLAKE2b-256 7bd61a84aee1ccdb3269f37717bfae63377197735d9b6426891734e784dac226

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 251.8 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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 706516b7f94687fa151424a302271a23e2d3cbb2f567b5084f7122922ef2e4e3
MD5 b18f56bd80e62365b6872a6286271ec7
BLAKE2b-256 1207f3bc062969d15267350c16bb8eb3424d80c373bec99d6017a3952f6c7e47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d57b648a54b5de066040300e905a04b89353adcdf6f8d2002579ccf7bad7b860
MD5 81fddadefd5dea8827daa5238132d2a4
BLAKE2b-256 f9f5375543f7152338e87ac2b4a31e2aa40c52fbfd4c1e7e310a4df6682bd23f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae2fd7c7daaa0f0cc93679cbadaccaf3a66a8e64758d50cb1547b20da24dd876
MD5 4cefeb5339ae9b329b17f306eaf4f010
BLAKE2b-256 7310a13d8a4fefd4a61bc2afaed1c392272f4c441e7f75f84f087a2e4491d156

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2045718e08240a26669235bb7cccc3fbdb045dcca074dae986d24df1e9ecba6
MD5 dc3feb1188d42edd0f1dd5af01566dc1
BLAKE2b-256 788471f32dccb079d4883dea0f736d08212678a3d74dbe24fbd65b016a32dc63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 693eec7d85e766e94b1c328eb3d657eed3b6384a64d8eeee70ea21aacf3c034c
MD5 590b7c047240384ae46659345922d71d
BLAKE2b-256 e7769a574edd07d645d20d0839153da2391a45d57f0bb89c7fa38d97a10094c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b6a36f410b3278ad8916f444514b567a12927b311920c0439812faadb2179d87
MD5 c23b0ea8c4ada3e77cf765a3d9bd4f03
BLAKE2b-256 57afaf20cd1771c549194022ac9d8d257e3e1fee5273853a4c75f4ed05d830bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 251.7 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.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4f99b50df2d375acc5976c978837210b20cc65e153cd64fc03c0a7469431f766
MD5 f4c8264e81e19b031c2a7c39c2e6493d
BLAKE2b-256 b00d9fc320db0e26735637b715cda15557a172d1b968775a01f6f1e155d8fc79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e2fbc186975300aa4cfed508994fad703f8d1d727c765b2443f6b8959b8e73af
MD5 a70f584e2c9d9446dc77640e30eb742c
BLAKE2b-256 a48a4362d77c576509a4c9ab8220a5e5201040c28e3d9a8ec11fa4cb56622026

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 28f09c9917795e4ce5919a119afb153d580f23142ea93effe568f93af725c83f
MD5 e2a99530908e59fabee16f4f631f6831
BLAKE2b-256 92a905600b24f937048099ecedae72f6d3518d664cbbb79521172b337cd8ff49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02217ff2d39c986eaf726bfc6876fa017fcfe30187a1b8f9d3c2e5ae6dedb8ad
MD5 731a25240d2d9d456cec40905eb8a8e7
BLAKE2b-256 5c22b5b6f041d32874948a2e0ce1046b994cf48ec0d8217acd338c307fa80ea3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 70ee88cb6d77b2e2787220d42fb0d46acbdc6e19a928dcb7f196e3523b8593c1
MD5 d1a00679d26553e0e860891b70a01fb5
BLAKE2b-256 41763dcbde59065d523e42d544df515bdd238f35fd4d35aaaa977f15736dcf2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f1dd10562efc45cd3de3343c4bff62df953ad87075a36c0d3420adc9abf42a47
MD5 ed4a8e43473e28d4b6b926477754c7e6
BLAKE2b-256 9e982d3efa50faf34e1fdaec5e1ce1436caf02427ab4f35a34552f8e756fe82b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 252.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.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 3f99cdd279166871dc1cd87ccd8b4c63b8745616522efff272838954bed0d689
MD5 ed114478605f4e1de846abb6d548f38b
BLAKE2b-256 bbc969516dae1e65abed5ed99ad9c9e1646d52b38474b765e4ad05419a133b14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1abb3269662d0d78830ca4cec10751837bf267d68ecd38ad2e103d72a7191e44
MD5 35e44abf26bc633f64361d735ff76ca9
BLAKE2b-256 a14239f1d1ac8e129b849885a132731148d4d4aa8c6c32b8cd5c593166e9899a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 58fa4bcdad7c3c99344924307dd2b6eeb06660078dbfd2e64fd39e98e54f4ccb
MD5 de87d9edabaeb3e3a8d13191a70d9f2f
BLAKE2b-256 46ba61aef317b713963179315f9d06128aad719ca61b7e1b7dbe7ce6168adc7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 42eea242289466281c94b88df766a6dddac8914030e5d7872b2bccbdb6dfa045
MD5 a8d27659f3e25e252bc81140f9fd267b
BLAKE2b-256 2f367ccfdee87ec8efdc0ca98c7e19cd3437bb426f2af922914199cbbb4ea850

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