Repolode
lmcinnes

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. 1

    pipでパッケージをインストールする

    pip install pynndescent
  2. 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 の数値は毎日更新されます。

関連プロジェクト