Skip to main content

Smaller & Faster Single-File Vector Search Engine from Unum

Project description

USearch

Smaller & Faster Single-File
Similarity Search Engine for Vectors & 🔜 Texts


Discord     LinkedIn     Twitter     Blog     GitHub

Spatial • Binary • Probabilistic • User-Defined Metrics
C++ 11Python 3JavaScriptJavaRustC 99Objective-CSwiftC#GoLangWolfram
Linux • MacOS • Windows • iOS • 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, primarily focusing on user-defined metrics and fewer dependencies.

FAISS USearch Improvement
Indexing time ⁰
100 Million 96d f32, f16, i8 vectors 2.6 h, 2.6 h, 2.6 h 0.3 h, 0.2 h, 0.2 h 9.6x, 10.4x, 10.7x
100 Million 1536d f32, f16, i8 vectors 5.0 h, 4.1 h, 3.8 h 2.1 h, 1.1 h, 0.8 h 2.3x 3.6x, 4.4x
Codebase length ¹ 84 K SLOC in faiss/ 3 K SLOC in usearch/ maintainable
Supported metrics ² 9 fixed metrics any user-defined metrics extendible
Supported languages ³ C++, Python 10 languages portable
Supported ID types ⁴ 32-bit, 64-bit 32-bit, 40-bit, 64-bit efficient
Required dependencies ⁵ BLAS, OpenMP - light-weight
Bindings ⁶ SWIG Native low-latency

Tested on Intel Sapphire Rapids, with the simplest inner-product distance, equivalent recall, and memory consumption while also providing far superior search speed. ¹ A shorter codebase makes the project easier to maintain and audit. ² User-defined metrics allow you to customize your search for various applications, from GIS to creating custom metrics for composite embeddings from multiple AI models or hybrid full-text and semantic search. ³ With USearch, you can reuse the same preconstructed index in various programming languages. ⁴ The 40-bit integer allows you to store 4B+ vectors without allocating 8 bytes for every neighbor reference in the proximity graph. ⁵ Lack of obligatory dependencies makes USearch much more portable. ⁶ Native bindings introduce lower call latencies than more straightforward approaches.

Base functionality is identical to FAISS, and the interface must be familiar if you have ever investigated Approximate Nearest Neighbors search:

$ pip install numpy usearch

import numpy as np
from usearch.index import Index

index = Index(ndim=3)

vector = np.array([0.2, 0.6, 0.4])
index.add(42, vector)

matches = index.search(vector, 10)

assert matches[0].key == 42
assert matches[0].distance <= 0.001
assert np.allclose(index[42], vector)

More settings are always available, and the API is designed to be as flexible as possible.

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: Limit number of neighbors per graph node
    expansion_add=128, # Optional: Control the recall of indexing
    expansion_search=64, # Optional: Control the quality of the search
)

User-Defined Functions

While most vector search packages concentrate on just a few 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 various applications, from computing geospatial 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)

If you pass 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. Instead of constructing one extensive index, you can build multiple smaller ones and view them together.

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 cluster entries much faster than using a separate clustering algorithm implementation. Essentially, the Index itself can be seen as a clustering, allowing 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 to 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, splitting it into more parts, all the same arguments supported
sub_clustering = clustering.subcluster(min_count=..., max_count=...)

The resulting clustering isn't identical to K-Means or other conventional approaches but serves the same purpose. Alternatively, 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 AI will 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 differs from searching for every entry, requiring 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 be useful 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 the post: Combinatorial Stable Marriages for Semantic Search 💍

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 binary 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_2023,
doi = {10.5281/zenodo.7949416},
author = {Vardanian, Ash},
title = {{USearch by Unum Cloud}},
url = {https://github.com/unum-cloud/usearch},
version = {2.8.9},
year = {2023},
month = oct,
}

Project details


Release history Release notifications | RSS feed

This version

2.8.9

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

Uploaded CPython 3.11 Windows x86-64

usearch-2.8.9-cp311-cp311-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

usearch-2.8.9-cp311-cp311-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

usearch-2.8.9-cp311-cp311-macosx_11_0_arm64.whl (385.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

usearch-2.8.9-cp311-cp311-macosx_10_9_x86_64.whl (397.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

usearch-2.8.9-cp311-cp311-macosx_10_9_universal2.whl (751.6 kB view details)

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

usearch-2.8.9-cp310-cp310-win_amd64.whl (257.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

usearch-2.8.9-cp310-cp310-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

usearch-2.8.9-cp310-cp310-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

usearch-2.8.9-cp310-cp310-macosx_11_0_arm64.whl (384.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

usearch-2.8.9-cp310-cp310-macosx_10_9_x86_64.whl (396.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

usearch-2.8.9-cp310-cp310-macosx_10_9_universal2.whl (748.1 kB view details)

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

usearch-2.8.9-cp39-cp39-win_amd64.whl (253.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

usearch-2.8.9-cp39-cp39-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

usearch-2.8.9-cp39-cp39-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

usearch-2.8.9-cp39-cp39-macosx_11_0_arm64.whl (384.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

usearch-2.8.9-cp39-cp39-macosx_10_9_x86_64.whl (396.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

usearch-2.8.9-cp39-cp39-macosx_10_9_universal2.whl (748.6 kB view details)

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

usearch-2.8.9-cp38-cp38-win_amd64.whl (257.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

usearch-2.8.9-cp38-cp38-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

usearch-2.8.9-cp38-cp38-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

usearch-2.8.9-cp38-cp38-macosx_11_0_arm64.whl (384.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

usearch-2.8.9-cp38-cp38-macosx_10_9_x86_64.whl (396.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

usearch-2.8.9-cp38-cp38-macosx_10_9_universal2.whl (747.8 kB view details)

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

usearch-2.8.9-cp37-cp37m-win_amd64.whl (258.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

usearch-2.8.9-cp37-cp37m-manylinux_2_28_x86_64.whl (1.4 MB view details)

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

usearch-2.8.9-cp37-cp37m-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

usearch-2.8.9-cp37-cp37m-macosx_10_9_x86_64.whl (392.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 26407968bf7f13cc9a0ced6c9234e357ccc5bd7c0dfa7a4a46f48b903ac77296
MD5 a3e766b1c1da1fb8658fa33e581873cb
BLAKE2b-256 34316ce55b9d165392b5adfd8f1d1abc46ae07e4dbafe1cac65560361fa66df3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 31c1ff0177b918e20f8a4edef90a2b211683ac25a03d131155336c145e2b29f1
MD5 d951a3e6dac471f5d97ce0de3fac1bab
BLAKE2b-256 22402a7be2201e26eb2f50aaeae8746d22d36347fe81a7b139c77a4a41926568

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e92378c796f0c741e964b5e772861b1c27f36efc726c0bd1dc33f29e75f0d7e4
MD5 3d779861987ba8ea44516f1f6988b614
BLAKE2b-256 b71e87965ee08f064074e81b99f1a87fa3043e7421551f3812b1acf88ea7a792

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c5e0525361d6a4a137d121abc2f9468d6e4ab7309e2c6c202d28a6a24cad52f
MD5 0f594bebb64463d96b6fc53cd014e7e4
BLAKE2b-256 4d50030b55552fafe505de976b37a5ae4c1886bef7d3dcafc3ad7b057624db20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef3b420a179dc04133f01f5e6cfbe049045dda8dcba127e63592372c5b24e3c7
MD5 980616bab8e74e637780fe167294ae7c
BLAKE2b-256 ee48b866231b12f90d237604d3abd62cd43dd8b51f2918f6bd7e1dcc22ae7fdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e33c1471de024059c4909f4c5e443232a2067e28843e0140e67dc62a927010ef
MD5 4a2332f9676d5e85c4755c246ee32d95
BLAKE2b-256 b0131b90494ac79edd5ebf2ad8844c2d49ff404712f085e0baf8a2570d8f48f1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8cedc0f28531757016f607a29c23f9b6abf1c3da61497fa093189ae4695c14bb
MD5 be1466a5f80e707f98508bd473e5bb45
BLAKE2b-256 03aba8d2c6ab93a33b790dd1a529485d525ba050a57b77a8bc802ff055035052

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65dd21bc775601501ea2a9709a8b50e70a55c067d48c3218bd389c32368e43d3
MD5 e1e8aa439e37d355a9a54173d14c46b7
BLAKE2b-256 a5b50ea15f285919ea222b085a2c47ba2d963a2888e973e9ef7efdbd7724f303

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3950551be832477cf02b81c34ad389c14f4fe7f384a771c8ed7ed268a9569651
MD5 f27e58b9cb703db8ae4709fad5da3c78
BLAKE2b-256 62a16e1da4b5017a1394fca4b2a2ee6385294a0f49fdbd19a5392c07ad4b890c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 127875c775db1442834a4108fa1731eaeabe2c587a4ccab29b7ae27718d808fe
MD5 0c43d8fc684f70ebae7c0a460edf4fb4
BLAKE2b-256 2023d34d824ffcea20e79726be8feaa1b711e2f555f904e3a6848b14f72b5104

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 63285c05daccd89e0b75f83b9aa04c00d30062e628c4c36a71d1475760b4db56
MD5 c20e63a60a0ccd069023ddbbb91d69f5
BLAKE2b-256 da1fa307f0ddd66f0bafc7fa91bd692fcc8f2c257a8381ab75cccf65e316bc62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 58bd53647976ac75b33005c9beec42d0136d4f031bda87a92800d76f46f50e69
MD5 4b2ebc7fc95f8877a4b505347c996d17
BLAKE2b-256 8cd5f1334509a1aea69605b36738a928e69fa9ed9a474d4e07e9539e9cf9f486

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 931a4cff97643596cdf38bf00235a9ce6538816ebc3be09d08c4328b47670cd0
MD5 e344ba9dd07832d32805d13f3e109558
BLAKE2b-256 573ca4f38427fa4f11c3bd42af6120f8589a42115eccd532b6525090827dde54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2fc60a3004848e4d8412a79589f2c225913e5f12bd93cae25fa6ef7c7f2ea2e1
MD5 130f8c4d2858865febb16cdf8cd45108
BLAKE2b-256 f5dee17a32f4b0c69c729a06d7faa7602ba8f9869b1a7bfdbf7d0a82e2398fa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 795fc8a329996a2b48ed124b7b43294a4634925341dfc6680505352625cf493a
MD5 d98513bd979836cd426fc22d2550094a
BLAKE2b-256 c0ab2edacaef4fa22514a93409522875c3da06332d6d9359bcb55fc3930d8b4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 639c87a54e104bc2db6b8d4abbc267c388ed077464c9f7bd038fdf62c8873953
MD5 a687588998fde9658102ef26cde13336
BLAKE2b-256 20070bbdfde6cb19e72ec1071e5c35cc85857828cff0157d7f2874353136a957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 031c799bcac9b86b07d1b7e4ade490beeaeb4e9f0795365a7625f759257f337e
MD5 0befd6a55d984d6057db54b2844c1299
BLAKE2b-256 d3d3b771304d2808c33ddb6998f9284b1c52ce06739ebcf3c651853083a872e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1ca467c2a7428d5af79155ebc6c5be90271bdc2de9a6c47ec16ba23e8d5b1d7f
MD5 961cd16c2a68c230ee1885a6b2c84378
BLAKE2b-256 e7d2c240824611696c4478d596548e002244312eb776310252967ad13cc90193

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 045f64e8c3cfd42474a7f671d90908ec5d1a82c453715662f6adb22403739bba
MD5 9c92c77a6ea88771cc77f04e352557c8
BLAKE2b-256 f0e2827d85fb4bb2d2cf48a6acd36782361dcf19731813d49bcfcf473175e7c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e2bb5b52269e84e783b2041bb078e07929e073e31bf72e6398e63eb516f7f3a
MD5 3d989ec5932861a4243219814b675a8b
BLAKE2b-256 cc53bb1e114c373f999307c5a365fd3be0663430a00691f95798978e44011956

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e7b0e64f984902e6c9f13337eb0490d7653ff9e4bc5d3ed455438c2d4d643d99
MD5 0c476e5f71e46e98f2b6479d55ea102c
BLAKE2b-256 87013e0f4cfc6516d2f0000b3efd6f94f31720f53bf24357885b25e22623b805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 edb9930d46e68793eb4dcf0f7665e935c4feff49cbc7828ae95e00a3486b28fc
MD5 93b185ffabd2b45e0ca6fa78ea03e9b6
BLAKE2b-256 650c0a0339aa5c2c6270e93015ac58ee343ec40931b2259c9970be394c276ebd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 65e46897b7d937000eceb6d74554004b68d93569e7be8a3e9b9a86b5932242f3
MD5 0705e220727143ce8585b445137d4e00
BLAKE2b-256 b01670cdfdf6795318e1ac7605ab5a2704529036ac5f31d4c3a6b80b309f3610

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 69fbdc2976bdf4cabd498dbef4254de6b25d1fb2dacdc0e057b286b3df3ee8d3
MD5 2a9864624bf8c8be3e30ffe2ac402e85
BLAKE2b-256 5446dd21828bb6e473f4c3516869cf8cc7f7a8a08b701eb532832cac28873765

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for usearch-2.8.9-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 522e211f799b7f10f12b3e02b2d5c4e82f4821020013ebebc2b720938529955f
MD5 7d7f77f34016ee70e0ceccd729d0312d
BLAKE2b-256 210e4ada80aa758c1b001acc9c9bb9a86d90189df93f22075a2e2dead96491c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 830947e4b962124afb4b8648b015d8fdcf9e4a44011c1df97acd61533f3bbac8
MD5 e6d9c4eaf050c0a1a16d450fb5773394
BLAKE2b-256 3d189ef472d0f3aee138fb617f4287f5c35ef6d97736b2aa77c823f17a0363fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b7b82162b75ce5351c594f16c56df0d37d7829591bea5e28884f6a27ed456a9
MD5 91284331cb0a05751b437e4610ba410d
BLAKE2b-256 d2b62b04592a8f89249cedf4ef057c4c62c50a1ab82d92b0da6e06088dbb3c32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for usearch-2.8.9-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2fbc0f51e1aa84ea5e5bbc47cd49cf5528540f2544a52015ad376b6a0c0bd774
MD5 78664a949aa5717fc61b5300bd942347
BLAKE2b-256 3534cd38b3487bd273f8ecfd9f55aebeedab8b8e063909f27f22fb96d263f79e

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