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.4.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.4.1-cp311-cp311-win_amd64.whl (257.0 kB view details)

Uploaded CPython 3.11 Windows x86-64

usearch-2.4.1-cp311-cp311-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.4.1-cp311-cp311-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.4.1-cp311-cp311-macosx_11_0_arm64.whl (396.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl (409.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.4.1-cp311-cp311-macosx_10_9_universal2.whl (772.7 kB view details)

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

usearch-2.4.1-cp310-cp310-win_amd64.whl (255.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.4.1-cp310-cp310-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.4.1-cp310-cp310-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.4.1-cp310-cp310-macosx_11_0_arm64.whl (395.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl (408.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.4.1-cp310-cp310-macosx_10_9_universal2.whl (770.6 kB view details)

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

usearch-2.4.1-cp39-cp39-win_amd64.whl (255.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.4.1-cp39-cp39-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.4.1-cp39-cp39-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.4.1-cp39-cp39-macosx_11_0_arm64.whl (395.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl (408.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.4.1-cp39-cp39-macosx_10_9_universal2.whl (771.1 kB view details)

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

usearch-2.4.1-cp38-cp38-win_amd64.whl (255.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.4.1-cp38-cp38-manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.4.1-cp38-cp38-manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.4.1-cp38-cp38-macosx_11_0_arm64.whl (394.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl (408.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.4.1-cp38-cp38-macosx_10_9_universal2.whl (770.4 kB view details)

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

usearch-2.4.1-cp37-cp37m-win_amd64.whl (256.6 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.4.1-cp37-cp37m-manylinux_2_28_x86_64.whl (4.0 MB view details)

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

usearch-2.4.1-cp37-cp37m-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl (404.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 257.0 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.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 658edeb0cd2185a9141fab608ccbeaf509f38f84ff56e8862ecac81a978e67e4
MD5 21e78b750eb78058388a82141e33dbf6
BLAKE2b-256 cc2bf4a720da2c904099ab2a9399364a263a8aa942645f29353906cb7fbd867d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a4010bb1703135e5022ea6e58894fc0fee3e4269209f103a2c8e5ad60a6c7f07
MD5 267d6f770975e59278a2d5861571cdb7
BLAKE2b-256 f3b8fc69dfcc1c01349ba87bb8cd2302236d79c2a0c042235d76475e06312e4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dea19f68b4eed1a09df6dbf26f421f4b0715ec4c26f03dbaee203ac7135da8c6
MD5 4a3938f8bb7a8fe4abcfe7c8704c2f0c
BLAKE2b-256 801c42af3af85637d477056bca8e7da3f544e80e37cb9fcb420f7025b29d1cc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 017d86ed59315539c77db0fc12ced042ce8f4c5e287aa06a8a9e6ae041e7d1da
MD5 34475c89bf0045c02c90ed72da33febe
BLAKE2b-256 1edbd4407a7c6d83a815958683411844374aa9eb19e50d751186f7f845094ded

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d450be230acf006eeb3fe093f4eab6fc999c856af018764546e14615c247b78c
MD5 bde221d0ac8e35aecc3980af31c525c0
BLAKE2b-256 b38622d455646763aae3db23b86d777dba75b26e3cd57d63ac7da6c5c66f652d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 33c895b9711e0c66df9b06240e46c0217c31f12129e17b8a08bf8713eaa0c745
MD5 ef3f1239a93bcfc6083ea1fec4926531
BLAKE2b-256 6a7dcf6c157b2df6d36edd41af954f7af4d1c5141aead8c760487a8a32a9f1a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 255.6 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.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d439095a7049594a338d2b516b7c973a9f113ba0486116997d5aa110a04c5acd
MD5 eb67a4bff877591a1b193d2f0a8e5038
BLAKE2b-256 e1a945761bd8454cf400433d6f889de6517bfbc0ec45a2dc5306cbd00f161c11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1bd9127e75d0f197da0127a34349166eca8ed96318363b1273b2bfd6d0ba5a43
MD5 7fde3e94117f1866c24df38c3be2367e
BLAKE2b-256 6247ce15e3f3dcb6bec7cf12956f291e5fce8d63da6cedc16e48f2ed8cce4a9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5640f5822db6e184feee02e4be6b0b15fb8092f5f40745740bd45458bb129562
MD5 42c08d2e12ba5b4de0d29c5fc8e7ac1e
BLAKE2b-256 fe4b81cb2fb97e8c9dd70933dde303d40b2408048f75d415e8f054d925927b17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 971dde2b5c32f74ddfae8e96c1619356c6dc1d6efb882cab68a32959818b107f
MD5 40758cdfb1b9a55b00a7ffd9cda6251e
BLAKE2b-256 f6cea176dc19b070e10de0863f0a6f26545097f1dac3bfaf365b8a759dea8e00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cd195b9be81937d042109797d9b30cda92e0f2291b13913b96ef4d9dfc4318ad
MD5 51d0e25072c48847c9e1ba4f14fc9647
BLAKE2b-256 4c8e9b461e9b77c8ee812b20d8979c59c01ed949e965119f19446f6a086c0c3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2d6d79bd66bc964feaa52a6d69f78f6b7f3b46105dcd511f3ccfc643674c7a62
MD5 50f8ace0294462b7bbfaef79af55abe7
BLAKE2b-256 a2a3727abb7b021f36da04d1ce47f7ccce9b493c3d80f3d0f5bfa1c16d8f26bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 255.7 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.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2f5f774f21aec83836211254feaf1c3dd19cac269341481305a0ad16c16a36ef
MD5 c4b08c7fa4441478b0004fa0e6cf87ab
BLAKE2b-256 a0b7cd2d3f7e20cce3c52b4d99c5d6d38930968c8f083481da91733cf5654a2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed36a0b80e86fbd43279b3ecc76b259e57443d5e7646cc5a80cd7bead5b5d204
MD5 11bbf37d55e77b431c34fedadc976e94
BLAKE2b-256 1dbd9d2690926df541e87397902fe6f374112514b2b83f9c6127d4986aa1d73c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7779b751458eb80c95980af5a2e218922746484d533ddbf4ef0c67a56eb4b192
MD5 19630dde3263e6f6939ceb89c7cd564f
BLAKE2b-256 0fc6656b9d5f059ef975b64d933243e8bffa5e4fa9f7d93fd54d572e48ea2ba9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4571d5badbfd9b81b8f3a875a6937f39e98e63983e95690b097e06a8d1a1dc06
MD5 4b40043290848bbad5cc7b180db84cec
BLAKE2b-256 f3317148168c7dbc3a103fbbe2eaaf60aeab3ad8712262c85d3500c409e6ad1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 69ba4c22c0738e792ed898047c64832be9fede54ed225766c40261aee535f307
MD5 e9d361c323fa819159024804bbc91b4b
BLAKE2b-256 fa4d6be4f69ed77f3545eef24bbdfc5c1f60c78c246a027f920d666ba056d144

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 12b3739bfc5373a28f7dbbf3e9e4ff2fc95671eb91d875c2d2b139bbd6455bd5
MD5 c8ca9af1ef9ecac2d810fc166ec6e4bc
BLAKE2b-256 7718d13c9064d2c4a06d5ba9da64adce493feec046254dea5f6d2896b00263ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.4.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 255.7 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.4.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0209a3ce1c54148dc0b4983442173d46e685723b31113a276f6401b2868b5a7c
MD5 150c4661f684358d25d2a7576f436552
BLAKE2b-256 20a0d4414c310c9302c2027d191c39e86108badf971ae5ddd74cbfa034d2e2a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e954fabe4a419877e9d678b3305a4baeed33cf9608e15e3a43cf1be1a13b0d01
MD5 76e1a55787d0678097fdc003c33ac80d
BLAKE2b-256 108eb116c68e5a9b7834e411d1b72a95a0db1e0d64e63b8e99af250a9091c1ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ba3a0fbe4fd8d1af00f07f632074bc7b1f9de35441566ec465de940ffb47d505
MD5 573423f7d059e5caf595e20ba6b7fc87
BLAKE2b-256 3aa2037689e9e166cfdd054360ac7d3b2e2c64eb1bc7881c2abb36ef294332fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fb6716fe1db6f7eac0ff87a22314ef6b792a4e04f2ea6b4bccd79958f5f076c
MD5 083d0422f983f83d84eb66a0e9d2044a
BLAKE2b-256 14cf7d56eaeceeeb557668df4f55063a3c9b3b8c2ff9d805ffd04efbe38508f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f40bf8863d3085bf91772c3cbc0cd549c73e1a8ba8aefb0632bce1a03807b796
MD5 247dd1a40a399cdfa25a08927cc41eaa
BLAKE2b-256 288d72515e1f436f461c8f8a9617761918289f049ff004cea6335651e5bdaffa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a5abcc454390c1ab9f2c48cfa12f22de6e9a94d218a11cf7b8688ca163489c86
MD5 dc437195ee71a36fafabd8a2f8107376
BLAKE2b-256 117478bb5a27359bfd9651576cbde2c57d6cd5e05f0e85884a89b66c41c6688a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.4.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 256.6 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.4.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 d24166d4a7cf2e999f792aad00c194716428b8758de98be68e7b9a2dc5afe25b
MD5 862be25bcc0d81fae2e6ebe6d4247f1f
BLAKE2b-256 3df06f11b6ce54e98b8d2950dceb239c9c41f6842a7ba3ff1a1086157d69915c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7c2e1c0242f37841f2ce9c9e49856af99eb302c51a987ce333ec77df871ec4b
MD5 a54d0686805fe21efa1bc155e8762743
BLAKE2b-256 97ed23b7163558d6a93c16f52bbf7d3b514d96a3c69c8a3066e51407c0ad77c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4e4b76f16daaa9b24a8c223477ad0518dbf1d65f63a505701b1a9a6fd500f0e4
MD5 732f78f2290d43effcbadc84185b0aab
BLAKE2b-256 19ac659055dbb63dd23c69d3642a05132b570820b7619eed95ee8341a6e830e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6eda05e0ef5d0092756cd6155040b145a379a83f92bfc2ad088fb9eb8fd54767
MD5 1e3a108fd8eedaf16820981f8ee448b6
BLAKE2b-256 2727110787764637cfa45716252c918af151246aa909d644869729915decb1d4

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