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-CSwiftGoLangWolfram
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.

Serving Index from Disk

With USearch, you can 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

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()

We have pre-processed some commonly used datasets, cleaned the images, produced the vectors, and pre-built the index.

Dataset Modalities Images Download
Unsplash 25K Images & Descriptions 25 K HuggingFace / Unum
Conceptual Captions 3M Images & Descriptions 3 M HuggingFace / Unum
Arxiv 2M 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?

With Objective-C and iOS bindings, USearch can be easily used in mobile applications

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

Uploaded CPython 3.11 Windows x86-64

usearch-1.2.2-cp311-cp311-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-1.2.2-cp311-cp311-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-1.2.2-cp311-cp311-macosx_11_0_arm64.whl (371.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl (382.9 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-1.2.2-cp311-cp311-macosx_10_9_universal2.whl (722.0 kB view details)

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

usearch-1.2.2-cp310-cp310-win_amd64.whl (236.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-1.2.2-cp310-cp310-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-1.2.2-cp310-cp310-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-1.2.2-cp310-cp310-macosx_11_0_arm64.whl (370.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl (381.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-1.2.2-cp310-cp310-macosx_10_9_universal2.whl (721.4 kB view details)

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

usearch-1.2.2-cp39-cp39-win_amd64.whl (236.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-1.2.2-cp39-cp39-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-1.2.2-cp39-cp39-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-1.2.2-cp39-cp39-macosx_11_0_arm64.whl (371.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl (381.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-1.2.2-cp39-cp39-macosx_10_9_universal2.whl (721.6 kB view details)

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

usearch-1.2.2-cp38-cp38-win_amd64.whl (236.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-1.2.2-cp38-cp38-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-1.2.2-cp38-cp38-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-1.2.2-cp38-cp38-macosx_11_0_arm64.whl (370.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl (381.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-1.2.2-cp38-cp38-macosx_10_9_universal2.whl (721.3 kB view details)

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

usearch-1.2.2-cp37-cp37m-win_amd64.whl (237.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-1.2.2-cp37-cp37m-macosx_10_9_x86_64.whl (378.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-1.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 237.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for usearch-1.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f9815c01bf2a34a7b9342fbdce7b65cf6794f5065c652f5a7bfcc780c05893c0
MD5 32b6b31b8f6311d199dc4f7c4faecea3
BLAKE2b-256 d1c450bc119e885d4de45aabc3db9ad066a5629019ddcb9c7f431e617161d089

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 393d18e68870167ec0e52ca22cb59e48889417133269ac9fa049f1fa4b9eb5ff
MD5 746c83bee8849b67a2241e4c0f37f843
BLAKE2b-256 f862c3693ad4a8408275b880ed634f6d64ef6c13020912067037048200c4730f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 afe08d1c7df039b69a4d94cff496321934e60bf1c983561b62b9ee39b1ae9527
MD5 70d5d9e1acbfabb7af07f264428f286f
BLAKE2b-256 6a43900fed33681a139ae8e962ecb114567f01dfd367a1a95ee5454d3953890f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 167cc710506e393662805aa30126a44436b57db7942c5bfebcb9ece377e7d360
MD5 e6b98185e825ea649fedd45c4124240d
BLAKE2b-256 e0c2eb433c740efddebfb5ac114b05018708573881acc44cfe0930786172b454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 743fcaf14c33e3fc69114259fe024a05c9d2b8c6a4450c3da32b1d0cbc97e66d
MD5 549e8da1e69339a5b9b30ff880dbac93
BLAKE2b-256 f9a183ad18894aa209af4975fa8e6bf19165a49aba88cbb8b95eaa07151e7600

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1bccc03bedc0a8cd2023a727aee51e868113f3adbfbcbeb233cb9a6b5fe6c7b8
MD5 7d9e42e8d16ad2626514f57033f36a2a
BLAKE2b-256 fcac5796d8852158b63b0b9e78817980fc209fc86dd004991f79902104296352

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-1.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 883f384b7afcb078dfefb9aa01c0e733ca3d90d164dd9c325f11194137eaeb68
MD5 0990d249a8a0151b590cc36b78e626d9
BLAKE2b-256 17e093d72aceb91737ed4990aa779cfd4e61f39986fbb7d6dbea2c437b7266c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd4710851899b661e60c1906009c9f67bad8c1b108bf59c201cf21366546f3ac
MD5 6af385421901db1f61aef488a7f3919f
BLAKE2b-256 b1a15d217c505c90707ebbf14a899541c281120e87b6dfea0b9a3aeba5ffe729

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ac4e4888264772baf7269d281dc4b4799b3260654c98e67d71ec055adb3ecb1b
MD5 55a31d76784ee585c43fe0bacdafe0ce
BLAKE2b-256 7de9fa2ee5ac2a8eba3e98d0e2b766859bfd8551fa866ec22508d96b0d13b40e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54edfc8de4a4e9a6c38fcb2b49e117d04cc495d5fd3b270edf0df5511bc8b25a
MD5 ba77c6ef2fea085e7f3c6571d7e6abb0
BLAKE2b-256 261be4ec0b52c6235dbbd1c0d51dbea74823683197d40d855a8aa820d47ff560

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 df9938e228dbf0e6f8a3d47de8cac4ac5eb6013c62360ba0f9878b15b5feae1a
MD5 98731e4a1a9dc8fe95c8f586137bfe34
BLAKE2b-256 f8acb790d2e8042108fd2c56d4c847e25a14da6f77717d97522a47f81163270d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 da1642b5faf13868b88000ce59a78a4131a3baafcd13ba336d7b8b124f35c471
MD5 e2e45f93bb1c5ad4813355b37a3fbf2a
BLAKE2b-256 fcaa22c71c29ca6db9822fcaf282d1acd8d7418416f67f56f7f90d3a52d980f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.2.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 236.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for usearch-1.2.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6d7d686f62d6c28e47bfac31dd23fc78d8006eb63923e0b0002efcd854c446d8
MD5 1265f3aeed9e451c55c3729f5cae4e97
BLAKE2b-256 ac2b11365ac790e3d5fc6cefbad4e04f499506b3a5c5169586af97981ae41cb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 007f957dd02e1768097716b21e626e70e5443e1c50a59ef4c743153d8db0a7d6
MD5 e43d900b74a997db3fc1a52ce26a8092
BLAKE2b-256 fe48e3c802addde9df19fdc03b5e3f1c44c1507c14103293eb9f59acc938338f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5930e944d3e54c6791444e34945cb5f55278aa79364ef954216825b560278e0d
MD5 d8d517769146be9dfad99dd9efa5056b
BLAKE2b-256 3bae136f9ea3c15425bfc781988659e6d7538175762000ccb711579f1bc42159

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f7cc3c0db86c04d80e780a96d779363ce56f914c9ba8514a16ad9e17c4d3501
MD5 9b04b8bf6f9604dd348b8787465b4344
BLAKE2b-256 c59c376f8b6f65c78a44a1a3347cdc7f28852afe1ddc3dc5778e492c87dd92b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5c8102b2b88a0c1053184a307c02c7d2394e9d329281399d17a5caff2cac244d
MD5 0be020ba944a0eb0b8922d19c4dafeee
BLAKE2b-256 cb2002b587daec5c85930eb77186d07736eff846bbeb105f34b8fdad75ba0a55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4fc063a910aebfb67b1267f70401e70a672507da625d0242abd2eda0707c05cb
MD5 8a0fa0ec3907672e511921307c9f193a
BLAKE2b-256 824751e631d8814aa1142dc2773734e1d724d1df6a0a6fa7cce02aaf2f856adc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-1.2.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 236.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for usearch-1.2.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7210b8405f9f76ab4056ddd4e059ea57e6e0c10109a8e86753c48e6dab0f7157
MD5 9673aa50f41efad636629eac7dde6722
BLAKE2b-256 6dbc22be94b4a98e80fa5f55b78f15bbef6d902e4f2bf47af4081bb0d5602a99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59195d5ab81e13d02a25c0539d749303f8920d0875225d2b9381e98a3bef06bf
MD5 ac05b19d2330415eb15105a4dda71694
BLAKE2b-256 d74212a572a06a2fa7b75276d7e0fb69300d23257b79707c9ab0c2e867fc692f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8b329a032f21e3cabfae12098d3950600aff5cd94c9b5c72165eb20e9dfaeea5
MD5 7c9fe15329ace2670e310f8463e9b7cf
BLAKE2b-256 6097bef9a8d75d75078620f6031ceb1c48689c150723f810d94fd222b8fde718

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38bfbe406338fdca1762d0dfafe81380972afa97ff94f49a28448d40731815d9
MD5 77f83c719bef2d3d58957fb13b5633d3
BLAKE2b-256 48131079e622c89506365ba5171c029641c842a6412f0a27abfbb558ee080177

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c3ab822f054d3125844ddf2e8f6e3464f9cf96f42a3917cee3cc7c3c0c77a9db
MD5 f144d1f95c62311f075e26efa71b8ae0
BLAKE2b-256 5c5dcf9399ebe27dde03ba58e919d91ebf47c9e9cdad8df9e467d2f778c90454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 90006bf8ea0c0999bc20a1a7f9ea8886232422c387339ae31180d1d06b00a76e
MD5 92b8fc0f487ad15bbe8776ef30a74687
BLAKE2b-256 3adcb2997c165dfafbde7f0daa5e330463c2c99de53cc173a62beeb98fdb0e22

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-1.2.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 dd671b823d59ea4680935ed0c4046965940f7b88ce8ff84d72852c530fdd92d4
MD5 4fda9ee2870eaae942707113a0812900
BLAKE2b-256 e9245ff46f921eccdb47017cd846c95ccdb79a3c1e818ed0ac1bd680110724bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b20c8c18a53f74e10e37c855dfd2e132db9607a21535f2cfedf0782cb3e2bfb8
MD5 6d9e837bb4c094ebf73f12d9373d2ef9
BLAKE2b-256 084c34f33781f42acdc4beae06b9af94cb6d6fc4ab18aea85880731e0f0ca252

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9a4263f7301b2bd590627c7b480a87ec413f8c5a232eeb53a6342300b5cc757a
MD5 799ec06bc945ad974f7f361137ae3037
BLAKE2b-256 bfc654648741925169a4ba8e16d6aa0258b45e22bb22eff6471cb4061b926faf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-1.2.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6fd783f3a0dcf3919c74b35ddee0a8c8e78f485db299c7f0360dd289e9570889
MD5 51534989ab95bf0a2fa020fe9494bbc1
BLAKE2b-256 11110a74a5531ed5afac54bae312690fe379720bfdbd5d5044dfe1e3010f0481

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