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

Project details


Release history Release notifications | RSS feed

This version

2.8.7

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.7-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.7-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.7-cp310-cp310-win_amd64.whl (257.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.7-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.7-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.7-cp39-cp39-win_amd64.whl (253.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.7-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.7-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.7-cp38-cp38-win_amd64.whl (257.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.7-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.7-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.7-cp37-cp37m-win_amd64.whl (258.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.7-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.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: usearch-2.8.7-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.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 04798bc7ceeda1ade5d075c2a87eee2610e920629b5246d10e692a4ea113f243
MD5 b257246e7063a1c1c2a2ec5b459051fe
BLAKE2b-256 cc58318a6b4881d7a291755dd8efd4ccd975f46229f5405972bf444bd0acde2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1e0ad1823ae1ff66b46a4bb4f688fc4e325134849dc2147e9222ff971583156
MD5 9e1571b446dc7c0470fb6250403b8670
BLAKE2b-256 00ca021199cbb3f1458330a3bd20b894c729ad10525ad98f57deceebc921f863

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1166447c75f92703d60440730f6f053ab79be87f1da5afe84b018df1d403a666
MD5 61ab65fa872a77f69eb4ceadf1aabd3c
BLAKE2b-256 35bdd202052fb77c8860c58c82853297f836151cfaf001b895d8db12e5165b7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abc73c3f06202a54e8770432c7e0502125e41fcbf3dd4eb312669d7ec90a4c12
MD5 7054f1df684d8a196375bfcd0f6f0026
BLAKE2b-256 8b2e2b85f67e691330375a84527a6b55cd7b24ca5d8f92886aa8e7b86a4873ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5bb792a78f9ca7ba59a6736e080e711afd10b5d3f14be37ba4f7f5300ac11f23
MD5 d1cdf728b4805a9b32de80b24f44755e
BLAKE2b-256 be247acb04388c817f4d77b039632101aaf18b8fff718fb21f2c950dc9d15146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 272f5d7ff3ff53da9775a84ba6913937007bfc98f5afb28f22c19927b98cc020
MD5 616fe1d5af23586d219cf899df97d0f1
BLAKE2b-256 a88313c2b0256ce427646d623480eb351e4ca705905ff62d989d8f02e470ac42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.7-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.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 72caf34e61849702d0e10519b9df3c73c8f51382269335f366e2cc0d3b3113dd
MD5 e10774cc07378872c67aeaf5cfa27d91
BLAKE2b-256 6d8571e086739d609874e447e5e50a95b9eb99a821c9b1df10470eb7d9519a38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09ac3d2d12665619d61ae010181a54edba111d3612a23bc3de21489bf16bf33d
MD5 846653cafb4063ad09cfe4685bf6ad57
BLAKE2b-256 4bbc1d879f90f1440bf8f0f1c46340d09d5bc96bc7c607ac94938b471aecfa8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e9b4a2d8058af79d5b0ee7f17470b4aae37171d372ccd96657ae424f221e923f
MD5 8555cd834817977a36eb9e38de89333d
BLAKE2b-256 f45514b53583c590f7d7d2e1dd956be9644a699d45b9a1da7cad4e708a286275

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d622ff1470f8bb81aedf4b909502f5b650cb310f2b4130df8f2d5ab794c4c9d
MD5 4ba7e8f2ce445475b22ae15929b49a95
BLAKE2b-256 45e4eb6e44105ce28e6867fa035c1632780bf9ebb6fe45ef9b90a4f8b04782d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 572da2e86f594bed3ca2cb0ec53847f2635e30511699d6cba02dbdc148440dfa
MD5 6d900c8d60c239d3bf19c4ad673d38b3
BLAKE2b-256 3f78eaf9be2b5ff791eb5433de7957ab770c9ab58db84ddf8a95fc06a34093a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ad2df7928a93cb3563e73a83e840fb290fe9119eb1f20ba013393814dea08aa5
MD5 7879734db14c16037d2b17ebfdb0b626
BLAKE2b-256 0467da111cc222813b5f02caca966849ee0f66d1a178d73662f11ce152931e11

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.7-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.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6690d7b12cea7c057092f28aa6694e8efb074ac76dec21d1cf0248c78d39cb41
MD5 65b95ac1358811445bd05657f626aa6b
BLAKE2b-256 267b8a39caa60b69a7d2bba939f44f5a23fa5bb6f3b5a54fdc5b5aa87b804f91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61f1558cd463b664a380c2abfbc102680069ede030db583e4f8cdbf4db313a7e
MD5 c0951c778e444e3a0bee05240c4a55e7
BLAKE2b-256 b61fdd7fc08f81f234f2bd2cc50f743fec63cabf3491e534a6307eb1ba07ddb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 38316eb0e8069bc32355158fd42cccacc0d8a994d93cc8a44a9d5e0abd95e126
MD5 b7dbeb0ec3cca3b39cb218e5670b00f4
BLAKE2b-256 ed3ba8dc794254d0760801d3a880f4dad7cefded6c2fcc1964b5c7b8a2e87949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f31fafc71aa73d5adb666db81376fb629d41fd59a6c15e249e12006ec8497608
MD5 3038af9e88392ef1872a0380fcc12277
BLAKE2b-256 250c10b66a8443b4d48165d0bd8330a3bba47222d03d54ba13b91b25e4df278b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b443b449964e5e588332668bbcae53a59e3c0b0bde03d9c475ffec01d47a99b7
MD5 04031039a492ba25d91c805787f28b46
BLAKE2b-256 a931c46ed92cd9b460310951880282742b6967163d33dc92d73364133fcc21bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e840d7582ea73a4aa0fed4dbeca8e606f3347b67619255c73689a375fc6316ed
MD5 8bd3dad6da32e43506ad4fa71e422458
BLAKE2b-256 cb75b021b028214bb8b5523ded0717e8209ec64994b3de7926ddd4ca40e5e8b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.7-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.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3c37a81e264de06207a5b81e85dfcff069d97487cb32a3b24b906975fe0e5725
MD5 a6f00a47e212b8605f054b85c370d285
BLAKE2b-256 3d00d4461a44e2a0fb6e65b93f4de90fa3a790b6a5a83ce7fda95f2bbb653a19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c44e81d2306c751a349520e024a7ce770e53410cf3b1721af8411703fff03aa
MD5 f6343a9259cba938acd8b515de3e035a
BLAKE2b-256 6975b4daa06f783ab9068e1995338264bcdf6bb06666058854678829cf43dc22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e35e7c8ceeec93dc5198e2d7c29cf9c17ce67e8dc6c50de06d889bb254d3fe54
MD5 070fb608c3551010f6996b2cdba270fe
BLAKE2b-256 3dae3d9408bab11f1b69a65aad3b243e1b689c3e848645fd7c44e5274061257e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1a7178a4eb992784349d57f08d79f82046e29022048e1b0574b417d6b7d5279
MD5 cc53ea917b8e11e927e40c303b6ec4fa
BLAKE2b-256 04c2ac54d4e53e6444c413bfadec588363cedc9a13bfa0167469c1434f28c20a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 790c3f7a4cd610a36b7a1c61641e2a68c4946aec23419bf63be2c88394889936
MD5 5a0c76eed95039a128aeb50ded371a7f
BLAKE2b-256 343ad2226442106af59fc65924f30e7825490f4e2d071549131ced3c9bf2d59b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2fafefe2ffe9770c6bfd723d208afe94b71f8ca7d0ad6acdc3948dcd9e71f064
MD5 4e6ddf915a3710400a04b087d6870e08
BLAKE2b-256 c200958b83dc76d4043ab419217ad7e0aaa3a95ea7b7d1f4b356aa289d484e1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.7-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.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ecb60a29434525a5f9d681774ac48ddfe535471db4de0e5c5806dfbca4d9a9c0
MD5 47d9ee8db236a78c194a73702f9c70f5
BLAKE2b-256 48f53820851a3d54b5f6433e930755b95784547544bcceca0deee10cdb8c0385

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95eebd890b6838aff7ee689b193971fa908b9002e65a1fcffc3b1a5a7597a2c3
MD5 499d837eae44291004b366ec8473fa05
BLAKE2b-256 8ef6b6ce3bc11150d1f14ccddda6cdf4f8181cafef413ca1b0965a180bbc76ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 13ac10b4a3a1b42deefdb26358aca23d0a5b2bf2fc1bbacbe1c642cf504486bc
MD5 4c08aaecd663dd5b7d901676caae3524
BLAKE2b-256 4ab3253956621af5f9e4a18a1e839aa8610e1e91ca949d0823ce445a7e857c9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b3830c4e6342e51f14c4d9a1945830cdd5c5ec0e952b133d4ec5c9994821376b
MD5 5ae5180f9e6cb4be4d6a7a5165959e29
BLAKE2b-256 0b32dc158cd77388fd99e91c99d16577eb30e1b4c721d34770c52f64c1ee8e6f

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