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

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.0-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.0-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.0-cp310-cp310-win_amd64.whl (251.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.0-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.0-cp310-cp310-macosx_10_9_universal2.whl (728.1 kB view details)

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

usearch-2.8.0-cp39-cp39-win_amd64.whl (251.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.0-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.0-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.0-cp38-cp38-win_amd64.whl (251.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.0-cp38-cp38-macosx_10_9_x86_64.whl (390.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.0-cp38-cp38-macosx_10_9_universal2.whl (727.9 kB view details)

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

usearch-2.8.0-cp37-cp37m-win_amd64.whl (252.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

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

File metadata

  • Download URL: usearch-2.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 252.8 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 30273bdc6839df18d81cb1d13ddb3e1b44fc80dc9c3c83903f40c447012052b1
MD5 809afa1257be0164acce1aaad8224bd5
BLAKE2b-256 d844b0a1d9e7733d29f4d674cb5110fe9731a3169f3a42ece1675425a5ba050c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0c8882136cbb49a004c455303f6cd559799c8b0f3fdd956f2a4f76ec3f5368bc
MD5 aa5ae05e74e7d1aacd9d15ff09cc3681
BLAKE2b-256 2e287f05c817c3f8871ebca9b925cab190b4efca2a31aa81b92f049700d82ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea4aa71624d66897391d562ecbd4d26cf1889d264cb74d3f20d784b7ced02122
MD5 ef73e6f2bdd1c123096cdcb550b80c19
BLAKE2b-256 ce9077f9aaf2053e5e46b0b5f9919ae506359379ab7caaba70797b5417b5e403

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 29db6a1f0ff872e9529fa57f206e6aa12072594c6c86c32b0fc1f4dde7a6c8fc
MD5 c1d5e0adec663c6b1db33d0fd3b48d52
BLAKE2b-256 016aa8f4b6408c5f5564e6dc403f0990bfdb9b4e5172853ba6a34b972e661f3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b312e0ebf26836ef4c96ed1b338f345097e853a5f5abd71da12253e4d487ad83
MD5 150e569e0f8cef816a5374eb49261bef
BLAKE2b-256 3e9c56dfcadbaadb6bd41fb01ba9c1b52c729954095da1e5bba30c96a37fd16a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d5e1f3c9cdb933b5a9fa154c79160439c36d7cb44d5e4de3ed3cb66c0e775c81
MD5 932583364c3ad14527d90d6b0cdb7c23
BLAKE2b-256 c25f743bc2cdd8078cd3296ab647d88aa0d1d2b390e5c74d3bf8644d5335dc24

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8b85aa314b00685ef89391a95caaec605b85c4b0c2f0ded99e44009c0be0aba0
MD5 75556bfc688d35c322fa7092e311f265
BLAKE2b-256 1153dd4415da0b8aac516824304e93dd9030214cfaab9eef4539ab8a4ca08492

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c86c41a93d2e5e38dd8763d0f0c52d5eb775f9a149e1eef56dcdcd2c6458a43d
MD5 c6dc491e16abe6fbe4540e96dc866d54
BLAKE2b-256 4adb234e9dc019d75412a4fa3077f99123a86cbab575ac6ebf1c84f565745340

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 43796db3b2d0a721f9bd417bd428f0c3a78182bcc23b9372c2c0480dbc539064
MD5 f4bed1411b2da712277a4601d0435f3d
BLAKE2b-256 49d58946de81fbd08b9733d0871ea280654950def0523b011f90970874c6dc19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d7d83f66dfb26de97aa94548eb1a51957385d2454ef64ec6cd0cebc040d3791
MD5 08085c793e7f10b798bd744de523c156
BLAKE2b-256 67d1b178731a61dbf9a8f213d36b5cdd7e66a7e867f798edd9a434147f794fcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 01c567d8133a9821fb19d7e38892150414d83a9d94974bd067a555ca04a7dd14
MD5 cdc1d627c49241499831db20f2749e40
BLAKE2b-256 9330b1c7740cb1e9bcf88460cfcebdcb240d83e4bd9b1541920e79d74267b707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 9c851e80d3307a46eb64226130d5a178a55ba9b8c776b521599cf5ead694aaea
MD5 30f9692f5bbdb6dc7adabc36cbded035
BLAKE2b-256 8677c95ad014c58f2795cf58156fac7f832faba9865f9816d1433004ccf9af1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 251.7 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e2e945e76ca4bc0398fac98963422a2aa030649b428480f4db5e11393c297f2d
MD5 aa2a04155be715f77a590d1ef8da9f6b
BLAKE2b-256 34585417b6a45522d344340d1a0188bba2768b0f1f25c6f0c44ad2fd70facfd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8519396e8eecf227b953203d4a4e1be0a8061215f8ba2677054115e65b75eb94
MD5 b1cfb78032417e1a85c24b04f9c8de9a
BLAKE2b-256 94ad5c2bcfec82953535cf07e6732fa07d70ccdaf3528f0b259357c24d820450

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a17aadbc0eaf8b6fc6df8ae75857893a9e50b35b68e03472a3b94524577662b1
MD5 9c74ef653f32d1f6743b1f8035eebcca
BLAKE2b-256 6f0103fd2632be2cd29da3bae9a20e56b0187b4935e6b5d874b24121c88122c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e044f13fa0298efb3918b8655913bedd01690e883d4fc25513b344c9bd42756
MD5 0504b1abe5958f151661dd5009e94715
BLAKE2b-256 cb634c90795ea692728dd94f726c51f17735ea1742b815741a1b2e0ab6c22167

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23644b18f414bad042729361d859480a53dfae73d37296913ba49196450da524
MD5 c2bec99ec08ef3a0d0408df931fc915b
BLAKE2b-256 d763907a141f3384d521c8d7278f14edfbc77a115ee38827201246838d9a7d73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d5e6602748d08c8e03e83a3e01a5fb42323b29217d28a5714e93e9ef1facebb5
MD5 c268bec2a0ba42ce28dc460e8e1452fb
BLAKE2b-256 c0bb1a4f8f050bdf77e39689209d623bcef50d8ceea687d7ee78a5968fec88d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.8.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 251.6 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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a77aa38295cf5614bc98b1437d87c7c9775d37092f942f31b1be3a1a76235824
MD5 40ad07bdaf2e49444c884ec89212a2d2
BLAKE2b-256 c7f38a03a033227814ec992bd4c3ad6bd34c90d0efb19101ec1bbad54b905aa2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e40baa994c52f8dd6a1a8048d9a5a43f276a779f8341fc9c403d8d140187861
MD5 c959b2b9402e81b23e9956d2f8f26126
BLAKE2b-256 55276c3171636fdab3f54eea70e91155b7e6c78c8f2d2d282b191a77f8e944ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9fcf997ae1a7af017855e4cf1d3e1a4c31f2226d0e2bcefb028f0ff0bac6ff22
MD5 1349dbec90781d06bc67ff77e00fe8f3
BLAKE2b-256 2baa3bdaa8a3088967080915309713537b4e1b3d267a8df264083a228ecf1df7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 256091ef03d3c0a79d83d797e11e58e2933904bdd3010f4302c2113541a22a35
MD5 b53f73ef8f5e4cb36ec5119daa59322b
BLAKE2b-256 69de2f58e02f8d99557d9f2ac351923f9cde387518f3677ecb795ed87a5f37b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e5a6ab51d70d22221b35b623d97133f82b1963baba4a1a26723648e279bbb5c0
MD5 7dc1596410f325b7bec36c06e9ca56bd
BLAKE2b-256 83fe584a4e3d00d887fd6740763260df9c5244b649236729d97127e48154756b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 454e8f682152aeac42be6e6d6ec74306279b3ea5b34bf0bb266a4b02ce3c6241
MD5 fe66445c0ac79730bc60ae0230f6f6e2
BLAKE2b-256 c03c2cdd272f378ded4b58bdf3402ec5c06e8e2a897dec38113222aec5cbb2e8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ed716e853396b3f626f3d2782eb459594734ceb981fd837362fdd670ccc0119a
MD5 5956ccbe13308c43abdee14dd0cb885a
BLAKE2b-256 c9c29371790552b199ae9f11ec4df64c6bbb820e8283970f3540c98ab9f404ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98fcac25f83342021ffbd5a96edba3b3a2feb3fd89a5e83e888e84982abc19a7
MD5 a1da37feae190c31b7edbc42584e8e72
BLAKE2b-256 59befa363b2a2e85926bf8dd8e7e528c2811a8cd1262bd938e73aa3f8bbe5b47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9b89faaa34c85d20fa9a82cff717495cd27dc7e70ce9dab2528fcd567cd8f9ec
MD5 afe12c6bfaf743b25b29b3b5bc768797
BLAKE2b-256 9d936eac9cafff9f674d0df9327e7620ea114b3258b2a9e321e844ad34d21945

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 949351f41151f09c347eeaecab470c45de44810b170c7bfe8c81bdfed32b69c3
MD5 e58e2d6e54ef8a9e09f77b07971e7eca
BLAKE2b-256 0f0424c4d9e63e5cd60c6d09fd5b7ae891d526f80cdbb474f62cb3723a8ec814

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