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

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.5.0-cp311-cp311-macosx_11_0_arm64.whl (396.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.5.0-cp311-cp311-macosx_10_9_x86_64.whl (409.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.5.0-cp311-cp311-macosx_10_9_universal2.whl (772.7 kB view details)

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

usearch-2.5.0-cp310-cp310-win_amd64.whl (255.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.5.0-cp310-cp310-macosx_11_0_arm64.whl (395.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.5.0-cp310-cp310-macosx_10_9_x86_64.whl (408.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.5.0-cp310-cp310-macosx_10_9_universal2.whl (770.6 kB view details)

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

usearch-2.5.0-cp39-cp39-win_amd64.whl (255.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.5.0-cp39-cp39-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.5.0-cp39-cp39-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.5.0-cp39-cp39-macosx_11_0_arm64.whl (395.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.5.0-cp39-cp39-macosx_10_9_x86_64.whl (408.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.5.0-cp39-cp39-macosx_10_9_universal2.whl (771.2 kB view details)

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

usearch-2.5.0-cp38-cp38-win_amd64.whl (255.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.5.0-cp38-cp38-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.5.0-cp38-cp38-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.5.0-cp38-cp38-macosx_11_0_arm64.whl (394.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.5.0-cp38-cp38-macosx_10_9_x86_64.whl (408.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.5.0-cp38-cp38-macosx_10_9_universal2.whl (770.4 kB view details)

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

usearch-2.5.0-cp37-cp37m-win_amd64.whl (256.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl (4.0 MB view details)

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

usearch-2.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.5.0-cp37-cp37m-macosx_10_9_x86_64.whl (404.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 34c0cbc2d82c029c604c0899040eb77dd9c4eab3638de3d39d3d22833456c087
MD5 168f446d6df3476283efed001c1de1ec
BLAKE2b-256 cc3a9c9221da330a6a8822625cd74c1bf1c45bf7bd44d903ab11fde7f2fb07ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 928882c56122f83a3d8fe3b4512f34145b901fd06c5f63957447226d3e9f5323
MD5 8cca7d8f313113635ec6ba6016ccf68e
BLAKE2b-256 1877f55c5b992d0de408fdab9f19efa5753be94fe4f2f7eaca37a930466f3dd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 87fc5a569403de46dfe4d911c72590c4a28359c63e54c9c404c0088e36f9fa7c
MD5 32b2f6020503276614168ad86b69d81e
BLAKE2b-256 026d43000332c3ced5895aa50d624a7e96fbeb35a3ce5d8af0ee4c430ea5a12b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e351f753f6aa2ac7641fca0077598ccdd4b039290182b872e162ec94d04acf48
MD5 88a4f441b86a5196e229011453d27179
BLAKE2b-256 13b66bab1a35fd0e25b5b57caf0108a067295fb6a6702c53d83982c139f1fb58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da7a63d0103e99837004c571cb6ab268d2f07269963da5a05b98933be3ce136d
MD5 995bcde6a827e4bc504334f6afc0848e
BLAKE2b-256 68326cf7f4e8b597d684c86a122bb85ccb9ffc1dffdff0e7c16d946633947353

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2a031e21254b2bfbb02e66097aa19f65382189c981a9c731094aeb2d926ddac6
MD5 853703fb6cc9b6cdea605574ba279900
BLAKE2b-256 858f2581549f046e1ae4a23112485ed4ba1f9e85ad7d3871e2dae36752baef8e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c18fc7868acfd23bf4b067293e72cebf999b21ced7a93d462c2f5ad038ae4dbd
MD5 1a29844ef05c124a3d0a99395e7ba6b7
BLAKE2b-256 d9be7192ec0022106ae8b8dca23555948f67ee5171ae14be885607e522e17ae1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 434a4a98faef1dbe79fa19f115df8c9e171ba82c9e8e4bcb385fec36522048de
MD5 2c03dfbb51d1a462426db16a8c041d3c
BLAKE2b-256 2ab7d27ee133c3a3de7d65e1f75618f4085099c2bbfd3e346ce7c1895647eadf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eb3a502ecbe1e0e69bef6fca846a261146566dd377d4d3e6ee7b7ecf36b7f28e
MD5 39aea8d89b187c72f477f26e9f222011
BLAKE2b-256 78c9cc6bfbfdb066eb5069d7db3661be22d6d0bdb97405ab546c9baf26368063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4073ddb4070354a9f0ef83a2f1b33a4013dea9be0667a2e387c3090680227b96
MD5 f8738fbb0d3f689a47252b2ecc5fcdf1
BLAKE2b-256 fd8aa45975f074880d2241dc086ff5ffb53f3e89732f6d6ac5370d887fcc1334

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ad27ac131d0535d66d0047dbb0f97bd4d5155028cb59931a3f776e6c758a7b63
MD5 218125885aeb1cb1a83aa91ef9884826
BLAKE2b-256 31c1247d99b8bba84302ff745cfad1662696f6468ff9f013c874a3af87a2bac7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 71b93b613d5bd3e2bd8e88c9960761bbb8dfa2c763009de21334ed23d3692d12
MD5 def726952f51b109d59b3787762f6738
BLAKE2b-256 113b6e22698c40c75b91d753ed961ae2e673245ec113fb935bf825b322008204

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c32a8d8db1289e4d3e7cbeb03f7ab138aeb0341ee013f5005b94ca08cb5bd3a0
MD5 3726e5e0c6bb5816806341e3dd73535d
BLAKE2b-256 ea3e25bddfa8d91b96a9f1201156776bf581c70162e90799fe98581c037bbb1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c98b57d6aee651a242e186886e6e0223ae86b92f299557f46c6098cbcd18532e
MD5 e90046f8a37a95f2be6dbad9a45b9e32
BLAKE2b-256 dd62dbcafba876e1a1bff817f0c927c56f5fd20286821bdf71827f49e843947c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7b4b1753036e12475983c366bbd519f05ed777a0432ac61d3911f3a3241929fc
MD5 6c79539e714504a574c8a664847a2181
BLAKE2b-256 ad36c96c75e1b44bd65deffca709ac5ebd1f0e27f9db74dff6b7f85c8fe4414c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e70a063b2c2de39990942d78d115750322d62509630c0c9b07dc413a026e82ba
MD5 b17ae79c6b42f59cec9f73945d560621
BLAKE2b-256 1fa202ad6b2b5b59b36ef141ca80a054f2b591eff311c27781e39b24be678d13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b1a6011bdf12486d5e6eb4b3c665f932943a76cf9b92be03915bef8e815fb9e3
MD5 aa993bf71d06d7d46cd0f2dd18d34c0d
BLAKE2b-256 c7b71ff2e0cb9fbb006e1a636c600072ed24fc2fb4630509bb4691be447faeba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 39f5e6c31c9059ac6cafe1e6e8ac182a22e8ab0a32c1a46b4c2feac281c16388
MD5 20a324db0a9f73395c72416c5c053fc4
BLAKE2b-256 18a13daa77d2fcbea3c2f47b4291fb8bd8be5f879307d7d98aa886e6a8ac3ae1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 93706428936aadbb013160db5bfaf5031f438f0e550b91e2ab2e1a568e08e1c8
MD5 600a11e841b02fe316dc1bf98fa6c09a
BLAKE2b-256 d28af8e28621f4900b20752d797126afc383a0c5fd10cd6c91a06789a48650ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 491e3cd0a2f7646050077e9f6b4ac79e61234c4f348eb7f6e7047c2487d10227
MD5 d1f2e5a7dab3ba2f228995cd61ce8803
BLAKE2b-256 a05e3bfb8d34983967cd66223312d08bf80c0e7613bb34cd74e7f2ab2fad5e2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78a757a90a5f51efb80f0fcf3cc671c81a09637a6ba861877fc1de325f2d4b5d
MD5 9f1a8aa5071e92f1934bb0a64f5e6b32
BLAKE2b-256 d7e30845e6ed11578985175bbec8c549f1e6cdeb451b9571ffe30ad3a6c86d51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9043ba38eac5bfd4f34bbf221e8080e676c99b106bb9a6be626fe6435aed3ae6
MD5 801bdc6aad0a7336e309a76b08a66f50
BLAKE2b-256 6a777ac2f0ed6723504fdfb39528bb49c3bfeecfff27413ade7a96ac57fb472d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f9f776a6e50cdee05a5ed8febd2e3eedbdb9536b2f1fe99cdc04df11530d1646
MD5 d54eda4f041d5b945a90356e58e2d532
BLAKE2b-256 7b8a07fbcc50e5bf7c112cc974b7258472073414c418a587b9e431f8c704c295

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c5bacf94fda2e815a97890a4dd00dc058ad0fbf0ae2fd386b9ee7d89a34630a4
MD5 7f8dc336788f8c63452b8d6346e9aee4
BLAKE2b-256 922f665883c10335beb380ef1581b8e9b06ad01668c65d650a3bc1d6ef0b4cdd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c91ed9ef8fa768c37ec243de2306eac4cb161573e1b1d5f9c2e2e09da14346f2
MD5 c34adb9420070c24765d635153afecfc
BLAKE2b-256 dd8c71dbec97334b0cab7123dc20511b1a4dcbdcfb52f9d31e883a064d1a248a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 253d9c4cfe78b1900cc592f27a87c9df1a9627d2e830cd57b355d5d4f75fe4ec
MD5 cd1abf1c78e025926f45135eec3b1fac
BLAKE2b-256 b4fbe43d31a85e215b9cc25b982e2af1237f20d0b032368b7986b01179d93bb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b15af2f566f9529488358e776b2301a6e96c6f332be30a1e9476207bc7c85c0c
MD5 7165e718b3e2708721a3bb41a0ab7a66
BLAKE2b-256 79428f8ff642e1a7b3d350719b18e7e20cc9d327fda3179d3f67a3ce0f1ea37d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 10c9f1db90ea455d562c06facf2f44f26afe457c12e431d8d28f3a2de6d24823
MD5 eb8c77fe0255aa347a11f5dfb0011a47
BLAKE2b-256 8c156bc568f65d0021b3737ab5bbec1950148febec224483a7aa884437638ca7

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