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.6.1},
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.6.1-cp311-cp311-win_amd64.whl (257.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

usearch-2.6.1-cp311-cp311-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.6.1-cp311-cp311-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.6.1-cp311-cp311-macosx_11_0_arm64.whl (399.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.6.1-cp311-cp311-macosx_10_9_x86_64.whl (414.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.6.1-cp311-cp311-macosx_10_9_universal2.whl (781.0 kB view details)

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

usearch-2.6.1-cp310-cp310-win_amd64.whl (256.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.6.1-cp310-cp310-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.6.1-cp310-cp310-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.6.1-cp310-cp310-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.6.1-cp310-cp310-macosx_10_9_x86_64.whl (412.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.6.1-cp310-cp310-macosx_10_9_universal2.whl (777.8 kB view details)

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

usearch-2.6.1-cp39-cp39-win_amd64.whl (256.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.6.1-cp39-cp39-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.6.1-cp39-cp39-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.6.1-cp39-cp39-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.6.1-cp39-cp39-macosx_10_9_x86_64.whl (412.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.6.1-cp39-cp39-macosx_10_9_universal2.whl (778.2 kB view details)

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

usearch-2.6.1-cp38-cp38-win_amd64.whl (256.5 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.6.1-cp38-cp38-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.6.1-cp38-cp38-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.6.1-cp38-cp38-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.6.1-cp38-cp38-macosx_10_9_x86_64.whl (412.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.6.1-cp38-cp38-macosx_10_9_universal2.whl (777.6 kB view details)

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

usearch-2.6.1-cp37-cp37m-win_amd64.whl (257.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.6.1-cp37-cp37m-manylinux_2_28_x86_64.whl (1.3 MB view details)

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

usearch-2.6.1-cp37-cp37m-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.6.1-cp37-cp37m-macosx_10_9_x86_64.whl (408.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.6.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 257.5 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.6.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 caf06de9702c0359a63496642164b2647ddb7772e7c8f874bf4f37cadb7c96c2
MD5 98eecde816233339fb1a547bf9b8b411
BLAKE2b-256 f3951c5d44ca0ea18246b399193f189482103c2dce79a55b4e74fabd2af01c5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19918aee894dab4752340658e865e6db1c1ab6de42090c09e758bcbfe43e9a58
MD5 1f9daab118423b07c2f0bc1b9e9847f8
BLAKE2b-256 61d2de4ccd98e990262827c95f124838a9c758fdaba170fed4e12cbb774475cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60f6c0684807ef19313d262c7d04c41d04ff3d79b9cdef6a244682cc8cc6db8e
MD5 b0c718bd141575f25fcb6a9af3465f8b
BLAKE2b-256 645fdff5c33bcbf6a1e8ca18d47577f2528496a88c4eaf25c99b55f3b5e72265

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 779c571fb95a497ad9ea004d35ff839c2b36ce6dc9f3afe3a3f4d30188881f95
MD5 d221cc29fee75b59eb95d78386bfaa67
BLAKE2b-256 05bf331c1213bee323108dabe3e3087d5a9db5037d44394c1056074b7044e6a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c4baee408f7b9784c9db5a59c6d19f61c962d0b80e0cd1a84d78bc3802812889
MD5 b49cc7bbe1c6c7d3567836244216f6ce
BLAKE2b-256 caa5c0928b2a572b5d6bee28cc446e4121573472c7e630f031e0ff7d13f32f2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5c81921b7414551f49b36e8962de731a39c2c200f1c72fe88487d9f7fdebd256
MD5 e58f050c0e679dfcc82fee35bb853fe0
BLAKE2b-256 420623f4e381f841fc853f4e87e53b5d8fed295cf2d6e43fcf8d703a9d3e9fa6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 256.3 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.6.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b0ac44e6399b9762179e3cc76e7ba11b69ebed91c12355c99c5ffd05481445a0
MD5 8abb7dc0519c184176e094b68253a165
BLAKE2b-256 99943b1830b6f085757da22b60353171715608fefd82dbd5fe1d9e95d8feec32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05e92aa0bcf23fa26e186e5d50fa8d4aa02d386f0efa7ddfa4b6c1f681771466
MD5 dec84c24cd90d4a70990d19e842f646e
BLAKE2b-256 ef9c592e1026e000e23b1263e548c132449fe15dd6d939dae75fc90fb8111e3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2355a66e9f9ec6e20def3380242006248542849c9e2e9bb396400c3e48a81bce
MD5 e1497c0b8bfe66dbd1983ad878b912fa
BLAKE2b-256 fcd45d1448b4d1610c3ba3031317e5fab8a04dd63d4be538889af2dc28666720

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2e2125598755360bdc8b738e16f7c0b2437ffbca1e9e3691985ffdae88a658a
MD5 768e616d6cb996fade5be8218474a60d
BLAKE2b-256 14bc55a41643187720301a54879d5f379c93392ef9f8ecd55ac5632be46cabc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc3ab04eb6eaa4493747dc13a8483fe05bbb9d4318e102c050a1eaf528e57e90
MD5 36331bc6d218079a0fae23204ceff1a7
BLAKE2b-256 86371b26457d3e07031934afd3938a81deef38756cf704b15a410f239de5ac7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 656ee31882b07bba8a843e4d1d4085b3014d8de7aa1e0fc4ace1cceef37d26d5
MD5 94d51a38ad83ef64139db3689a79fc47
BLAKE2b-256 f6c97cd5b85f85647e192702c533500932f72a735fe6bf8e60366cb8f8ec0db2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 256.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.6.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c76815a155584de933195b6a917550510de12390dffe0d20e3bd60d1da1e9371
MD5 5a87e318317574221da53a014dec671d
BLAKE2b-256 5d29c994a7f950b656c0b6d0a900a8af361eeb99d6fd2639f248455541c34122

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c10440bc52e4dddc9e0cfd012787dda144077fc0e26ea87f88e6746e154f964
MD5 fcc86bedf058658c7dad085d12b71873
BLAKE2b-256 80149937ab1746e4e4d3e2a40b2b6c984d0126fa599229ff74c5bdf6e2327d77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d1646ba57072278de0f5bc06fcfdfb6af9c238f9c08488857bb9e51e8ea07e7c
MD5 530e8b288a6027c5d614f942f2970d6a
BLAKE2b-256 3c19c131358be703cc62cc8cd9889ee55a982bd74f0e85e6b1d2c7185027a4c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d96d258a73ee071c47546ba9f46e8d166f1d30ffd36ccdc4512c456506b4c92
MD5 cb2424d00c2a2a0a0335d54cf0b67613
BLAKE2b-256 2673fc3b68b6df5f9935be8c5adbf93c4fc365dcdba8aa12772e78f9e3afc16e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f8a34a32db64907059808a35acaba94f00bf055d256569e835bbac26c8e221f1
MD5 7186f8b6cf0c23c29a1b1984d9aefd8b
BLAKE2b-256 d86eb907503107a1011cfda1d0b9e0a8cd824c967c3e5303841f94867cfd009d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b9397e880333e1297dd41c6ce37834a2af1458cb50c5b798c1f54e2bc4608d96
MD5 90a5a17f690db466419e1b79f26e8bda
BLAKE2b-256 8989c1afdb7f63b2ce37cf631dcd3a0fd0c2e8479cd249d1e288dd341454e183

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 256.5 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.6.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 384623f639ca861aa7752707fc5f578025bed3cc87465801adf32386b4ca5ae2
MD5 24e53177b25bed6341925099d4bbf1bc
BLAKE2b-256 396a346ffe128db147eea157ec6e93e810cf164ab899fdd1718e1e34638964c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b84e5ba8fed7033f9f2921b52eb8396c43e6d066ce565c0655b98e37af86fe10
MD5 29bbb18950b1908fd77714cda02c6a3f
BLAKE2b-256 057da24f92094f346facd173abdbaafae0aa3d11f82f8ed0b7ea52181cedcceb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c5b8d93e818dd97fd5a6ae758c10084979e5caf8e1d2957eb7850d6ecd88ffd
MD5 dff5bcb30b91c7ed000cfea5d6611522
BLAKE2b-256 e990c83c81103e45b2b53e03e139ed3e811cf0b600ba5f3a5206d97b129202c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e53db236343453475ef2de1e46e5584941117690e28c29807530eb0f71e390fa
MD5 15acdb718c4c12c94c0975b6a8c503c9
BLAKE2b-256 31c85f90da1fcd5a9fa2b9e87bbb5202680e61055fe938d1c30e6cf0a9c36b09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3b6a5d0410c047b91a6870d5680774765b60ec2bef5875fbe7c5c12c6ba00df0
MD5 e11251fe7b675320a2193211933e6bc6
BLAKE2b-256 169650389dda0165f96431db410f71b0bd58571f17a0a3bc20052897da314971

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 123fe9a181d504e3c8e5b46f7c77f021a97a310cea39b8ebf9e60580a4459631
MD5 533d965a724c63dfc5a53980e1282f4b
BLAKE2b-256 377164b6d5af85b18955a5d6381fe050e2ba51e3531adaa8764220223946e067

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 257.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.6.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 852cc461191431d398f10713aab3d654d18af6ec56bd60c26ecf20c13bdc3ae3
MD5 6ed6f256225fed823e84cdb883ed8487
BLAKE2b-256 2b879d55d5edb247beada192884210a85e5b932be294af5f9c3338b922e0fa92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 24858007c0cd9931e29573cd902e2f5cded74c6f5943753af4465255572a9316
MD5 8c7bc5b97b0d54833f64556d50345b7e
BLAKE2b-256 2693d2309625e18274d5609d7eaf42985b77be022f082ffd0b5ad92bd3a38c4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9bf3d39524d98210d6b016ce71c1bb9fca19eb35b2ecf86551fbe5dc11d4dbdb
MD5 7898dce80e4d81e4162bc0dccf6cdff0
BLAKE2b-256 afd0f1216a3869dfcff56017e5c445715566b556e7cf8a382803c21da5f5c2bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 429dce4fdf1cebc04ec275f06a06e8d1519ba5513db600555d7ece285e291795
MD5 0adf6ca13c267d91b8f48516b9658ed2
BLAKE2b-256 4918c9ffaa5bfb4e747308b50d16bb4ec02e3f6476b95d6068dd0587342a4b66

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