ベクトル検索エンジンの性能評価ツールsearch-ann-benchmarkに、4つのエンジンを追加しました。
追加したエンジン
今回追加したのは以下の4つです。
ClickHouse
ClickHouseは、高速なOLAPデータベースとして知られていますが、最近はベクトル検索機能も提供しています。今回の実装では、MergeTreeエンジンとvector_similarityインデックスを使って、HNSW(Hierarchical Navigable Small World)によるANN検索を行います。
ClickHouseはHTTPインターフェースを介して操作でき、大量のデータをバッチ処理するのに向いています。既存のClickHouse環境があれば、追加のインフラなしでベクトル検索を始められるのがメリットです。
LanceDB
LanceDBは、組み込み型のベクトルデータベースです。SQLiteのようにファイルベースで動作するため、Dockerなどのコンテナを立ち上げる必要がありません。
Python環境で直接動作するため、セットアップが簡単で、ローカル環境でのプロトタイピングやテストに便利です。IVF-PQインデックスを使った近似最近傍探索をサポートしています。
Redis Stack
Redis Stackは、RedisにベクトルDB機能を追加したものです。RediSearchモジュールを使って、HNSWインデックスによるベクトル検索ができます。
Redisはインメモリデータベースなので、検索速度は高速です。既存のRedisインフラを活用できる点と、KVストアとしての機能とベクトル検索を同じ基盤で使えるのが特徴です。
Vald
Valdは、Yahoo! JAPANが開発した分散ベクトル検索エンジンです。NGT(Neighborhood Graph and Tree)というアルゴリズムを使っており、高次元ベクトルに対して高い性能を発揮します。
Kubernetesネイティブなアーキテクチャで、大規模な分散環境での運用を想定した設計になっています。gRPCベースのAPIを提供しています。
ベンチマーク実行
各エンジンのベンチマークはGitHub Actionsで自動実行されるようになっています。手動でトリガーすることも可能で、100k、1M、5Mのデータセットサイズに対してテストできます。
これで、search-ann-benchmarkでサポートするエンジンは合計12種類になりました。
- Elasticsearch
- OpenSearch
- Qdrant
- Milvus
- Weaviate
- Vespa
- pgvector
- Chroma
- ClickHouse(New)
- LanceDB(New)
- Redis Stack(New)
- Vald(New)
ベクトル検索エンジンは選択肢が増えてきているので、自分の用途に合ったものを選ぶ際の参考になればと思います。