密ベクトルも、スパースも、マルチベクトルも、1つのRustコードベースで近似最近傍探索ができないでしょうか。
Modular and Efficient Approximate Nearest Neighbors Search with Vectorium and kANNolo
🧩 概要
データ管理層のVectoriumと、インデックス層のkANNoloという2つのRustライブラリです。エンコーダやデータセットはコンパイル時の型パラメータで特殊化されます。
🎯 解決する課題
・Faissは組合せごとに専用コードがあり、拡張しにくい
・既存ライブラリは、グラフか量子化のどちらか一方しか切り出していない
・3種類の埋め込みを1つのインターフェースで扱えるものがない
🛠 方法論
・11種のエンコーダ(PQ、RaBitQ、スパース用、マルチベクトル用など)
・HnswとIVFに、任意の第1段インデックスと再採点を組み合わせる2段のRerankIndex
・PQのテーブルをSoAで持ち、構築を4.5〜5.2倍に高速化
📊 実験結果
・hnswlib比で99%精度時に最大3.26倍(kANNolo-Rerank、密データ)
・スパースは全コレクションで最小メモリ
・一方、AgNewsではGlassが、スパースではSeismicが速く、構築時間も速くはありません
#
ANNSearch# #
Rust#