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: 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 = {1.0.0},
year = {2022},
month = jun,
}

Project details


Release history Release notifications | RSS feed

This version

2.3.0

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.3.0-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.3.0-cp311-cp311-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.3.0-cp311-cp311-macosx_11_0_arm64.whl (396.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl (411.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.3.0-cp311-cp311-macosx_10_9_universal2.whl (774.5 kB view details)

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

usearch-2.3.0-cp310-cp310-win_amd64.whl (254.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.3.0-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.3.0-cp310-cp310-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.3.0-cp310-cp310-macosx_11_0_arm64.whl (396.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl (410.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.3.0-cp310-cp310-macosx_10_9_universal2.whl (773.5 kB view details)

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

usearch-2.3.0-cp39-cp39-win_amd64.whl (254.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.3.0-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.3.0-cp39-cp39-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.3.0-cp39-cp39-macosx_11_0_arm64.whl (396.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl (410.5 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.3.0-cp39-cp39-macosx_10_9_universal2.whl (773.5 kB view details)

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

usearch-2.3.0-cp38-cp38-win_amd64.whl (254.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.3.0-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.3.0-cp38-cp38-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.3.0-cp38-cp38-macosx_11_0_arm64.whl (395.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl (410.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.3.0-cp38-cp38-macosx_10_9_universal2.whl (773.1 kB view details)

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

usearch-2.3.0-cp37-cp37m-win_amd64.whl (255.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.3.0-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.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (406.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: usearch-2.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 255.8 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.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fd4a0cacf8fcb639fa6380b3cbc9322ee55df5120006c8d6add1c8c168e2a5b5
MD5 cc33862a3a003c7f7587b3a9df69ed7c
BLAKE2b-256 08a9943f2cff9b0a31b9e921ef7ba09edd8b1618e6a697a210f8f95024eed518

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8911dfdfc096004b653c5f5c133fa1e2457149eeb2c51b5b35c28e9d72ea960
MD5 8426de5bd253ad5c109d62744c793719
BLAKE2b-256 25b0e24dcd8fcbbe96fcd2574d0dce7c48153906e8669195c4ae5100b24363fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f75c08039e4c1edfae63700b4e96aa4a3ae0626550c666a80a16349546253c60
MD5 9c61aa73022c63f89bcc7d5401ecc145
BLAKE2b-256 f95493eb8738fa87f90a31d2cb6fc15319466476d845cb9aa9bd2081cf3207e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 243b618f2cdb203e2d9c2840e6c6b3869b9f8d87c74a0e24ef73968167260434
MD5 f13ed8a12ed2b978e6290559f566cc97
BLAKE2b-256 44e4aa4901ac6878b3170510d1562d69ccf50758f267e0069393befa2723f165

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f789b00731dac678e16e65352d9ee65fbd99feb2b261024046a30ba688a32b04
MD5 e91d7631ee9294ab09d79450881ccb5d
BLAKE2b-256 3b1505b2aeda5ccc7de03b93539396a9871d3aac6f5997aae9d347d24f544429

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c69a3fbd310a10703d3ed55565a4c412b36065734191119480a68ec7f07cc96f
MD5 5e7c17fc88b8f985dc854bb487e72705
BLAKE2b-256 2e5bdc9e55c9804ad59c032401e6a3074409c6c848e8ed6e1f2c66a33d290f00

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 254.5 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.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f741dfe957e21f58b6eda6a303c550a2f8b2bd7fb64ffa12d41dc5d434492953
MD5 6551b12f6346ab87b61606c5c9736b5f
BLAKE2b-256 0cace8f4b4ea3040acf9de8a1769617220d0d87c7c0f2180c535e10e09dbffaf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec8116129a1e3d589b7ba2742c811cef44477a8d849587db1cb34448cb9d3e09
MD5 deb2bbf3c0145b75aa405a0f15bd5841
BLAKE2b-256 fe1e78f146743893ff3b41739deb43318a26341751e57615e1df0b1d5c06b639

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0dc4f40c59f173e092cea2d0e01b0746ac47925d736f3ccf9c32a6ccb3c0cd2a
MD5 d74a513b22b1320340656e8fd79a54c6
BLAKE2b-256 257faa282b33bfa877c207a3d06a67b7551ff4f6b53b5a0886e712bab80dfb83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77d74c1bfc8d6dc292f8e00ba155ff014e610b3c32d6f0d42c22481b9f180725
MD5 6d9577294594cde6d55b09b8d93579d1
BLAKE2b-256 474065c88fb8d403999edfe63f4328d494698f2745a8ff4b3ea6087e00b57434

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2ecaabc754bcf60a7809dfee7c6ad7d37130fe9abfeaa15822ffc427fbed930
MD5 d04c2122cdadd0f1afacb01dd750c62d
BLAKE2b-256 06af4fbb95dc76ffd2e008f987227d440627855062122573af3708aa342c39d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7bcbc8d268747c5d06889d201a01f0222af3d8be62b43060ddf97bd74be99faa
MD5 e292264bf31933ce1f915058db02439b
BLAKE2b-256 7ac89874331cfcf82a43692480a63f3c7e5e3660bdfe1e804552478d9d53ae0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 254.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.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ffcfc739c9d8c469047e8d8731cf120389a6a15b88cbe7f180af388d290ca3fa
MD5 23737ebcd34c5367dcb2254310491c92
BLAKE2b-256 b30faa178d76b2d949cee10dbc14412a1116cae58c366b36776c1b8b4e62beba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e565178853f5c4da1fc38c29f04764c6e1f474fef0693315681caabfa5dc6705
MD5 04e62f36e2eefc55170ea6ead97258fc
BLAKE2b-256 ffa9d50c5c5089527badcf2745027f3cc32ad24f2a25511dd3df4d11853dc69b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8e870a93ca3ff085a148ee680c7311184f6c6610653f93241215b576af491f48
MD5 1aca0a4e60f1bf7c4bc41b8722abb323
BLAKE2b-256 26882ec11cadcdc0e0ce546067a7cbc21ff9e71e175f0175d919cf582df147e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6dd93b534530b3db56304d91f99e561c77455e0867931036f1613e04b126e31f
MD5 12fc851cd4cd46239396d12eb1942818
BLAKE2b-256 8e284407b8ac6da0cd95503d64e50bdae12f160fdb250458fdd7e137368872b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c1f30e9c49c8eecf3e764b0ceeb3f2e8e86a53623d8c2f961b0982bd134faa28
MD5 2418046743a608d52378ea2d11580baa
BLAKE2b-256 d667a6b909662f2872a968ee21704a63aaa0e9dfc9f95563c07d28e3e21818ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 57d5d8bb211add9d57176769808fa6b06ad406d2931f80a43cf39f041ad9d604
MD5 0240a2bfd0baeb57b8008bdecfc04715
BLAKE2b-256 65f3f5846c320383240452439106a038e9ec33083163e9e1947d867d7844dd02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 254.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.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 101f38ef017c907f93df739a55fd8cc60ec3acb9c2315e22572ca311ed5df42b
MD5 42bb0b07a59912906530f4398563f368
BLAKE2b-256 5b31fdb427eb8e5240c5430fea0a6cae966055e6ba06e52c8458a2ceb71cd6db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc235d61568af1166c0d2f16c21cc47103823e0e151ba07285a641780f02b204
MD5 fb6bbaa68ffb3ca31e774a744c0c1004
BLAKE2b-256 9be9854b7ba880a73f9e05868bf768b56fde4464726d41b76c9d625ea134190d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4adb6a0f873cf1caefbeedf95880807d739671b2dd622a6128521a3eec577e7f
MD5 6164fc31ceb4212c24da9f7d68aaddcb
BLAKE2b-256 9db30fc151036004ab386cf5575810507808147e274451a091621fe87f4aeda7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fef6595c94287f670d852a4778d58f4f9f85302d99c74cc02d3b51913403f067
MD5 4506aa715c2958ec14869e5e32cdd362
BLAKE2b-256 9181db234853bcaff519c97836033f8cdd946386544a30f7f243cdd08769e451

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e928c0f1f8b0e13d79eba8b090bc8d6dc01e314a55bd65124ea7bf07a88c19ee
MD5 c9c1bd23d10ce1ac05f57be9780a0439
BLAKE2b-256 2958852eb39f8bb6b814a6773a527de05a8c2686a006ee91b7269109a1377965

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6471a55a77cbcfcabd58fea9e2f646cde72eb21120e3b91b231ea3444a2a6e83
MD5 9eaff2d442dca8081a529b48541bcd74
BLAKE2b-256 614b88ecf9df45e1e268b7a4eecf4c30082604a44422bcad67143eca845b7fe5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: usearch-2.3.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 255.4 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.3.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 94723806a904279d0bfb1e9de0b50b55e5939bda46178622ecee14982cfd69ad
MD5 91123a725ed7cfd1ada57b6e4912f5ff
BLAKE2b-256 029908f65663265b409baa109a8f320e8bf213115e5f5705ff85c9926ea14dc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d87846dc3a465460c98af5c90373d5f64eccbc7a2c47f25127ae8b608a89d42
MD5 5c091bd7d5a308594c413cc1a834159a
BLAKE2b-256 bb7b974d6e39ddea1e7fba235b69d85e4bd407d8b74fcc776074a9261327e755

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 62a6cd79ae7288ea26c22961a7d23980fb3bfdc95be449d6b468f13d240da55d
MD5 a5d33cad91ef98e996e87ff193c6e3cf
BLAKE2b-256 cb05724c402fb0613a6d2ac6d95a747eefd473b6eed4c95be135f188d88f60fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a2b93c25d6a77580822b4c142b78a75b6aa236829374df6a8abdc6d18fc6af90
MD5 c15f1384fb227fcba50a8538a000d4de
BLAKE2b-256 7071d2221c5b6ea1f0b8666628b0201dd7935f210f1f7cae0b9d5156663d3ad9

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