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

Project details


Release history Release notifications | RSS feed

This version

2.8.6

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.6-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.6-cp311-cp311-macosx_10_9_universal2.whl (731.9 kB view details)

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

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.6-cp310-cp310-macosx_11_0_arm64.whl (369.7 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.6-cp310-cp310-macosx_10_9_x86_64.whl (390.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.6-cp310-cp310-macosx_10_9_universal2.whl (728.6 kB view details)

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

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.6-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.6-cp39-cp39-macosx_10_9_universal2.whl (729.3 kB view details)

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

usearch-2.8.6-cp38-cp38-win_amd64.whl (257.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.6-cp38-cp38-macosx_11_0_arm64.whl (369.7 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.6-cp38-cp38-macosx_10_9_x86_64.whl (390.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.6-cp38-cp38-macosx_10_9_universal2.whl (728.5 kB view details)

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

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.6-cp37-cp37m-macosx_10_9_x86_64.whl (385.7 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.8.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 258.9 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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0a7acffab43eedcf264b95c43f5db2ea27b6d285d3c16e54b90855d4eb2190fd
MD5 d25289507442d81544db3b15704cdeaa
BLAKE2b-256 e950ea728b8b434624d95800f6a948d022938a806bfa7cee2e9239916cf3cfa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62b0c4b39a639aec4c925cc9c59a0bc55ab84027d0807c7c20fcd46990766784
MD5 609a477161cf20ac09ddbb242b4fe61f
BLAKE2b-256 1f30dead2b7e8817bdc14940f13313423a5dbc6e2ef1716ccdd1736f50a4d1ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89f99088108e4b0dcc8adc7b683b1c6d0f6afc4478b6238a216710eb06e085a0
MD5 fa78b1e5037cd79108fb3ed353bea6cc
BLAKE2b-256 bed76115f1b9eb2baeee6d31cd98ca0d0c1ed5f5cf0509bd10e8816b1a628782

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3dc9465e2ac451b1649044bd32e448fa67a0bc21f3168d57720fdb17b505c22
MD5 c40398566c62d3e7d02bc142d9ccc596
BLAKE2b-256 9d12e2890803af6c972f5d07cd0262ac48b76f1f9084ada4fe73a263109c5327

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc86603f93957c83848d8db6b8c0099d952e5e5492fc5eadcbe8804f0c67e3bc
MD5 e96fbf044105ae4263c70940c640b51e
BLAKE2b-256 b7ff59bc8d0c630b33de708d83b93ad6b84f0d88ffa48e6d72ad07633f1541d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e68f211e071d31ebb94a83d236de715b70fe08b1321dca2bc6ccfc171afd5af9
MD5 ff9c6e8c5e09501d914b21cfcbe87067
BLAKE2b-256 d1dabac9bb9bfb30762c9262d2d120d3dffc07cb6b57e63d8a115c0b989ce27d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.6-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.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ce035ae7a32cbeded3759ea4e74080b0f79c76c9da3effbfed8b75074a1e54ef
MD5 d622856bf08630690b5b8b2dfca06a63
BLAKE2b-256 1ad7f80c4099baaf893bc4c7ee08f5236c2086d7b9020e98814df52367a414be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78d1b2617f9559842f5edc50d3d4f6a9ab0d8882bf38430611b18ac86cf6b78c
MD5 b9a76563bc7077e33cbe2f46dcab2df9
BLAKE2b-256 1ec97d99f6d52e999dea1ea270db820a2f01c03402af9831e67aff1bd680d95a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 312a1850b57a86594b81e54375272c66b6ac21e443deaf5a0cc12406be0e01c5
MD5 1e28f273247035a5e3bf28bed9215281
BLAKE2b-256 62ba9597c5fc80f044a245cf5725bf7b1203172ab19e9b94cac20e7662123c78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d94a06d6ecde2ae8a1ad8c4081a66c063f9c4ae3640cd0bdb7bf9937e9d91ca
MD5 b12ea628f43f9463c61af33b5de5580a
BLAKE2b-256 e5850689ece9b57ce306a9038bbcebd9c11f64dc461657faf8b66fc070ec27dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2a52dc8cffedb82b0ccf859b195254cebc1feead856129a8f22ea306fc770012
MD5 fa80f32ad74fdcf80150eec55f22f2bf
BLAKE2b-256 415f74a91e8aadaf031a9bb14bb6a2898cde5662ef697d1e4d72507a8411198e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4fa85546366fb139e771e27db640f76f3a543a2fe05ace08a51300f7d12e6e17
MD5 3e2c1c7976287544c5c670daea0c385f
BLAKE2b-256 fe800e2c85aa3a9a6a6495caa16c7867b3315a4e11614d3fc9ffb9af9234b51c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.6-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.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8ff914d1531362d993a5d60220d217d88423836da9081892664233b4bc656a0f
MD5 e22c51b7153c44a96220f254fe76926a
BLAKE2b-256 248704a5c2c33ac77b9c12bcfbbe25eb7e272ed87c8e56f52b68389ff8ed1ee1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7333f9eaffd4af1c802862f279dfe981653696a04c7655e7cbae226a54b7fe70
MD5 b0d53a7540b010028a4caae66eb4d718
BLAKE2b-256 48a1f36bc947add1821dbfd9218e21719a82590af525795c58a0bb25600e27e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 14e9f034bd1edc9168f1db13e0bf30c3e4aebbc5f4cda2c22efe45d614973a8d
MD5 2b3c07826af2fab43e60523a3f0b87f5
BLAKE2b-256 14c753798a811b6650127b88d2317d36d6605829c352cde765f713d7fb313a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bc6501416de1e62d3b5debdec768ed6a15210a7a4e0d6947c13fa747872090c
MD5 775dddb75c596f2ec0c998cc2082910a
BLAKE2b-256 76f474a7f929f25570f8bcd6a0f63af89f7c661072cc86e2cc55379a995dcaef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2994d35170edd8740936769e4800613c2209d80539b351ef50703c5bb0e2b07b
MD5 c7c23850e314b13191441951154f6044
BLAKE2b-256 d038df5ec76df88caf9ac2899884a95c2d70ef4b2b568cf8331cfbbb69aebcb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a36a808dff463fe37385b4f8df1d0ae1c4873c8c7661c3535638b75853a7087a
MD5 5ebf996175e9899f1bf8f70bf34acd2a
BLAKE2b-256 b68b1ec286e105986c0e2a59d81dc31da711a36e7db4873a2d049991e0a36911

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.6-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 257.9 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.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 bad0cf73dd320ff4446cb913b8127f4345b303b6dffc43372a66ebe7e9770508
MD5 7c4675c9770d4d124fcdf983b042c227
BLAKE2b-256 ede35c258d8b5e6e9dc1f6adf06c6ec4b373f69b8edb79de7c092423dc7a31e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1051c8cedeb6d408c2f23aa65c2580a8b1a14cf3df5d8b9510493f723b5de802
MD5 a2f196b6d459b3be7007386b2ccf8bb2
BLAKE2b-256 f07dbab0f9405d86819df59d52ae14d047c41a7dabf42103e61a9fd24dc8077e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5fcb55f42dabeacd5eed78ad05a27ef5c1a83905da51c76860a4381551fa742
MD5 01ad04641d2fdbd6daacda3c4b3bd8a3
BLAKE2b-256 25ed73d857ef0098a98bf79ae5d45ce93550b8a54e48ad571107d5baf7f23d85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f2867621e65eceddf757ddad3214309c3979966fe24d7e7ae4510d56d34a5b3
MD5 b8b378bda897ea73fed299d3cb80f176
BLAKE2b-256 1a79fb1c88aa62b28bfe4079d20195e76482f0e5369f77dde49e9efda732a21e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ce8cd140d803fbaa4e17f560cc72ebac9b8886e56cd083a9c936e6c3f2e558f9
MD5 2eded56b605591f70f11ce8f024933ed
BLAKE2b-256 0ee2fb30f623c4087c4fbcf9fd91d66abdf135573cdbe0b92e5f9929e7eac4d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 19eda671397f49a95e0646b94e51c265106bfcf1bb9a30a4c134a8b1f85bca98
MD5 d0245d8e3074a9b39aa208bec3f67072
BLAKE2b-256 6b584bc69fd5c57ae8485eebaa8a07b981c60bbe550f1b984aa040a79880c823

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.6-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.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c30085f03e98d81fa539b2ea9e14a27f69361dbe50955d69ad5c18fb5b81326c
MD5 142fd71d49df85ddfd3cba4cc9e4ae3c
BLAKE2b-256 486c33f22ba95ba249022a8de3bacc44d1e68d718cd200bd2496f336f7f5c7b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f1cc1dee2d623ae067c26c61c1af29ab3130f3b75181685984d1d060adfe0c1
MD5 edd83209ecbba86e72f96193f114f30a
BLAKE2b-256 81b61918e8b7ca93848fac849dbcc72261545d3530dfc37eff812f5af1f70fb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbe38d7cedd165872d2f6ba740acd966f3279497e730a2a563c3644a230b3475
MD5 88a5b74a343248e0454b49b94f6d48cc
BLAKE2b-256 788806f6399a1dbdf35d08bdd6d34feb3f32c3cd33a05cc774b494cb10022b8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7844d5dcadccfea0c5e7626257843f827a473e4e1eea67459e996d59afccdea6
MD5 7c420725cbb475b42d51613ea4537abb
BLAKE2b-256 213812fbc33dee9a1a14ce161c23264fbd28d5a9de3dbabd469597eb4d517e9f

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