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.7.3},
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

If you're not sure about the file name format, learn more about wheel file names.

usearch-2.7.3-cp311-cp311-win_amd64.whl (251.0 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

usearch-2.7.3-cp311-cp311-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

usearch-2.7.3-cp311-cp311-macosx_11_0_arm64.whl (368.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

usearch-2.7.3-cp311-cp311-macosx_10_9_x86_64.whl (388.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

usearch-2.7.3-cp311-cp311-macosx_10_9_universal2.whl (725.7 kB view details)

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

usearch-2.7.3-cp310-cp310-win_amd64.whl (249.8 kB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

usearch-2.7.3-cp310-cp310-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

usearch-2.7.3-cp310-cp310-macosx_11_0_arm64.whl (367.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

usearch-2.7.3-cp310-cp310-macosx_10_9_x86_64.whl (387.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

usearch-2.7.3-cp310-cp310-macosx_10_9_universal2.whl (722.6 kB view details)

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

usearch-2.7.3-cp39-cp39-win_amd64.whl (249.9 kB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

usearch-2.7.3-cp39-cp39-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

usearch-2.7.3-cp39-cp39-macosx_11_0_arm64.whl (367.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

usearch-2.7.3-cp39-cp39-macosx_10_9_x86_64.whl (387.3 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

usearch-2.7.3-cp39-cp39-macosx_10_9_universal2.whl (722.9 kB view details)

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

usearch-2.7.3-cp38-cp38-win_amd64.whl (249.7 kB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

usearch-2.7.3-cp38-cp38-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

usearch-2.7.3-cp38-cp38-macosx_11_0_arm64.whl (367.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

usearch-2.7.3-cp38-cp38-macosx_10_9_x86_64.whl (387.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

usearch-2.7.3-cp38-cp38-macosx_10_9_universal2.whl (722.5 kB view details)

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

usearch-2.7.3-cp37-cp37m-win_amd64.whl (250.5 kB view details)

Uploaded CPython 3.7mWindows x86-64

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

Uploaded CPython 3.7mmanylinux: glibc 2.28+ x86-64

usearch-2.7.3-cp37-cp37m-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.28+ ARM64

usearch-2.7.3-cp37-cp37m-macosx_10_9_x86_64.whl (381.8 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.7.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 251.0 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.7.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9db1c47d8cf0decb39099ca5cb645962b39916ad681b56f1e3395b1c2b3d5eb4
MD5 bf8124fe9618162fe90e1319d464547a
BLAKE2b-256 c69f79336eab7594ddf62efbfc2062e65a8d802d1e6e210392ced60eeb3e8925

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a92d5711b99ce58df85709fb81704c48fdafd596a4509746e56acee77c9265b0
MD5 1e878150ee0266b10b6b20b0dc36b573
BLAKE2b-256 a686d4bceee9bf48deb6a34bf3d759b00135146fff6c0b0a31c6c8a6dd9021f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0b9fd9036139c40b3c1232ea05cd0f91f793a6559aba3381a2621a6cf6fe4c40
MD5 790c05f17b4baa92e51e8a693ece37d8
BLAKE2b-256 03af95318550f300cd571afed44b451b491d9fcc14a37fa6f91b6e0a9721806e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e37f6ef5ac41818ee4f22d64b9e358e001b19a69bfc005b62e8b9fc60467557
MD5 07c8e71270bdd8f9bf6aafe3f98d252a
BLAKE2b-256 f28b18919beaba872a4c9af3c15ba10345f5d02cb66466bac805e557f6e7ed74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fddfd7b83cf415e9fe5ff413d644e0ae717c13a7d061ede34a6af2e381c7e1cd
MD5 aeb9ac98434de83937f88bad64dce395
BLAKE2b-256 aff4f08b3cfa7f31cc452a299ef37a0077e025e699d80662acb00264bc08471b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 49f8b5f8994d64a96da9049c1ac48013879bab579d37202330d3fd9233737607
MD5 ffe793ab74c0aaa8828155683291e319
BLAKE2b-256 b50706b5c0faf3141ccfbc939d628790e6eb7ed557bc8e4faefac402193a7ed1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.7.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 249.8 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.7.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e192013346b0e46b6bcdd69ef9e781ffbdd58701b27c36eae6bbcb6373b8bd8
MD5 a836d4fe5b9e0147cc3abed2aaf6b446
BLAKE2b-256 541934c5a439e8dcfafd652550bf786402a95936eade3005d986c2a0059d2e0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 169ba7e89f2746e5b6cfa6918ce1543b7e51f09e3752b35d85c73f10176d804c
MD5 72c37d3033b92f7151cdbcc4eb68ddb1
BLAKE2b-256 087b4fbd99bb4a8874a4ea7e5cd0efa053d87dedcf9953a25c89ba63d3fe7de4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d841f17853572b013928f5eb7d6b23cd60847e99005e9695d59a3ce9c5e584b
MD5 b1403f9cbc7b210edc57d8a70fb1740e
BLAKE2b-256 f727bfb6febb94789f3f7563b563c7d9c64db9b46bdd131812e208b77dba93f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 325309aebac7bc9b3ee67a971928abdfeeb5597e7b775649fd1c6bfc64208228
MD5 7780048a4e715c02ba431c93d92e3f95
BLAKE2b-256 5d35253fc0611dbcba127070b059485a70519d5d9f35b4f308d9529c4b9ef7c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 735b0b5ac53c7e5bb29d92e540b28aebc20be5d2ae3313d7b064a20a1d35b079
MD5 fa3b4b06fa7645adde73d1d5e49998d2
BLAKE2b-256 d4504f0f936a8649fde7aa7f737fa7f5a0a5a8abdd5ee07205300570a2c6bbd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b0455ff5a7cc352898a7a92da30f1e0d174c6a3d29b705836876c49edf4098cd
MD5 a123733c48165294ddc339b5699abd28
BLAKE2b-256 8e1abf4b44c632d5284e36482c3d1f0f038e0c56e3f50d05fc304d9a0b53d044

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.7.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 249.9 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.7.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 354ac4777ea4b42d57a7f34f99cb2ff0464e979b9ce75300b2d430068779d8df
MD5 604da4d314343f19d063ef5bafbe7498
BLAKE2b-256 475de0e8e99678392d5e0b09b2cabff7ac73b979914128d1083c36d8d41cea8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b105cf032234fe1d8e1c5a365569a215db967aa25b8091ce40679f9b4423337e
MD5 020b4f797cbacbbfdcbf609f68121c1f
BLAKE2b-256 fc89d2f45d80a7f2172ac6e10e1930913ffc792aaa963817e2b6f055370f9377

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 235af4565676c8f9f2c43db79356ae2b4331fa137eba5d9e4a54b4acabba819b
MD5 19f01d9e9c905d6a55cfd29e0ea6c36b
BLAKE2b-256 67ec00fe2c9e232b74000fd8e4c07f995af1f28d623e6a5044ba9bb0394e7676

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe53b6f39bcf42e8bbf59b8625d2150cd69fc428d7df028b7877886c18ebd746
MD5 13e2798d5405e18ccb5fea8de5be2747
BLAKE2b-256 bc9d5543c1f4bd8c3ea9f26bd3501f035c0ad746d75375825b5df2d10c16a69b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 217fa2680bde23b52115c715b5f68de80279e04ccab658c01d5248a93d21454d
MD5 7c13a6b2d28c9cc96ddf94efa4273aa4
BLAKE2b-256 70328f964d2a296fc0d6bf51209f88c423f80554a261b314ea2c3671ddc73eae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5aecaf4324f940255c331e1678b0b26ea671620b01a6b001c25dfefa48cde32e
MD5 395e2b78c6e7ad0ec553194eba43e7f6
BLAKE2b-256 8afef9070597d20feee1a2f7f3b33c284a1c31593f5f5fe2800e193dac0ff06f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.7.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 249.7 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.7.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 50edf96cd8d817e60692b03d6b49fe239bb8a6ac25ab5f30a4e4e5fa5e933b75
MD5 b23e7a416d365fdbd71df282483d53ac
BLAKE2b-256 9c33c29f7c6573c262f0e54a42e71127ed5b9106a08394d46943eee89234d241

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c31ddccff861d5969c1e1ca51a73a59a0e21eafe74c73b74f29f68dafbaab409
MD5 8a68a11c436ec1ae47ca5a721958a145
BLAKE2b-256 4cbc50931351d915fb6179f535553bddd5dabced4921e99cf64f42c1c8f8a09b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f623c509499ad9d284dd5c7d0c157cdc05c60c9d577a21bc8c617bf69f26906
MD5 1cb798eb3313607fb29717f3caee0306
BLAKE2b-256 e4104c71ac3be4f334d2e86af717af26fb4b711f694ebd80e7e6854f307a27ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e8cb72fe105f7225b25c6d382efb31aa4204bee40851669ff781eaeb43b261d
MD5 5e97f25bc9d495c664254a9a24df9288
BLAKE2b-256 196b934b33a09611d53efd6fe24999434efb1453192425fdd094f72654b4b5fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c7c47e4843a57ee71cce8da77fb828b5b84a1df000e1b3db4eda08fda9635dea
MD5 ce6e136c44e7c0c81eff3fec78e7bd06
BLAKE2b-256 7b7d1dbfee7a2662ba48917f39dce30ced15ec1cfd73cd6990b489f2eaee3b10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e1a18d57a234060926c8c69f88936c072a20ddad263308d6c8513c3cb7134237
MD5 b7b2d4c70f0deeb0dd348e2dacb1d96c
BLAKE2b-256 fdd3958610352ceec178e87091cfec18245a22159ff87115d0f700b80d2d98ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.7.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 250.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.7.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 99a7fd7f4e9504099cd3c0116accb3ab2522decc394b0f758cfd4b56f30f992c
MD5 9162589075f313f40df3a2310b89b85e
BLAKE2b-256 f7aa3800afd7a2d1cdfd4069bf119adb0efde63a4e714f3acfd112b99d91b4a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b88c6612914c2e48e5c12683924d0e7c34a5b8a7be36ed07e7c69564d49e1aee
MD5 acbe08511fe13203caf865f0c284370d
BLAKE2b-256 67775e5fb494d516c4f97d154010e84b3310850da3d91983241c9cbb17e1e496

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d79b99318f02572f3317ccbeb7ef21fe4b2425b4d47fbc7ef4bb803dc41facc2
MD5 101ebb57dc4cf9005614aa771e40e9e1
BLAKE2b-256 b2be8d502857f886f051612e6861ab637977a299453ca9068f206ef6a43c938e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.7.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c392df35d440ddfef78dd0f75e633a94c10fe40f1af925de32f6031e7f257512
MD5 58848bef6ceee7d6e0596d95ff3a8c90
BLAKE2b-256 c446117a8e426dadf8477d9e221ead8dd10bd24a6188ac609974859d73e5c411

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page