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

Project details


Release history Release notifications | RSS feed

This version

2.8.3

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.3-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.3-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.3-cp310-cp310-win_amd64.whl (257.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.3-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.3-cp310-cp310-macosx_10_9_universal2.whl (728.2 kB view details)

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

usearch-2.8.3-cp39-cp39-win_amd64.whl (253.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.3-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.3-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.3-cp38-cp38-win_amd64.whl (257.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.3-cp38-cp38-macosx_10_9_x86_64.whl (390.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.3-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.3-cp37-cp37m-win_amd64.whl (258.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

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

File metadata

  • Download URL: usearch-2.8.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 258.4 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e8f16266bc000a97d3950994a8a7a2a0b18686281553da6e357faca4ecfca300
MD5 ddcf1489c6e2d7ebf9034ed9c127570e
BLAKE2b-256 1a46ad57376b3ab08ebc454b401f827d49f8dda7f0eabc76ef8c27e6b653c8cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ea9a329478aeb3bff1dce226fcd938ca6410de76020ec61085e78b22a1ca6fb
MD5 60ece32bae79a81b5a73987eada35f89
BLAKE2b-256 25c6c9848e44f596d6e1a200d56c04a8b9654b84c21b439ba882b9857861dc81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d845d2e00ecbb293288e05b29c98bb7e9e55ad189f3a0576c15f20c88b408b0c
MD5 5620413b916657f1128432e9751c3a54
BLAKE2b-256 ef60ab9aa7659b61adf97752b266fff1f088a04e73e45c8f4feb7df14f6a9624

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8cc01eb31ddcb8db006f31c4cfc879751e8ded751e7dd297c0884527b167a06
MD5 5c83609e013e2e10f2a1ec2863a3ccb4
BLAKE2b-256 e50230ca6eafa5ef856c82befb324956e7266e15605b2345df61dd5328a118aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 be71e8ccb8ee8a40cee58d07118ce1c0e4bc94cd33f64209b6d39c351e791b0e
MD5 98a2e82c62b35d13f9c27fe700dd0f2c
BLAKE2b-256 45ede539b84653e6c3ecd254c62c42220d3e5bf5baae4666f24add88e3c3d0b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 09ae9749c94a06e00c73abd17118077e17c22fc48d25a9cc86a5405e1cedc131
MD5 7fa215d64df9c76141ee1e8f7dd4aae3
BLAKE2b-256 6e434dc0ff08e2c347faadb3eaceef22a2e49260b8d83930b2a11de43bc3b231

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 257.1 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e62a5ca677ba8534ac08b71b650cd3bcb552729ca4f18e3a83807178ec7fbec6
MD5 9ccbeae51785a4b642e97608e50bbe32
BLAKE2b-256 bb882894fea4d50aafd9b39c5696e7c43e63ddee45787f977e829153474f36b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65f6113f2f7685e4df28f5b449adc01b54fa79ec145b7dc0410946eeeb90f942
MD5 f035cc58c6e95145d401f392caa25f91
BLAKE2b-256 62e3067bef2e510a78faaf7460af9bb108395b02faab96455160caebc8a8fba3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 670735b4d54b3cfac0c4173e3fb8c955cc162ce3ce3085af8b89fa6180797e96
MD5 abf618740ef369cc14a81ee786824bc1
BLAKE2b-256 d5b44790132f62a16cbd0e51a61054b27fa4b36a63cc42ad0587c30fbb597934

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 285dcfc53841f629ac67d460a5847a4444bf197494879d853ecabb022d22bff3
MD5 6a795072652b72949a3ef11de8b5fcae
BLAKE2b-256 3ee6a432e72429bada62a5be215fa07f927f0d11ec2ae0f42be3ea8b370ab7bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dd1eb2ffbb805b466166656bd1f83d5748572f2c6ec4dafa2a890e04d2a7e42d
MD5 ad2442ddb60c8d7487ae26219d13496a
BLAKE2b-256 9a65b6a5af572762e6fe346193b63070414d67db6af474a79417bbac1d310eac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 37295a58114921d33f43e5de491252256771fa6f9605ee9e401b80682fd43a5d
MD5 5b281bdf7e810e34e9cdbdb46d4ecab7
BLAKE2b-256 fc50e32267471ea1044df134dead06ab495a9b66234d47d1380a0f0aeddcc96c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 253.1 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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 54949a819c978ad578d7643fabc36c97abeabbe679937896c35d25ad438e9020
MD5 15692bfce6f7ef9a6ae3ac90088bf042
BLAKE2b-256 6e75ae379d28760cecd9c0d3da7890cb7a33c711928946d39916b2a70b373a3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73d261116e0930580cbac1239457d27839cebd6da0b9873012185c7ca4527e77
MD5 44efc112b04b8afa4d65537e4ff43f7f
BLAKE2b-256 c9480302bfa224ca9b589a45efe6f5b8bb595c0c51afbde6def3de67dcedfa99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5128f59d1bc3a8f5edec9bde5690ec94c37f4254b16e7a583d8b5adde59f9302
MD5 82e94f81a6601701544e974a193b068a
BLAKE2b-256 d6fc572fb0b8f097620093766361ba1ac2d645894fa57443add3f9e93c7e6873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f19b1e274b0587dd71ccda7db566c3b71f273b98e0aa42eec63232418f3324ab
MD5 ebc7bdb33bde42ae7efbfd010f31012a
BLAKE2b-256 a9248206f57d8de3a8f20aa148386ad11893c6e4040333ede85e00dcf7ebbebc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 431f22516a095a8a727098f5b6d30e1922597709a20669c3fd8a4752cd9f4460
MD5 17a7b5f2708c40785c39c6b11711611d
BLAKE2b-256 cba9a0183836269428abbed6801351917f334c5a163003a6af79a25c34704d21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 735f931b7726e0b304093a370933439feb547080c2f28e0266fb56932ace641b
MD5 1b1d8b8c1ffa911160369e07d4f9383c
BLAKE2b-256 b07281114c1ff09ba3b3af4a5d19f9f642dd92fd802b0e99d1574342862304fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 257.4 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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 74ec946e3b0fbd5ccaa977a40eb3ce56e9400b1bea45375cb79ede04d0980faa
MD5 9ad8c3fabca6fc1a6042c2ac0eb67eba
BLAKE2b-256 1cccdce4b9f6530890803b74a4af30a19af0f21d2dc29038d64105fe7a809d6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2431544ee4665c6126583e5f4077568139eecd800656c0b2313650a394e1e8b0
MD5 ebecccb4c836490a332c9d55dfca511e
BLAKE2b-256 e1d3aaa6124b8a379c7a7706ff158dcdcf142c00490a78b0b11e439f42bd2a65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d3553af6b43ee0415f879a6916d2367b6b85690f820773aabe6835304ffdb12
MD5 e46dbb051d9d61594b8119cd12f1616e
BLAKE2b-256 2b87c835a07cb1616f1a39ef925fc8d8afe8cb91a3773900de12e035fa32102e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c4b3b09be8bf224b94c987614090ffbeb177e242a968814e9978e7af3d8621c
MD5 96cc88879b7419185932e81d3428b491
BLAKE2b-256 77069026bc8f38f91a4a4832dadb246c19d962d652a8a4a09dbfabcc23203b98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7f851b4be97ba712213d2d168b97b16f8012067eaa5d7561c856f1aec3a89fd2
MD5 fa3be2a7d6c63c74c2bb391e4626ef61
BLAKE2b-256 a4c0a294e08f5636571a668a4502bc0d4a70eedf40beb49804aa3aaddbcba109

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a17a36598a728c450492dc0d30d05403892840781025290dfbb9dc413236ee9e
MD5 abcb5703d675f4441e36458a590b843d
BLAKE2b-256 bdaf74db31b21f35058b2e6e002b5c613a596443d9867ef4576bdf1ce0bc3862

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 258.1 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.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 cd52c78be93b22c7dbbe7834bf448ba8a722b752b38df903ef6e73e29fdc6366
MD5 d46ff90a41613ff03130e428d01aa6cd
BLAKE2b-256 06b869395630daa4c24853c8f9ed0bdfd37af1b63476e07fc0ff564f97713ab0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07ec6faaf6b9b9bb0b4574705cbab75ebead0898478e861f5c9845ca82f3b7b0
MD5 aaf5c86a051904854064173cdf85953a
BLAKE2b-256 99b3c893f0dfedd1d4023410c7efe298647e7bce393fe8d2ed1253449dce85c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 80807d80c6ea712a1d027307e12bd6ed128c96b91ccc7baea1a037621d8832af
MD5 2199ba0f0947540a84254d91c067f504
BLAKE2b-256 a13051ba029af5b772872b71e450bd46b37b268081394b5181ac4982d7ec7928

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 47eca2a15d7e1249c95e6fa266862fd11e7d9b16527754fc72413c5304eef2e8
MD5 8f79b8c62b314d53b408ac35e180fe6e
BLAKE2b-256 26f865af1df1b74ef92c89081fd8cf1db3f857f7d71591aa9aa37473486acd78

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