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.5.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.5.1-cp311-cp311-win_amd64.whl (257.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

usearch-2.5.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.5.1-cp311-cp311-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.5.1-cp311-cp311-macosx_11_0_arm64.whl (398.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.5.1-cp311-cp311-macosx_10_9_x86_64.whl (413.5 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.5.1-cp311-cp311-macosx_10_9_universal2.whl (780.0 kB view details)

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

usearch-2.5.1-cp310-cp310-win_amd64.whl (256.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.5.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.5.1-cp310-cp310-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.5.1-cp310-cp310-macosx_11_0_arm64.whl (398.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.5.1-cp310-cp310-macosx_10_9_x86_64.whl (412.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.5.1-cp310-cp310-macosx_10_9_universal2.whl (777.0 kB view details)

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

usearch-2.5.1-cp39-cp39-win_amd64.whl (256.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.5.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.5.1-cp39-cp39-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.5.1-cp39-cp39-macosx_11_0_arm64.whl (398.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.5.1-cp39-cp39-macosx_10_9_x86_64.whl (412.3 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.5.1-cp39-cp39-macosx_10_9_universal2.whl (777.4 kB view details)

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

usearch-2.5.1-cp38-cp38-win_amd64.whl (256.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.5.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.5.1-cp38-cp38-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.5.1-cp38-cp38-macosx_11_0_arm64.whl (398.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.5.1-cp38-cp38-macosx_10_9_x86_64.whl (412.0 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.5.1-cp38-cp38-macosx_10_9_universal2.whl (777.0 kB view details)

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

usearch-2.5.1-cp37-cp37m-win_amd64.whl (256.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.5.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.5.1-cp37-cp37m-manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.5.1-cp37-cp37m-macosx_10_9_x86_64.whl (408.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bcded1e304d0a471938f9440c667a8de7674310446843909fefe6bca8eb87fd4
MD5 9f388528f8a2b13dacad8ed2d1b37d10
BLAKE2b-256 d61a9f433d11398e5d359b4d12549637d8181900db72d143188d417d1a78cf29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f03d010f762cb8a1b66a62c80eddf3f6bc20b28d6114ada0c95c2d5387d3c5b3
MD5 4cca0ddc6a36f1dbaab61430c4172023
BLAKE2b-256 76b467c22c7960a059108978310ea615b5b4188fe854b2f88e5a7dd4ff3ceb5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7be5b4ec0f66d5c962f8234091a3480119d383f274d5a77f475d2f614d57b860
MD5 842ca75d4691f8f618daec8c9ae4c300
BLAKE2b-256 b44f7a97b195115201fdf033a5ddf8ba632cf2ef9541dff332854ad176f43f1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 226bcce30f2cd8a04d137f33366ef27e53a7e75f93cdd5ae6179181afb7334d1
MD5 dd8a09e890be345bdc7eb862e4ab3252
BLAKE2b-256 49502fcf2ed5db042d5a504e95c06b1527997dc85cf701fb613599d8dcc6f5a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64bcdec73c1ef3021de4b530482e77cee094bc5b35c54fae742c39cf406a5074
MD5 29417e785bd7c2773f3389e1ee1b42aa
BLAKE2b-256 77830f3f6cd73e5104825adb217a20710419677423b9dcfc43b457df4ab64cfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e208bbec9e141b201afee8695fa5e92d1f8c4cd77ccd9d4d42da5d7f067b13ea
MD5 d135181974b38b343dae983f8f9e2a78
BLAKE2b-256 298c430385d83c945a8de1bd1c4ee94259b86f64ca39d46feceb73da7775f5b8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cdeda4365d025d4608ef399f17a7d3a56bfa44f63fb03565c47a96789f34b03d
MD5 032cac9187b3d8ff3d74b9bb066b4518
BLAKE2b-256 45e5a2a528317bd3eabd02bced3d3712016ef3853fab103b8c98ef46fae2802c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cdb7858e93f5c3a75e1fc9f888fc279d732298ddb1b7b05dc1fcefc7332432d5
MD5 4fafede987d6e32aa756f5b84f35b326
BLAKE2b-256 b531e8c8715676c593184d5c34aef239e47c7e0668df959c85cfb3704f5611b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c49fc3390a4c4bcb78d4b8f9d54d906edcff5e10e8881a8162ed785496851103
MD5 43dbd6c58886e52123b8c76f037446ae
BLAKE2b-256 02b3a5ac69994f9e33943e9a90830601ecea93b03a1e26d2f5bead8e1376c68b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2994c67579d06f4acd94582b91169cd630d11994517c4e575f54e240ff1b863e
MD5 69c06fdf015f7fa1a0caef043c38025e
BLAKE2b-256 f5b6419cc750fcf0cddd0b3688647141c649d166c24b7e3c53b0a3eed050f14c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 40e6235fab9ebe007de3b75760cc840b996a26107c289749e8ee89248538384b
MD5 f028c1b5dc5704593147ee6c8a109dc2
BLAKE2b-256 65139e27c15a691da7eb497a3832f4691ac7115d91351299618e5407ce88db81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0809ed4aeee34ab1b6bf58b843e1e1e03f9231f5d19ac44aee4b68e8b235de77
MD5 fb80eafeca7e3654ffb7e609ffdbdc71
BLAKE2b-256 5cfdf11df5e1ee60008f552082e2e9eacaa6225f2b9c963420d19441618b21af

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b1ed9f1e6620f17661c1dc2145e0c69374e75614430211f67b150a4b8581b50f
MD5 44b1647d6d254c8556bfd6b32852c2c7
BLAKE2b-256 f52c20921a0e5dcb4506fed463425dc01171c85a4b934c6fe99e27a1c3419e22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b69bcad0fe3af7f493a645f96ee8abce8b561abe9a5e8741fe8f54b634c8e15e
MD5 738aa1a3755cd3a1310e86fbf77949ae
BLAKE2b-256 f38c8b056d1dc487f9742a3f5ce8fd0df321c36d94d4970a66ff9d5349beeb5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 96cf2085289b1b57496fd416d50567030dfdbe4f22544c2cbdae8abd7ece4f4e
MD5 7072673cff1168d89c2f0ad669350067
BLAKE2b-256 76c59a4fe2866177d867b6ef9c1bf310d72a01fe48bbcdce30447dec1872b1a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d8ffd869a11d8a8bfd5ef52f84b1442f8303cc867cffece1f1124359b6be6d9
MD5 107c1f9ac284b277f9b310b5e1238faa
BLAKE2b-256 6bec1ce2d1f1dc76f89e82bfdbbf2cc73ee1fbfdf1c39292fc7925a743c29eb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3145da3705796ad027e2d156d382bf65ad69a5501da458d70900dcd4012e72e9
MD5 a86f8c8eae5165c8d78a1d410fae235f
BLAKE2b-256 0c30edff2f0a0a387ac2ddbd09677780684ea43052e1cb35ec19159964716eae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 43867c92ab7581b4586af048b35a96fd7113aa182810d601252f038a853b032e
MD5 171b6cbcc4440952a051f23f43e6842d
BLAKE2b-256 3d444774439c819c90d25643373e36d7432adc45a9b7f249968d92640c4a333b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b1e476479fd0c7494a96568e7ad144e9a1817850c3dc5e395211d1b087762d4a
MD5 0d241751d97edb0d4511385c6f11f5aa
BLAKE2b-256 d98dc55b21b28b8de343ebaf8f2a9b262f6d196ca83029429a82e62b6fdc72aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ecb24da82da566474737ea2c481078575beb17199d95add31f2428fca92cf744
MD5 320e967e6ea8cba0607bca4fcaea0076
BLAKE2b-256 ab0b1cf2532b5ac788257ce21aff3d411f6371c1d9fb1f81de19cf3863f321d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3485b0989ea780ad28030527e3ec048ce7cf089506a2ce0cd738ea6cc7f61de6
MD5 21ad5f1bd21e9f0d0a173573893ac45a
BLAKE2b-256 921522c9aa2e08bcc4f0110f34fd27e61bc75622c49af68bf722bab1e8c2e74c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60add05ed7b4dbf9edd05915731a8c9653c2d380bf7bdbc1524e55064c8f45cb
MD5 c3d93ba993b25b6339dc94b49b83e7ad
BLAKE2b-256 93b179c20c66b5b0af074b187c4bf880fd99185d65e9db3407945a3790df1834

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 be8b517612e98370b286c43c55322c24efffbcd7cf35c84f48ea1726497a4aa9
MD5 8d98a8dabd450488976a39db0919d551
BLAKE2b-256 1451f3e72a346d13792ac69668cabefe925c343bcddb9e972f7bed903e510592

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b7a156d650ccd9ffa840e32e25b4faa142cee003486e75f33ffece4b038cb6e9
MD5 4b38e1135b655d62719afc82c3582a45
BLAKE2b-256 1d42896511b7a6d21284fae69bbc938546376178019f4ef1c674c9c8741f889a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.5.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6624efed6f2f46a33665d11a2fe689e0de2b9cb0652e7a29b5fc6ccf735fafaf
MD5 f776e2209be28eefe4d440b1425cf587
BLAKE2b-256 5fb49a987d6d0c1aea5008e96f5d159f651718a65c4205bd28c0b717e51a6dbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dec2e15d1c7919a62b1742fe4f506db0cd247ef6fd989273553642b65ea0e300
MD5 ad5ee13f5989b5a701529378113b698d
BLAKE2b-256 2d0df6ea681f9ab9ced467039ce5a0792e566661678e0dc138b7280367260b4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 85228b570d985b9a77d62845938585136b6a130c738d0a7ea7a7e4f1aec8070d
MD5 f116d70a90422f92e04298b47361d883
BLAKE2b-256 6c79dd8d7e1e7054f7cde251557654c483ec7f53a39c50ba94006b9dcf5218e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.5.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cffc5dfd9d2db3826450c1dcb3c096ed79f3a3cbfd6822383bfad8bd6308f286
MD5 059bd3c21e56753efff336b103ec0e0b
BLAKE2b-256 b15a93c0fcc923fe65d026f260031f531fb370f07acead9d8e4ae7cc4c9d19b9

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