Repolode
nmslib

nmslib/hnswlib

HNSWグラフアルゴリズムによる高速な近似最近傍探索を実現する、Pythonバインディング付きのヘッダーオンリーC++ライブラリ。

スター
5,365
フォーク
862
未解決の Issue
311
最終コミット
2 か月前

これは何?

Hnswlibは、近似最近傍探索向けにHierarchical Navigable Small World(HNSW)グラフを実装したヘッダーオンリーのC++ライブラリです。高次元ベクトルをインデックス化することで、クエリベクトルに最も近い候補を総当たりで比較するよりはるかに高速に見つけられます。ただし、返される結果は厳密な最近傍ではなく、近似値です。

NumPy配列に対応したPythonバインディングが付属し、L2距離、内積、コサイン距離をサポートします。インデックスは段階的に構築でき、ラベルを再挿入して更新したり、削除済みとしてマークしたり、ディスクに保存・読み込みしたりできます。Pythonのインデックスはpickle化も可能です。C++からカスタム距離関数を指定することもできます。

C++コアの依存関係はC++11のみです。最近のバージョンでは、ストリームを使った保存・読み込みと、-fno-exceptionsでコンパイルする場合に選択できる例外なしAPIが追加されています。

主な機能

  • 01C++11以外の依存関係がない、ヘッダーオンリーのC++実装。
  • 02NumPy配列に対応したPythonバインディング。L2距離、内積、コサイン距離をサポート。
  • 03段階的な挿入、既存ラベルの更新、削除済み状態の設定。
  • 04インデックスのディスクへの保存と読み込みに加え、Pythonでのpickleに対応。
  • 05真偽値関数による検索のフィルタリングと、C++でのカスタム距離関数。

ユースケース

  • 埋め込みベクトルを使ったセマンティック検索やレコメンドのバックエンドを構築する。
  • 特徴ベクトルを使って、類似する画像や商品を見つける。
  • 大規模な依存関係を追加せずに、C++アプリケーションへ高速な最近傍インデックスを組み込む。
  • アイテムの追加・更新・削除が頻繁に発生するベクトルインデックスを管理する。

使う前に知っておきたいこと

  • README に記載されているバージョンは 0.10.0rc2 です。リリース候補版であり、安定版として扱わないでください。
  • Python でのフィルター検索は GIL の制約を受けるため、マルチスレッドモードでは処理が遅くなります。

収録されている特集

トピック

よくある質問

hnswlib とは?
HNSWグラフアルゴリズムによる高速な近似最近傍探索を実現する、Pythonバインディング付きのヘッダーオンリーC++ライブラリ。 Hnswlibは、近似最近傍探索向けにHierarchical Navigable Small World(HNSW)グラフを実装したヘッダーオンリーのC++ライブラリです。高次元ベクトルをインデックス化することで、クエリベクトルに最も近い候補を総当たりで比較するよりはるかに高速に見つけられます。ただし、返される結果は厳密な最近傍ではなく、近似値です。
hnswlib は無料で使えますか?ライセンスは?
hnswlib は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
hnswlib は今もメンテナンスされていますか?
半年以内に更新あり。hnswlib の最終コミットは 2026年9月15日 です。
hnswlib は何に使えますか?
埋め込みベクトルを使ったセマンティック検索やレコメンドのバックエンドを構築する。 特徴ベクトルを使って、類似する画像や商品を見つける。 大規模な依存関係を追加せずに、C++アプリケーションへ高速な最近傍インデックスを組み込む。 アイテムの追加・更新・削除が頻繁に発生するベクトルインデックスを管理する。
hnswlib はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/nmslib/hnswlib

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト