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 numpy

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: 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 = {1.0.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.0.2-cp311-cp311-win_amd64.whl (245.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

usearch-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.0.2-cp311-cp311-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.0.2-cp311-cp311-macosx_11_0_arm64.whl (384.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl (395.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.0.2-cp311-cp311-macosx_10_9_universal2.whl (748.2 kB view details)

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

usearch-2.0.2-cp310-cp310-win_amd64.whl (243.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.0.2-cp310-cp310-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.0.2-cp310-cp310-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.0.2-cp310-cp310-macosx_11_0_arm64.whl (382.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl (393.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.0.2-cp310-cp310-macosx_10_9_universal2.whl (745.7 kB view details)

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

usearch-2.0.2-cp39-cp39-win_amd64.whl (244.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.0.2-cp39-cp39-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.0.2-cp39-cp39-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.0.2-cp39-cp39-macosx_11_0_arm64.whl (382.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl (393.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.0.2-cp39-cp39-macosx_10_9_universal2.whl (746.1 kB view details)

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

usearch-2.0.2-cp38-cp38-win_amd64.whl (243.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.0.2-cp38-cp38-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.0.2-cp38-cp38-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.0.2-cp38-cp38-macosx_11_0_arm64.whl (382.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl (393.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.0.2-cp38-cp38-macosx_10_9_universal2.whl (745.8 kB view details)

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

usearch-2.0.2-cp37-cp37m-win_amd64.whl (245.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.0.2-cp37-cp37m-manylinux_2_28_x86_64.whl (3.8 MB view details)

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

usearch-2.0.2-cp37-cp37m-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl (388.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 245.3 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.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a6d6728fbe375828a805cc50b6bdfd5cb769a2b15018f3d521db98715839834c
MD5 8726af623048fee585570857c5ba6006
BLAKE2b-256 48b050e83d0b46e28e10364a43b1486d2b3f4e5e84cb6ae0a3b20778d371ab2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 edbc7ed0f82317113478b8de065f1a8562e460baebf383173add24b11f29959a
MD5 754daa42a1f46dbec321988e907761f8
BLAKE2b-256 fdc3a0571cc9ce2cb04bab63f4f8d12df13d1b86fe7bd2d83d2cea5dd69cbdad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1dce0b9777eb62da5701a967e5f08679d070d309a73a7ff5d9e95fecdcc890a9
MD5 a49ed7188047cca47a34b28c35e22f8c
BLAKE2b-256 58796c2c2a00fbe5c8d2c87dee615e9d5833416a16d031b7c10312a835a90977

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2da8c4ed1711148db29a844407144cbb9e59daf27b3045c15e7875f99f83ea9b
MD5 0c4b1eba2b98449ce1b37aa573f47cce
BLAKE2b-256 2ac527108d24c136a5e1e42d012a4cc2d6b73b4d7671a0736a4f7d8c4485a882

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2170f65b9a83a6286b5e37afc5779056a13612c374677a4f56e99959233734a8
MD5 ae97fe9de9b1b2ac859ac7fcbeee532f
BLAKE2b-256 b0275eecfbf16bff7decee17c46d523ccec1a2befbec71b6fe6a2f93b8bf1c19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e278901ebb87b957dd450df6910429ea329e7b62f2557d0c174a51510bec026b
MD5 f90beae3feb98a5702e9f71aad61c2c7
BLAKE2b-256 78c617b6a61c3a911a6f230b5f44a0dd324ca761169ef16bfadf9e489a4eb565

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 243.9 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.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c00cfdf9b410e4dcab73e95abfcc9d30f7aac979ce0dc014867a6abab4768a61
MD5 b742b8a718927fd095dd23ed8226232e
BLAKE2b-256 edf9a2b1f43901527f64ed26843a439185db5d7314c2838c93159cb8b3583519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2474770646113c80cf487d1d9502eefc76ca70285b78214430e627b260a86dc5
MD5 29167c57a4ca0b829096da5d30de58ea
BLAKE2b-256 dc88d7b1fb50b62c4293a3a9acc493f46a73f8a6c7e5712ec3282d7ed9f60bbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 06f94d6c02891f6384d275a957a71e815157fae3a3c541b9a59d4f880587db74
MD5 882ac6793d7c9b9671c6b1e0f8a3d8c2
BLAKE2b-256 c93685484078eb0c512d1971d31ce170019d8873f9a786e1a3f6a4c3d447a269

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28cc76056a6d4e8f4897bb0fa49cd6d2065cbf56abfdc8be422276f56d0a0d57
MD5 bd24c72aac9f107e1ac40e464803a092
BLAKE2b-256 d606e43d0cd93a7c1d2056fc33a5fcec42cc1a3fb564b23a1c889cb3de2904d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6acc67c14c8a706fdcf642cde92b260ec27ffe8d21edd4506e764dfe8bc3c033
MD5 1a285eb38c0a215ea01f5c2d1d5f6a5f
BLAKE2b-256 2b0f86d38e847c115000338b1b2a02fbe065c264e08ee33fa22273654d5948fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 39c44d3577715edc3fae091113dd209f95e68da579c13fdffa3d03eb509e7b57
MD5 feee63bb03b54f2ebaa58bdb018cabb0
BLAKE2b-256 7cc426add9a69e298eb0051769b03f8d59ee36f0250c451d7aa452e9ac79f5a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 244.1 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.0.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 85b5f7c3d2d5db4ad97547bef59f001cb5ffddb2afb363217df068e70ead0d0c
MD5 7ddb5677ef09c04de1cc18d12ce4aed0
BLAKE2b-256 563dbf5a9b7ea104aeb23d7f6f07115ee095e3a5f278b6b88c79983ca9502c8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ea69397ae8dd665852cddca5ac7a738467346f4853bbef862cec1478ff50ccc
MD5 699652ccb943f271eb9d343c42ec5f62
BLAKE2b-256 190da5ef5c97ad3439e18bb50289082b6f112942f3d68db4b141c7914e0d7c02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1f23f625d883548873e2e01c94ec2d857271e9c8266b5abbad1452c0a69ce827
MD5 759a0302615053b0214517d92c234f32
BLAKE2b-256 a3a234ddcae0bc757d612ae2b427c315deb1b7b0f9d499328976a1a9f004c0db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9c5a92235984dff179b92a7386f8ec3a7929e492d9def39fdfe2fe89c86fef8
MD5 31d82f4005f6c534c6ffbeab4d3857f1
BLAKE2b-256 5e0834e51b4a9862f3b975adf44a76ced60de988810cbe25b84949d4a8867b07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c311c1299be9a574c6d44ce4ef8dea50ae08328904a510a5a7b4b8baa217c821
MD5 23f8b18b22d993412c73a1d55b49f255
BLAKE2b-256 fc2e253a6a38d395a4c56de165e5ac0364e2a38f1eec6b5528a010e223ad7b4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1c1cf3d6ba6f3a3a2125feac3833c423d4f28960b2bf7c380be5df486a7cc5b5
MD5 5c9ce2188952b535e1bfb2b41222b1e2
BLAKE2b-256 530ca508caaa1064e2c07e4acc791d89d315d61d6b4efd34a6280906a23e21fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 243.9 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.0.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 84f32126a1f529ab1cd590cbbdf2d436d64027e3823c31fca735eec0e74f9845
MD5 4b03e195555701ee08b25fad5da34eea
BLAKE2b-256 1bc5fbf3f9d7ef7909f62df1fb5f3c7f962b847cc88f381134c37e57655a2e2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b6a0cca1753e8ef70fab26c35b2883e17631a81b4f35332947d294e4cc890c75
MD5 074dc79ff1f99634b762b03ded5b3d0d
BLAKE2b-256 56276c7a05d1233657eb3fa1d6f006f63a41881448e419929604ea29b7abb85e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9f97a81a406df3f9ea404df7fa5420062b1c99dbef2d35a62f7006a90f7b8ac8
MD5 1310e7d8b58251510bfb7ff1da7d5b51
BLAKE2b-256 d228eae8f8bb2b22f5b1da3366bdf07cfc74b5f8f18c6caa14d280ac2e0e0218

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b774c724b1b66a966923040e23cd3eddb6dd57ea141286f73bed8c1237c47c9
MD5 9689a65f793f098e119a0e27ad80b7e7
BLAKE2b-256 b08dd8a5d8f3e30a852502bf0f916a6c4c1ed68d6a8aa86560fdf7bc8068ff9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 93a88c5fde9cfeeec3fc46ba890550b9d8a06b6d36dd363449b34adfe746295b
MD5 31086ae5023b791676b4f68d535bddc9
BLAKE2b-256 0ed3a4d4d58e598618a178d7b4210edd388a55feb15d6971b51dc0032f7635cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4ea7fbd30b0a91b336c9e3e6d384e49e1183883053d3a57d5f2f34f065c754b2
MD5 4ddee48cbecda2333bfe67307cd68d31
BLAKE2b-256 32c39a4d5832cffe067aba03f353a3ab6bf6f60ac06e96315eb2ee5869d079f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.0.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 245.3 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.0.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 5914c7c2c24ce69bbd20df7859dae2cba955f9698f5e6a5ccf195270a617ba31
MD5 7b44fc3e91a6aff7713c8020eee9b377
BLAKE2b-256 e5ec776860e120031d9d8c0f47eb477ee0a1c1c81cdf10f328eb7b06ba0b852c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97d36629992bde0c7c1f3480acb7030f2e3e6dd8302c87fb345cc27b2064f174
MD5 5b0a1cc11109275c1979ef1e1609dd9a
BLAKE2b-256 c6a7158ac8c93292827705a2c4c267f882ad16a024ef32525eb5b9cd64c1fd0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4eea40d243e7d1566aa0dfbb0d8a85eadb7f259da8a648478752bb5b460fa3ac
MD5 2a9d2ee287dd2546fb2e19a1c29bfe25
BLAKE2b-256 bda7c7dc9e854c84884a000893916125cbe20e60c05dc86b6d972d3982824811

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64a756c67b3969279c0962358ca861116158ff5f34ea54c2f55e8abcb3961958
MD5 2e76ca6bda48ce460a025d80e8d6b931
BLAKE2b-256 e481ef0cc1fdb4e74f8270dbc3d2dc95eddc6205f103be8a5cd63b4d9a31976c

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