A fast, single-file similarity search and clustering engine for vectors and arbitrary objects with multi-language bindings.
USearch is a fast, open-source similarity search and clustering engine for vectors and arbitrary objects. It implements the HNSW algorithm to enable efficient approximate nearest neighbor searches, supporting a wide range of data types and custom metrics. The project solves the problem of scalable, high-performance search in applications like semantic search, molecular similarity, and GIS.
Developers and data engineers building applications requiring fast similarity search, such as semantic search systems, recommendation engines, chem-informatics platforms, and geospatial analysis tools. It's also suitable for database integrators and researchers needing a lightweight, multi-language search library.
Developers choose USearch for its exceptional speed (up to 10x faster than FAISS), minimal dependencies, and broad language support. Its single-file design, user-defined metrics, and memory-efficient features like uint40_t and disk-based serving offer unique flexibility and cost savings for production deployments.
Fast Open-Source Search & Clustering engine × for Vectors & Arbitrary Objects × in C++, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolfram 🔍
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show up to 10x faster indexing and search than FAISS, with SIMD optimizations and hardware-agnostic support for f16 and i8 data types.
It's a minimal C++11 header library with no mandatory dependencies, making it easy to audit, deploy, and integrate across environments.
Native bindings for 10+ languages allow reuse of prebuilt indexes in diverse tech stacks, from Python to Rust and Swift.
JIT-compiled user-defined metrics enable custom distances like Haversine for GIS or Tanimoto for chemistry, extending beyond standard options.
Key functionalities like user-defined metrics and filter predicates are missing in several language bindings (e.g., Java, JavaScript), limiting cross-platform parity.
Implementing custom metrics requires integration with external JIT compilers like Numba or Cppyy, adding setup complexity compared to drop-in solutions.
Capabilities like variable-length vectors and 4B+ capacity indexes are only fully supported in C++, restricting use in other languages for niche applications.
USearch is an open-source alternative to the following products: