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.6.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-2.6.0-cp311-cp311-win_amd64.whl (257.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.6.0-cp311-cp311-macosx_11_0_arm64.whl (399.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.6.0-cp311-cp311-macosx_10_9_x86_64.whl (414.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.6.0-cp311-cp311-macosx_10_9_universal2.whl (781.0 kB view details)

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

usearch-2.6.0-cp310-cp310-win_amd64.whl (256.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.6.0-cp310-cp310-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl (412.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.6.0-cp310-cp310-macosx_10_9_universal2.whl (777.8 kB view details)

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

usearch-2.6.0-cp39-cp39-win_amd64.whl (256.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.6.0-cp39-cp39-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl (412.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.6.0-cp39-cp39-macosx_10_9_universal2.whl (778.1 kB view details)

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

usearch-2.6.0-cp38-cp38-win_amd64.whl (256.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.6.0-cp38-cp38-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl (412.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.6.0-cp38-cp38-macosx_10_9_universal2.whl (777.6 kB view details)

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

usearch-2.6.0-cp37-cp37m-win_amd64.whl (257.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.6.0-cp37-cp37m-macosx_10_9_x86_64.whl (408.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 257.5 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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0f366815b583a2d18bbcb0974b68f4ee1d169f8e8e5484acb5fa1d0a758f286c
MD5 4030b8c767c301d1646be2228c91fddc
BLAKE2b-256 0a52695785e71f55f5d079d4d5ad9fa591bf6e1439f468e2c3f8eed7135bce54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ff336d5b7e9c51bd2271a36f7d6cb0130a97060bacd8c6e73f831ff0d1987e2
MD5 93abc30b6d79dff03d12a085ce801f2f
BLAKE2b-256 dd31e32eef9569f74e20e3a1e07532948cdae0b99f6a2cb2c3ffb91c200c19d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ae6e8fb86b1eec0eba5b509c410943be437d1ff61cc0209396d3b29ced06d14
MD5 0ee476b5d216d66b7a42293b6c4a442d
BLAKE2b-256 e066c7d8fe0ae4a03ddce6496361fb322ebd1fd5284016ec8a020697d9063545

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 240f7cd0abfc0a9c62c3ea8ed9f28c8321cf44480b27ed1ad037a25ed7f9e57a
MD5 93ba9fc47e91275fe74de6371ddb666f
BLAKE2b-256 a3516770252913811d655ada5b863b3682b3b9e55a5f29893603073ffbc143ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 47d434672584e118407d40dca995fb881d09383dbda153f5211b7762a209d1d8
MD5 f4e36b502861b758ddb4f94d9203ea64
BLAKE2b-256 a8607fbc6e47ba40aa3105a8b5dc84a1ebae586436a4e37b528abdc698606caa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d52b14b5f2875d25031eb24b93209d3066685f15a1e5e9c777650a21706258d9
MD5 62b7ae2e031343a61faed0d64f839eb1
BLAKE2b-256 fd4011b7fd5994055ff77212a852a994d7eee94ebfadbc904ce6ea53b1535a93

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 256.3 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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 92e8a0c6cb2ee9bae6ab49c9efc93084a84067dda28515763e5b9dabd5be2dde
MD5 366b8315ae2583fccb590b2b661a0041
BLAKE2b-256 560d0c454d77accdc7192416fdfe24003a5f8dd42b5e88f09bd62a27f35264b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f9c1b6d391532a168d5001b17fc6f7ecb298823d732e40a5e1d36113f758fd0
MD5 4db5446c9efe28724c3a9d523847be88
BLAKE2b-256 eeb1cb4662ece2ee6088ffc5d06c95cb24dee3e88a39c7dcac50892df5f8a059

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 51a2d1f44c1580ba2750d122b72c5fa5f555fb05e8519b70df13f487f943f3f3
MD5 14f53cfc2186ad9798943f1b287e9110
BLAKE2b-256 6aa009fe2b1cdcd56c9fcdc4963b2c2a83d76a37dbd9bf94d7604c0c05c8b485

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c7c2037f6966ce6ddc15ca004d156feda88522fc18c3b2e6a6c3b7861b5cd02
MD5 03da297b12db405391ef99834864f3db
BLAKE2b-256 da1b1cdda7676411ea08ba50366817a888d74007693ecfd317885f044caa732a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23505f70a646a93a0fece40a0961aead0bb26d0e4af3226fc7acd1e447601931
MD5 bf65f15b5547ebcfec5247b30dc25ca0
BLAKE2b-256 02bcf31fb0e04498559b7c708fd28cc8ace19abae12fbedb0d4e08701f9c9a3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 acaf64d713b775702fe644a80151bdea84e9f4867bc36b2b03ffba120fca7c34
MD5 439a02276c4c3f78364a0ebbf31e4849
BLAKE2b-256 f318ee6b3dd48506783bf2b86a7c64936c031febdc52b8a6c17314aa6e13e027

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 256.4 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.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fd073749e5ae05b7c794bba3e619375a79cea363539b369060c81c242749e5d5
MD5 8abf84d20a157e9b3f3d51da4ddf1530
BLAKE2b-256 fee21d7d07f9edd93e289e9f8ad79f1aac5c287763cf6c3c4e317f82aa81f276

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b907f443d4f1758f68c910681607a6ecebd3042f6af617734fe2e79e93ca1f52
MD5 8f0248f640d362651f9f36bb97fecdf4
BLAKE2b-256 d06b3468546106fb241bf9bd7af63915fc0424956b942915e79efa5910547467

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 03b6b6794c2452fe579de3d1dbf38f512695dae480534d4bb0694fd815de167a
MD5 f0082d1ea783a21e7c4af8a16cf9a986
BLAKE2b-256 867ee0872344c3459fe242bb3ca24c4243e48ba0e0a39a9ea9098daad781c0eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21632aa60853acc56609d5d5e7292cb837619b50e361afdd793f5947eae9854b
MD5 33ea02ae85220ea4e30fb27cdc84500f
BLAKE2b-256 e2cad5f36d794a63f4ac2d2fb356f6c61a7d3181b61e234bbc1e35c99b990900

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b37b4c8260c6eac6220e0f9a4371e8c587d438710c66a06d28601b24f762aaa5
MD5 a0a704ed4e675af932e9fbaf502e3b33
BLAKE2b-256 b99737c45d4df3cf276ac22b774b58e10440be43a29fdfacccb54ff444192215

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8ccb3010e6eddb79d55a3c02000079298ecd1a5cafd44ddc4d3a2d6a04cb1267
MD5 c3e0b597b0c273b3c8dcee71ca944704
BLAKE2b-256 02fd33559e0cbf0924ac33ff2b11c206cf1fc751ca249c0d08f13dc237208d0b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 256.4 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.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ae0d4ff5efb99bd0d462254ed49327b5e9c61b5a8bae473cd1a13a2a48b7f831
MD5 50b4286adb0352bf9127bc816fa10c3b
BLAKE2b-256 24b1672bb27f2ce01af1eb412b725310fbdbf42d4b610e76f7948968cc07ee06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed37b1d5b49f6c560b45da0a6054ee51dbfb37e162b7aae44288e51745415c29
MD5 44a0154d1be2d4cc69a02b65ae20e9c1
BLAKE2b-256 050307df86fb16f71fbc76a2a1a5c3c2809d349b07d1e7a325843fef49917264

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1c32cab656bbafef7ff76e21914d1c30884520ab98334feb634c6e412e0bc1a5
MD5 4ae412fe7eeb7155ed28a3fc06cc79e6
BLAKE2b-256 64be5a9f9315cc0157c53884af7eb17c5998bb524408f55c960f94da1a29ae8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a7acebaa4a16cc13293e26100b799fe301bc674379ca4060271bd2deb088033
MD5 af65c370d2dcc85bd8389667b9a9193f
BLAKE2b-256 5f18527dd2cc292d0ac880dcac3989495d6659c846bfab7e5bca226609345af5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f7850130bae7247cdd815cf08048b80f39156cce081e6cb10caaa6b49a4d35a
MD5 e034d6a5e7b571c05a1fe94b35a59cf3
BLAKE2b-256 7f8fac9dbcbc75457aab144bfc67cf01e5e373dcaf03971abff1c1699734294a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a38a8595b334140508191bbd53240590908c813eb76a3a504d5a53d7c453d30d
MD5 dbb19ac88e82ca1bdbc8f0d7608dd56c
BLAKE2b-256 ebc395341695ae948ec36bbc473ef7a0af23acaf1a9959248fe0e201dcf9644c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.6.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 257.1 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.6.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 43052e6897007e0f4f9f1ed07db3abb6e06a9b423129abf802ab4df1bb427d90
MD5 17f7b517a95f4cb6b9da085da110406c
BLAKE2b-256 9f0737c1d6e3c31334c7492126a2c0c56b9c6daf62a5a58421a4012ff6e1411c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93fc9f10a3ac32ec0eff39dbeeccab85a2646fb699d6c8c651461b38837ae9e5
MD5 64d42363a8a8f44c815e8173fe459512
BLAKE2b-256 918f3aad3b61f0b901f871264955798156b3174119b1cbee4261c85fedd49154

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 07906fd5308126f2dc4f776103e50152312af75a1642aa766f26c0b8e13670c7
MD5 de01b875eac4c6a7baa0327f20605e52
BLAKE2b-256 4ee6d5349475d7aafb9b877d1501340a2a5288ad35a78b5ae1427732e5077f1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.6.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a4485ae92c71dfa65fcb97a785d5271a755c8115d59606a110532e8878ce4a08
MD5 4de87a62aed4d348fbe169133391641f
BLAKE2b-256 229a9f0317f0a5aeb35f00d7712a84190dadf72796e50df4a2adcf38939692eb

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