Milvus導入オプションの概要
Milvusは高性能でスケーラブルなベクトルデータベースです。Jupyter Notebooksでローカルに実行されるデモから、数百億のベクトルを扱う大規模なKubernetesクラスタまで、幅広い規模のユースケースをサポートしています。現在、Milvusには3つの導入オプションがある:Milvus Lite、Milvus Standalone、Milvus Distributedです。
Milvus Lite
Milvus Liteは、アプリケーションにインポート可能なPythonライブラリです。Milvusの軽量版として、Jupyter Notebookでの迅速なプロトタイピングや、リソースの限られたスマートデバイスでの実行に最適です。Milvus Liteは他のMilvusと同じAPIをサポートしています。Milvus Liteとインタラクションするクライアント側のコードは、他のデプロイメントモードのMilvusインスタンスでも動作します。
Milvus Liteをアプリケーションに統合するには、pip install pymilvus
を実行してインストールし、MilvusClient("./demo.db")
ステートメントを使用して、すべてのデータを永続化するローカルファイルを持つベクトルデータベースをインスタンス化します。詳細はMilvus Liteの実行を参照してください。
Milvusスタンドアロン
Milvus Standaloneはシングルマシンサーバです。Milvus Standaloneの全コンポーネントは単一のDockerイメージにまとめられており、デプロイに便利です。本番ワークロードがあるがKubernetesを使用したくない場合、十分なメモリを搭載したシングルマシン上でMilvus Standaloneを実行することは良い選択肢となる。さらに、Milvus Standaloneはマスタースレーブレプリケーションによる高可用性をサポートしています。
Milvus Distributed
Milvus DistributedはKubernetesクラスタ上にデプロイすることができる。このデプロイはクラウドネイティブアーキテクチャを特徴としており、インジェスト負荷と検索クエリは分離されたノードによって別々に処理され、重要なコンポーネントの冗長性を可能にする。最高のスケーラビリティと可用性を提供するだけでなく、各コンポーネントに割り当てられたリソースを柔軟にカスタマイズできる。Milvus Distributedは、大規模なベクトル検索システムを本番稼動させている企業ユーザーにとって、最良の選択肢となります。
ユースケースに適したデプロイメントの選択
デプロイメントモードの選択は通常、アプリケーションの開発段階によって異なります:
クイックプロトタイピング
RAG(Retrieval Augmented Generation)デモ、AIチャットボット、マルチモダリティ検索など、プロトタイプや学習用として素早く何かを構築したい場合、Milvus Lite単体、またはMilvus LiteとMilvus Standaloneの組み合わせが適しています。ラピッドプロトタイピングのためにノートブックでMilvus Liteを使用し、RAGで異なるチャンキング戦略など様々なアプローチを検討することができます。Milvus Liteでビルドしたアプリケーションを小規模なプロダクションにデプロイして実際のユーザに提供したり、数百万ベクトルを超えるような大規模なデータセットでアイデアを検証することもできます。Milvus Standaloneが適しています。Milvus Liteのアプリケーションロジックは、すべてのMilvusデプロイメントが同じクライアントサイドAPIを持っているため、共有することができます。Milvus Liteに保存されたデータは、コマンドラインツールを使ってMilvus Standaloneに移植することもできます。
小規模本番導入
プロジェクトがまだ製品市場適合性を模索しており、スケーラビリティよりもアジリティが重要な初期段階の本番環境には、Milvus Standaloneが最適です。十分なマシンリソースがあれば100Mベクターまで拡張可能であり、K8sクラスタを維持するよりもはるかに少ないDevOpsで済みます。
大規模本番展開
ビジネスが急成長し、データ規模が単一サーバーの容量を超えた場合、Milvus Distributedを検討する時期に来ています。Milvus Standaloneを開発環境やステージング環境として利用し、Milvus Distributedを実行するK8sクラスタを運用することができます。これにより、数百億のベクターに対応することができ、また、高読み込み、低書き込み、高書き込み、低読み込みのケースなど、特定のワークロードに合わせてノードサイズを柔軟に調整することができる。
エッジデバイスでのローカル検索
エッジデバイス上のプライベートな情報や機密情報を検索する場合、クラウドベースのサービスに依存することなく、デバイス上にMilvus Liteを導入してテキスト検索や画像検索を行うことができます。これは、独自のドキュメント検索やデバイス上でのオブジェクト検出などのケースに適しています。
Milvusのデプロイメントモードの選択は、プロジェクトのステージや規模によって異なります。Milvusは、ラピッドプロトタイピングから大規模なエンタープライズ展開まで、様々なニーズに対応する柔軟で強力なソリューションを提供します。
- Milvus Liteは、数百万ベクトルまでの小規模なデータセットに適しています。
- Milvus Standaloneは、最大1億ベクトルまでの中規模データセットに適しています。
- Milvus Distributedは大規模なデータセットに適しており、1億から数百億のベクターまで対応可能です。
ユースケースに合わせて導入オプションを選択してください。
機能比較
機能 | Milvus Lite | Milvus スタンドアロン | Milvus分散型 |
---|---|---|---|
SDK/クライアントリラリ | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
データタイプ | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON |
検索機能 | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search |
CRUD操作 | ✔️ | ✔️ | ✔️ |
高度なデータ管理 | 該当なし | アクセス・コントロール パーティション パーティション・キー | アクセスコントロール パーティション パーティションキー 物理リソースグループ化 |
一貫性レベル | 強い | Strong Bounded Staleness Session Eventual | Strong Bounded Staleness Session Eventual |