meilisearch/arroy

An Approximate Nearest Neighbors library in Rust, based on random projections and LMDB and optimized for memory usage :boom:

何を解決するか

Arroy は近似最近傍(ANN)検索用の Rust ライブラリです。高次元空間内のベクトルの中で、ターゲットベクトルに最も近いものを検索できます。特に、数百万件のドキュメントを扱う高次元空間(例:768 や 1536 次元)におけるメモリ制限付き検索問題を解決します。

動作方法

Arroy はランダム投影を使って木の森を構築します。各ノードでランダムな超平面が空間を2つの部分空間に分割します。このプロセスを複数回繰り返して森を構成します。ドット積距離を扱うため、ベクトルをドット空間からクエリに適したコサイン空間に変換します。

対象ユーザー

効率的で低メモリ使用のベクトル検索を必要とする開発者向けです。特に Rust を使用し、LMDB を通じて複数プロセス間でインデックスを共有したい開発者に適しています。

特徴

  • LMDB をベースとしたストレージ:メモリマップされたキー値ストアを使用し、複数プロセスが同じデータを共有でき、アトミックな変更が可能です。
  • 低メモリフットプリント:小さなメモリ使用量を最適化しており、利用可能な RAM を超える大規模データセットのインデックス化が可能になります。
  • 複数の距離メトリクス:ユークリッド、マンハッタン、コサイン、およびドット(内積)距離をサポートしています。
  • 並行アクセスrayon を使ってマルチスレッドで木を構築でき、別のインデックスが変更されている間も照会が可能です。
  • 拡張機能:クエリ時にフィルタリングが可能で、完全再構築せずに木を段階的に更新できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト