Milvus と Qdrant の比較
どちらもベクトルDB / ストレージに分類しています。数値はGitHub APIから取得したもので、評価は本サイトによるものです。
基本情報の比較
| 基本情報の比較 | Milvus | Qdrant |
|---|---|---|
| ライセンス | Apache-2.0 | Apache-2.0 |
| 言語 | Go, C++ | Rust |
| 提供形態 | セルフホスト / マネージドクラウド | セルフホスト / ローカル実行 / マネージドクラウド |
| 成熟度 | 安定 | 安定 |
| スター | 45.6k | 34k |
| 直近7日間のスター増加数 | +1 ★ | +1 ★ |
| フォーク | 4.2k | 2.6k |
| オープンIssue | 1.3k | 699 |
| 最終コミット | 2026年8月15日 | 2026年8月15日 |
| 開発状況 | 活発 | 活発 |
それぞれの位置づけ
できること
Milvus
- サーバーを立てずに試す — pymilvus[milvus-lite]を入れてMilvusClientにローカルファイル名を渡せば単体で動き、uriとtokenを差し替えるだけで自ホストのクラスタやZilliz Cloudへ接続先を移せます。
- 全文検索とベクトル検索を併用 — 同一コレクションに疎ベクトルと密ベクトルを格納でき、BM25による全文検索やSPLADE、BGE-M3などの学習済み疎埋め込みの結果をrerank関数で統合できます。
- 用途に合わせてインデックスを選ぶ — HNSW、IVF、FLAT、SCANN、DiskANNに加え、IVFPQなどの量子化やmmap、NVIDIA CAGRAによるGPUインデックスまで選択できます。
- 読み取りと書き込みを別々に増強 — 計算とストレージが分離されているため、読み取り中心の負荷にはquery node、書き込み中心の負荷にはdata nodeを個別に追加でき、レプリカで耐障害性も高められます。
- 1クラスタでテナントを分離 — database、collection、partition、partition keyの各粒度で分離を設定でき、RBACとTLS、ホットデータをメモリやSSDに置くホット/コールド階層を組み合わせて運用します。
Qdrant
- 検索中に効くフィルタ — ペイロード条件を検索後の絞り込みではなく検索処理そのものの中で適用します。条件はキーワード一致、全文検索、数値範囲、地理情報などをmust・should・must_notで組み合わせて記述します。
- 1コンテナから始める — docker run -p 6333:6333 qdrant/qdrantだけでローカル環境が整います。ただしこの構成は認証がなく全インターフェースで待ち受けるため、READMEも本番投入前に設定を見直すよう促しています。規模が増えたらシャーディングとレプリケーションで広げられ、コレクションの変更も無停止で行えます。
- 密ベクトルと疎ベクトルの併用 — 意味的な近さを担う密ベクトルとキーワードに強い疎ベクトル、ColBERTのような遅延相互作用モデル向けのマルチベクトルを1つのクエリで扱い、結果はRRFやDBSFで統合します。
- 6言語の公式クライアント — Python向けのqdrant-clientとJavaScript/TypeScript向けの@qdrant/js-client-restに加え、Go、Rust、.NET/C#、Javaの公式クライアントがあります。接続はOpenAPI 3.0仕様のREST APIか、高速な検索向けのgRPCインターフェースを選べます。
- 量子化でメモリを削る — 組み込みの量子化でRAM使用量を最大97%削減でき、検索速度と精度の釣り合いを調整できます。常時メモリに置く必要のないベクトルはディスク保存へ回せます。