Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Non-Metric Space Library (NMSLIB): An efficient similarity search library and a toolkit for evaluation of k-NN methods for generic non-metric spaces.

License

NotificationsYou must be signed in to change notification settings

nmslib/nmslib

Repository files navigation

Pypi versionbuild & testDownloadsDownloads

Non-Metric Space Library (NMSLIB)

Important Notes

  • NMSLIB is generic but fast.
  • A history of creation of the library is covered inthis episode of the Vector Podcast.
  • A standalone implementation of our fastest method HNSWalso exists as a header-only library.
  • We provide binaries for Python 3.8-3.13 (also 3.14 for Linux) for three OS (Linux, MacOS, Windows) and two types of CPU (Intel, ARM).
  • All the documentation (including usingPython bindings and the query server, description of methods and spaces, building the library, etc) can be foundon this page.
  • Forgeneric questions/inquiries, please, usethe Gitter chat: GitHub issues page is for bugs and feature requests.

Objectives

Non-Metric Space Library (NMSLIB) is anefficient cross-platform similarity search library and a toolkit for evaluation of similarity search methods. The core-library doesnot have any third-party dependencies. It has been gaining popularity recently. In particular, it has become a part ofAmazon Elasticsearch Service.

The goal of the project is to create an effective andcomprehensive toolkit for searching ingeneric and non-metric spaces.Even though the library contains a variety of metric-space access methods,our main focus is ongeneric andapproximate search methods,in particular, on methods for non-metric spaces.NMSLIB is possibly the first library with a principled support for non-metric space searching.

NMSLIB is anextendible library, which means that is possible to add new search methods and distance functions. NMSLIB can be used directly in C++ and Python (via Python bindings). In addition, it is also possible to build a query server, which can be used from Java (or other languages supported by Apache Thrift (version 0.12). Java has a native client, i.e., it works on many platforms without requiring a C++ library to be installed.

Authors: Bilegsaikhan Naidan, Leonid Boytsov, Yury Malkov, David Novak.With contributions from Ben Frederickson, Lawrence Cayton, Wei Dong, Avrelin Nikita, Dmitry Yashunin, Bob Poekert, @orgoro, @gregfriedland,Scott Gigante, Maxim Andreev, Daniel Lemire, Nathan Kurz, Alexander Ponomarenko.

Brief History

NMSLIB started as a personal project of Bilegsaikhan Naidan, who created the initial code base, the Python bindings, and participated in earlier evaluations.The most successful class of methods--neighborhood/proximity graphs--is represented by the Hierarchical Navigable Small World Graph (HNSW) due to Malkov and Yashunin (see the publications below). Other most useful methods, include a modification of the VP-tree due to Boytsov and Naidan (2013), a Neighborhood APProximation index (NAPP) proposed by Tellez et al. (2013) and improved by David Novak, as well as a vanilla uncompressed inverted file.The history of NMSLIB is also covered inthis episode of the Vector Podcast

Credits and Citing

If you find this library useful, feel free to cite our SISAP paper[BibTex] as well as other papers listed in the end. Onecrucial contribution to cite is the fast Hierarchical Navigable World graph (HNSW) method[BibTex]. Please,also check out the stand-alone HNSW implementation by Yury Malkov, which is released as a header-only HNSWLib library.

License

The code is released under the Apache License Version 2.0http://www.apache.org/licenses/.Older versions of the library include additional components, which have different licenses (but this does not apply to NMLISB 2.x):

Older versions of the library included the following components:

  • The LSHKIT, which is embedded in our library, is distributed under the GNU General Public License, seehttp://www.gnu.org/licenses/.
  • The k-NN graph construction algorithmNN-Descent due to Dong et al. 2011 (see the links below), which is also embedded in our library, seems to be covered by a free-to-use license, similar to Apache 2.
  • FALCONN library's licence is MIT.

Funding

Leonid Boytsov was supported by theOpen Advancement of Question Answering Systems (OAQA) group and the following NSF grant #1618159: "Matching and Ranking via Proximity Graphs: Applications to Question Answering and Beyond". Bileg was supported by theiAd Center.

Related Publications

Most important related papers are listed below in the chronological order:

About

Non-Metric Space Library (NMSLIB): An efficient similarity search library and a toolkit for evaluation of k-NN methods for generic non-metric spaces.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors33


[8]ページ先頭

©2009-2025 Movatter.jp