codelibs/search-ann-benchmark でANNでのベクトル検索プロダクトの性能を確認できるようにしているけど、GitHub Actionsで実行している結果をここで一覧できるようにしました。GitHub Actionsで実行した結果を一日一回収集して、そのページにまとめて簡単に確認できるようにした感じです。
上位10件と上位100件を取得した場合の平均応答時間と精度になります。ここで言う精度というのは、近似的な近傍検索なので、上位K件が期待するものとは限らないので、厳密な距離計算をしたときに得られるK件と比較してどれだけ一致しているか?というPrecision@Kの値です。10件取得して、正解と9件しか一致していなければ、0.9のようになります。
応答速度と精度のバランスが取れるように各種設定を調整していますが、実行しているコードはGitHubに置いてあるので、より良い値があれば、プルリクなどいただければと思います。一応、HNSWで統一してあるので、mやefなどのパラメーターは一緒にしてあります。
Qdrantが安定して、速さを保っている感じで、ElasticsearchやOpenSearchのLucene系は着実に追い上げてきている感じです。ただ、Lucene系は取得件数が多くなると、他と比べて、応答速度の劣化が大きいです。PGVectorは量子化対応されないと、応答時間での差は埋めるのはしばらく難しい気がします。
という感じで、ベクトル検索まわりの調査等々をしてきて、いろいろと知見はあるので、何かあれば、CodeLibs, Inc.までご相談いただければと。