nmslib  by nmslib

Fast similarity search for non-metric spaces

Created 12 years ago
3,564 stars

Top 13.5% on SourcePulse

GitHubView on GitHub
Project Summary

Summary

NMSLIB (Non-Metric Space Library) provides an efficient, cross-platform toolkit for similarity search and evaluation of k-NN methods, with a strong focus on generic and non-metric spaces. It enables developers and researchers to implement and benchmark advanced search algorithms beyond traditional metric constraints, offering significant performance benefits and integration capabilities for applications like Amazon Elasticsearch Service.

How It Works

The library is designed for extensibility, allowing the addition of new search methods and distance functions. Its core strength lies in approximate search for non-metric spaces, featuring implementations of state-of-the-art algorithms such as Hierarchical Navigable Small World (HNSW) graphs, VP-trees, Neighborhood APProximation index (NAPP), and inverted files. NMSLIB offers direct C++ and Python bindings, alongside an optional query server built with Apache Thrift for broader language interoperability. The core library boasts no third-party dependencies.

Quick Start & Requirements

Documentation, including Python bindings and query server usage, is available via a link mentioned in the README (specific URL not provided). The core library has no third-party dependencies. A standalone, header-only HNSW implementation (HNSWLib) is also available. Specific installation commands, Python version requirements, or hardware prerequisites are not detailed in the provided text.

Highlighted Details

  • Offers principled support for generic and non-metric space searching, a novel capability.
  • Integrated into Amazon Elasticsearch Service, indicating production-readiness.
  • Features the highly efficient and robust Hierarchical Navigable Small World (HNSW) graph method for approximate nearest neighbor search.
  • An extendible architecture facilitates the incorporation of custom search methods and distance functions.

Maintenance & Community

General inquiries can be directed to the Gitter chat, while bugs and feature requests should be filed on the GitHub issues page. The project lists multiple authors and contributors. Specific community channels (e.g., Discord, Slack) or a public roadmap are not mentioned.

Licensing & Compatibility

The library is primarily licensed under the Apache License Version 2.0 (http://www.apache.org/licenses/). However, older versions or embedded components may carry different licenses, such as the GNU General Public License (GNU GPL) for LSHKIT (http://www.gnu.org/licenses/), which could impose copyleft restrictions. Compatibility for commercial use should verify reliance on specific components and their associated licenses.

Limitations & Caveats

The provided README does not detail specific limitations, known bugs, or unsupported platforms. The focus is on the library's capabilities and broad applicability.

Health Check
Last Commit

5 days ago

Responsiveness

Inactive

Pull Requests (30d)
0
Issues (30d)
0
Star History
14 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.