大規模な近似最近傍ベクトル検索に対応し、インデックス構築・検索・分散サービングのツールキットを備えたC++ライブラリです。
lmcinnes/pynndescent
Nearest Neighbor Descentを基盤に、幅広い距離指標に対応した純Python製の近似最近傍探索ライブラリ。
- スター
- 975
- フォーク
- 116
- 未解決の Issue
- 90
- 最終コミット
- 昨日
これは何?
PyNNDescentはk近傍グラフを構築し、そのグラフを使って近似最近傍クエリに応答します。Nearest Neighbor Descentを実装しており、初期化にはランダム射影木を使い、グラフ内の三角形の長い辺を刈り込んで精度を高めます。再現率がおよそ80%から100%の高精度が求められるワークロードを想定しています。
インターフェースはシンプルです。NNDescent(data)でインデックスを構築し、index.query(query_data, k=15)を呼び出します。インデックスはpickle形式でディスクに保存できます。Euclidean、Manhattan、cosine、Hamming、Jaccard、Wassersteinなど、幅広い距離指標を標準でサポートするほか、ユーザー定義の距離関数も利用できます。
pipまたはcondaでインストールでき、scikit-learnと連携します。ほかの最近傍探索コンポーネントの代わりに使えるKNeighborTransformerも備えています。
主な機能
- 01Nearest Neighbor Descentとランダム射影木による初期化を使ってk近傍グラフを構築します。
- 02二値データ向けや確率分布向けの指標を含む、多数の組み込み距離指標に対応しています。
- 03ユーザー定義のカスタム距離関数を受け付けます。
- 04インデックスの構築とk-NNクエリに絞ったシンプルなAPIを提供します。
- 05KNeighborTransformerとしてscikit-learnと連携します。
ユースケース
- 検索やレコメンデーションで、高次元の埋め込みベクトルから類似アイテムを見つける。
- scikit-learnのパイプライン内で最近傍計算を実行する。
- クラスタリングや多様体学習など、後続処理に使うk-NNグラフを構築する。
- cosine、Jaccard、Wasserstein距離など、Euclidean以外の距離指標で探索する。
クイックスタート
- 1
pipでパッケージをインストールする
pip install pynndescent - 2
データの検索インデックスを構築し、最近傍の15件をクエリする
使う前に知っておきたいこと
- READMEによると、このプロジェクトはまだ発展途上で、ドキュメントも拡充中です。
- 高精度な近似検索(精度80~100%)を対象としており、厳密な検索には対応していません。
トピック
よくある質問
- pynndescent とは?
- Nearest Neighbor Descentを基盤に、幅広い距離指標に対応した純Python製の近似最近傍探索ライブラリ。 PyNNDescentはk近傍グラフを構築し、そのグラフを使って近似最近傍クエリに応答します。Nearest Neighbor Descentを実装しており、初期化にはランダム射影木を使い、グラフ内の三角形の長い辺を刈り込んで精度を高めます。再現率がおよそ80%から100%の高精度が求められるワークロードを想定しています。
- pynndescent は無料で使えますか?ライセンスは?
- pynndescent は BSD-2-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pynndescent は今もメンテナンスされていますか?
- 活発にメンテナンス中。pynndescent の最終コミットは 2026年11月6日 です。
- pynndescent は何に使えますか?
- 検索やレコメンデーションで、高次元の埋め込みベクトルから類似アイテムを見つける。 scikit-learnのパイプライン内で最近傍計算を実行する。 クラスタリングや多様体学習など、後続処理に使うk-NNグラフを構築する。 cosine、Jaccard、Wasserstein距離など、Euclidean以外の距離指標で探索する。
- pynndescent のインストール方法は?
- pipでパッケージをインストールする: pip install pynndescent データの検索インデックスを構築し、最近傍の15件をクエリする
- pynndescent はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/lmcinnes/pynndescent
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Postgresにベクトル類似検索機能を追加し、リレーショナルデータとともにembeddingを保存・検索できるオープンソース拡張機能。
Lance形式で保存したデータに対し、ベクトル・全文・SQL検索を提供する、マルチモーダルAI向けの組み込み型検索ライブラリ兼データベース。
LLMアプリケーション向けのAIネイティブなデータベース。密ベクトル、疎ベクトル、テンソル、全文検索を組み合わせたハイブリッド検索を提供します。
グラフおよびツリーインデックスを使い、高次元ベクトルを高速に近似最近傍検索するC++ライブラリとCLI。
HNSWグラフアルゴリズムによる高速な近似最近傍探索を実現する、Pythonバインディング付きのヘッダーオンリーC++ライブラリ。