Qdrant(クドラント)
Rustで実装された高性能なオープンソースベクトルデータベース。ニューラル埋め込みの保存・検索に特化し、フィルタリング付きの近似最近傍探索(ANN)を高速に実行する。
Qdrant とは
Qdrantは、2021年にドイツで設立されたQdrant Solutions GmbHが開発するオープンソースのベクトルデータベース/検索エンジン。Rustで実装されており、高いメモリ効率と低レイテンシが特徴。LLMアプリケーションのRAGシステム・セマンティック検索・推薦システムのバックエンドとして急速に普及している。
主要アーキテクチャ
Collections
Qdrantのデータ単位は「Collection(コレクション)」。各コレクションにベクトル次元数・距離関数(Cosine/Euclidean/Dot)を設定し、ベクトルと任意のJSON「Payload」を一緒に格納する。
HNSW インデックス
近似最近傍探索(ANN)にはHNSW(Hierarchical Navigable Small World)グラフを使用。m(接続数)とef_construct(構築時探索数)の2パラメータでスピード/精度のトレードオフを調整。数千万件規模でも100ms以下の応答を実現。
Scalar Quantization / Product Quantization
メモリ削減のため量子化をサポート。fp32ベクトルをint8にスカラー量子化すれば4倍のメモリ削減、積量子化(PQ)ではさらに圧縮可能。
フィルタリング機能
Qdrantの最大の特徴が「有条件ベクトル検索」。Payloadに保存したメタデータでフィルタした上でベクトル類似度でランク付けする:
{
"query": [0.1, 0.2, "..."],
"filter": {
"must": [
{"key": "category", "match": {"value": "tech"}}
]
},
"limit": 10
}
PineconeやChromaと異なり、フィルタリングをベクトル探索前に適用するため精度が高い(post-filteringはrecall低下の原因になる)。
Sparse Vectors & Hybrid Search
v1.7以降、密ベクトル(Dense)と疎ベクトル(Sparse/BM25相当)の両方を格納し、Hybrid Searchが可能。BM25のキーワードマッチングと意味的類似度を組み合わせるReranking(RRF)により高精度な結果を返せる。
セットアップ
docker run -p 6333:6333 qdrant/qdrant
pip install qdrant-client
競合との比較
- Qdrant vs Chroma: Qdrantはpre-filteringで精度高い、Chromaはプロトタイプ向けの手軽さ
- Qdrant vs Pinecone: Qdrantはセルフホスト・コスト最適化、Pineconeはインフラ管理不要
- Qdrant vs Milvus: Qdrantは中規模(〜数億件)まで、Milvusはエンタープライズ規模向け
Rust実装のメモリ安全性と低レイテンシ、pre-filteringの精度、Sparse Vectorsサポートが選択理由として挙がることが多い。