46.6kデモを予約するログイン無料で始める

Milvusサイジングツールを解明する

Apr 26, 20240 min read

急速に進化する今日のデータ環境において、Milvusの導入に最適な構成を選択することは、効率的なパフォーマンスとリソースの利用を確保する上で極めて重要です。数多くの選択肢がある中で、適切な構成を選択することは容易ではありません。

ここでは、Milvusサイジングツールを使用する際に考慮すべき3つの重要なポイントを紹介します。

Milvusサイジングツール](https://assets.zilliz.com/milvus_sizing_tool_487700ef78.png)

インデックスの選択:メモリ、ディスク、コスト、精度、スピードのバランス

Milvusは様々なインデックスアルゴリズム(HNSW、FLAT、IVF_FLAT、IVF_SQ8)を提供しており、メモリ使用量、ディスク容量、コスト、スピード、精度がトレードオフの関係にあります。パフォーマンスとメモリーのバランスが取れているHNSWが通常推奨される。これらのインデックスの詳細については、このブログを参照。

HNSW:

  • スキップリストとNavigable Small Worlds (NSWs)グラフという2つの概念を組み合わせたものである。 HNSWはNSWの階層リストを作成する。 HNSWの探索は最上位層から始まり、各層で最近傍を見つけるために層ごとに下に移動する。 最上層はグラフ内のノード数が最も少なく、最下層はノード数が最も多い。

  • クエリが非常に速く、再現性に優れている。ベクトルあたり最も多くのメモリを必要とするため、最もコストがかかる。

フラット:

  • 100%の再現率(網羅的検索)。

  • クエリの速度は信じられないほど遅く(データサイズ n に対して O(n) )、インデックスはベクトルデータと同じサイズである。

IVF_FLAT:

  • ベクトル空間をクラスタに分割し、検索は nlist クラスタに対してのみ行われる。

  • リコールは中程度、検索速度は中程度(HNSWより遅いがFLATより速い)。

  • HNSWより多くのメモリを必要とするが、FLATより少ないメモリで済む。

IVF_SQ8:

  • スカラー量子化を利用し、ディスク、コンピュート、メモリの消費量を70-75%削減。

  • 中程度のリコール、中程度の高速クエリ。

  • リソースが限られている場合にIVF_FLATよりも優れた選択肢を提供。

上記の最も一般的な浮動小数点インデックスに加えて、MilvusはScANN (HNSWよりもCPU上で20%高速)、バイナリ、スパース、ディスクベースのインデックスもサポートしています。Milvus index doc pages を参照してください。

DISKANNはディスク/メモリのハイブリッドインデックスであり、多少レイテンシが長くても(~100ms程度)構わないが、高い想起率を持つ多くのベクトルをサポートする必要がある場合に良いオプションです。AUTOINDEXはオープンソースのMilvusではHNSWがデフォルトです(Zillizではより高性能なプロプライエタリインデックス)。

GPU_CAGRAはGPUインデックスの中で最も高速ですが、HBMではなくGDDRメモリを搭載した推論カードが必要です。 サポートされている他のGPUインデックスは以下の通りです:GPU_BRUTE_FORCE、GPU_IVF_FLAT、GPU_IVF_PQ。

セグメントサイズと配置構成

サイジングツールには3つのセグメントサイズ(512 MB、1024 MB、2048 MB)があります。 デフォルトのセグメントサイズは512MBです。 通常、セグメントサイズが小さいほど検索が高速になるため、大きなデータを扱う場合は2GBを推奨します。

セグメントとはデータの塊のことで、Milvusではロードバランシングやインデックスの分散検索に使われる最小単位です。簡単な経験則です:

  • クエリノードサイズが4GB~8GBの場合、512MBのセグメントを使用します。

  • 16GB未満のクエリノードには1GBセグメントを使用します。

  • 16GBを超えるクエリーノードには、2~4GBのセグメントを使用します。

PulsarとKafkaのどちらを選ぶにせよ、新規プロジェクト(グリーン・フィールド・インストール)には、トピックごとのオーバーヘッドが少ないPulsarをお勧めします。

Zillizクラウドのエンタープライズ・バージョンでは、追加のコストおよびスピード設定が可能です。 詳しくはクラウド・サイジング・ツールをご覧ください:

  • Out of Memory (OOM)の削減とコンパクションの最適化により、最高のパフォーマンスを実現します。

  • 遅延ロードストレージの節約:

    • 標準的な計算ユニット(CU)でホットデータを効率的に保存します。

    • 階層化されたストレージCUにより、めったにアクセスされない(コールド)データをコスト効率よく保存。

結論

これは出発点に過ぎないことを忘れないでください!Milvusは幅広いカスタマイズオプションを提供しています。

Milvusサイジングツール](https://milvus.io/tools/sizing/)は単一のインデックスに焦点を当てています。様々なコレクションに対して異なるインデックスアルゴリズムが必要な場合は、カスタム構成で別々のコレクションを作成してください。この場合、より複雑なデプロイセットアップが必要になるかもしれません。

参考リンク

リソース計画: https://docs.zilliz.com/docs/resource-planning

Zillizクラウド価格計算機: https://zilliz.com/pricing#estimate_your_cost

Milvus インデックス紹介: https://thesequence.substack.com/p/guest-post-choosing-the-right-vector

Milvus インデックス https://milvus.io/docs/index.md

Milvus GPU CAGRA インデックス: https://zilliz.com/blog/Milvus-introduces-GPU-index-CAGRA

Updated on Jul 09, 2026