milvus-logo
LFAI
フロントページへ
  • Milvusについて

Milvusとは?

Milvusは、ラップトップから大規模分散システムまで、幅広い環境で効率的に動作する、高性能で拡張性の高いベクターデータベースです。オープンソースソフトウェアとしても、クラウドサービスとしても利用可能です。

Milvusは、Apache 2.0ライセンスの下で配布されているLF AI & Data Foundationのオープンソースプロジェクトです。貢献者の多くはハイパフォーマンス・コンピューティング(HPC)コミュニティの専門家であり、大規模システムの構築やハードウェアを考慮したコードの最適化を専門としている。中心的な貢献者には、Zilliz、ARM、NVIDIA、AMD、Intel、Meta、IBM、Salesforce、Alibaba、Microsoftの専門家が含まれる。

非構造化データ、エンベッディング、milvus

テキスト、画像、音声のような非構造化データは、形式が様々であり、豊富なセマンティクスを持っているため、分析が困難です。この複雑さを管理するために、エンベッディングは非構造化データをその本質的な特徴を捉える数値ベクトルに変換するために使用されます。これらのベクトルはベクトルデータベースに格納され、高速でスケーラブルな検索と分析を可能にします。

Milvusは堅牢なデータモデリング機能を備えており、非構造化データやマルチモーダルデータを構造化されたコレクションに整理することができます。Milvusは、一般的な数値型や文字型、様々なベクトル型、配列、集合、JSONなど、様々な属性モデリングに対応したデータ型を幅広くサポートしており、複数のデータベースシステムを管理する手間を省くことができます。

Untructured data, embeddings, and Milvus 非構造化データ、エンベッディング、Milvus

Milvusは3つのデプロイメントモードを提供し、Jupyter Notebooksでのローカルプロトタイピングから数百億のベクトルを管理する大規模なKubernetesクラスタまで、幅広いデータスケールをカバーします:

  • Milvus Liteは、アプリケーションに簡単に統合できるPythonライブラリです。Milvusの軽量版として、Jupyter Notebooksでの迅速なプロトタイピングや、リソースが限られたエッジデバイスでの実行に最適です。詳細はこちら。
  • Milvus Standaloneは、シングルマシンサーバーデプロイメントで、すべてのコンポーネントが単一のDockerイメージにバンドルされており、デプロイに便利です。詳細はこちら
  • Milvus Distributedは、Kubernetesクラスタ上にデプロイすることができ、10億規模またはさらに大規模なシナリオ向けに設計されたクラウドネイティブなアーキテクチャを特徴としています。このアーキテクチャは、重要なコンポーネントの冗長性を保証します。詳細はこちら。

Milvusは何が速いのか?

Milvusは初日から非常に効率的なベクトルデータベースシステムとして設計されました。ほとんどの場合、Milvusは他のベクトルデータベースを2~5倍凌駕しています(VectorDBBenchの結果を参照)。この高い性能は、いくつかの重要な設計上の決定の結果です:

ハードウェアを考慮した最適化:Milvusを様々なハードウェア環境に対応させるため、AVX512、SIMD、GPU、NVMe SSDなど、多くのハードウェアアーキテクチャとプラットフォームに特化して性能を最適化しました。

高度な検索アルゴリズム:milvusは、IVF、HNSW、DiskANNなど、幅広いインメモリおよびオンディスクインデックス/検索アルゴリズムをサポートしており、これらはすべて深く最適化されています。FAISSやHNSWLibのような一般的な実装と比較して、Milvusは30%から70%の性能向上を実現しています。

C++の検索エンジン:ベクトルデータベースの性能の80%以上は検索エンジンによって決まります。Milvusは、高性能、低レベル最適化、効率的なリソース管理のために、この重要なコンポーネントにC++を使用しています。最も重要な点として、Milvusはハードウェアの能力をフルに活用するために、アセンブリレベルのベクトル化からマルチスレッド並列化、スケジューリングに至るまで、ハードウェアを意識した数多くのコード最適化を統合しています。

列指向:Milvusは列指向のベクトルデータベースシステムです。主な利点はデータアクセスパターンにある。クエリを実行する際、列指向データベースは行全体ではなく、クエリに関係する特定のフィールドのみを読み込むため、アクセスされるデータ量が大幅に削減される。さらに、列ベースのデータに対する操作は簡単にベクトル化することができるため、列全体に一度に操作を適用することができ、パフォーマンスをさらに向上させることができます。

Milvusがスケーラブルである理由

2022年、Milvusは10億スケールのベクトルをサポートし、2023年には安定したまま数百億までスケールアップし、Salesforce、PayPal、Shopee、Airbnb、eBay、NVIDIA、IBM、AT&T、LINE、ROBLOX、Inflectionなど、300を超える大手企業の大規模シナリオを支えている。

Milvusのクラウドネイティブで高度に分離されたシステムアーキテクチャは、データの成長に合わせてシステムを継続的に拡張できることを保証します:

Highly decoupled system architecture of Milvus Milvusの高度に分離されたシステム・アーキテクチャ

Milvus自体は完全にステートレスであるため、Kubernetesやパブリッククラウドの助けを借りて容易に拡張することができる。また、Milvusのコンポーネントは高度に分離されており、最も重要な3つのタスクである検索、データ挿入、インデックス作成/コンパクションは、複雑なロジックを分離し、並列化しやすいプロセスとして設計されている。これにより、対応するクエリー・ノード、データ・ノード、インデックス・ノードがそれぞれ独立してスケールアップ、スケールアウトできるようになり、パフォーマンスとコスト効率が最適化されます。

Milvusがサポートする検索の種類

Milvusは様々なユースケースの要求に応えるため、様々なタイプの検索機能をサポートしています:

  • ANN検索:クエリーベクトルに最も近い上位K個のベクトルを検索します。
  • フィルタリング検索:指定されたフィルタリング条件でANN検索を行います。
  • 範囲検索:クエリーベクトルから指定した半径内のベクトルを検索します。
  • ハイブリッド検索複数のベクトルフィールドに基づいてANN検索を行います。
  • 全文検索BM25に基づく全文検索。
  • 再順位付け追加条件または二次アルゴリズムに基づいて検索結果の順序を調整し、最初のANN検索結果を絞り込む。
  • フェッチ主キーでデータを検索する。
  • クエリー:特定の式を使用してデータを検索します。

包括的な機能セット

Milvusは、上記の主要な検索機能に加えて、ANN検索を中心に実装された一連の機能を提供しており、その機能をフルに活用することができます。

APIとSDK

高度なデータ型

Milvusはプリミティブなデータ型に加え、様々な高度なデータ型とそれぞれに適用可能な距離メトリクスをサポートしています。

高速化

  • 検索アルゴリズム Milvusは調整可能なインデックスと検索アルゴリズムのセットをサポートしています。詳細はインメモリインデックスオンディスクインデックスGPUインデックスをご参照ください。

  • パーティションとパーティションキー パーティションはMilvusコレクションのサブディビジョンです。検索パフォーマンスを向上させるために、パーティション・キーとしてスカラー・フィールドを選択できます。詳細は、Manage PartitionsandUse Partition Keyを参照してください。

  • 調整可能な一貫性モデル 一定の時間にデータを書き込んだり読み込んだりする際に、すべてのMilvusノードまたはレプリカが同じデータビューを持つことを保証します。MilvusでANN検索を行う際、一貫性レベルを簡単に調整することができます。詳細は一貫性を参照。

  • ハイスループット データインポート Milvusに大量のデータをインポートするには、ハイスループット データインポート ツールの使用をご検討ください。詳細はソースデータの準備と データのインポートをご参照ください。

  • マルチテナンシー対応 Milvusでは、パーティションキー、クラスタリングキーなど、マルチテナンシーシナリオに対応した多くの機能を実装しています。詳細はマルチテナント戦略をご参照ください。

セキュリティと認証

  • 調整可能な一貫性モデル 一定の時間にデータを書き込んだり読み込んだりする際に、すべてのMilvusノードやレプリカが同じビューを持つことを保証します。MilvusでANN検索を行う際、一貫性レベルを簡単に調整することができます。詳細は一貫性を参照してください。

  • データの分離とリソース制御 マルチテナンシーシナリオでは、データの分離は基本的なセキュリティ要件です。Milvusはセキュリティ上の懸念を解決するためにいくつかの機能を実装しています。詳細はリソースグループの管理とクラスタリングコンパクションをご参照ください。

AIインテグレーション

  • エンベッディングモデルの統合 エンベッディングモデルは非構造化データを高次元データ空間の数値表現に変換し、Milvusに格納できるようにします。現在、Python SDKであるPyMilvusにはいくつかの埋め込みモデルが統合されており、データをベクトル埋め込みに素早く変換することができます。詳細はエンベッディングの概要をご覧ください。

  • 再ランキングモデルの統合 情報検索や生成AIの領域では、再ランカーは最初の検索結果の順序を最適化する必須のツールです。PyMilvusは最初の検索から返される結果の順序を最適化するために、いくつかの再ランクモデルも統合しています。詳細はリランカーの概要を参照してください。

  • LangChainとその他のAIツールの統合 GenAI時代において、LangChainのようなツールはアプリケーション開発者から注目を集めています。Milvusは通常、そのようなツールのコアコンポーネントとしてベクターストアの役割を果たします。Milvusをお気に入りのAIツールに統合する方法については、統合と チュートリアルをご参照ください。

ツールとエコシステム

  • Attu Attuはオールインワンの直感的なGUIで、Milvusとそのデータを管理することができます。詳細はAttuリポジトリをご参照ください。

  • Birdwatcher BirdwatcherはMilvusのデバッグツールです。etcdに接続することで、Milvusシステムの状態を確認したり、その場で設定を行うことができます。詳細はBirdWatcherをご参照ください。

  • PromethusとGrafanaの統合 PrometheusはKubernetesのためのオープンソースのシステム監視とアラートツールキットです。Grafanaはオープンソースの可視化スタックで、あらゆるデータソースと接続できます。PromethusとGrafanaを監視サービスプロバイダとして使用することで、分散したMilvusのパフォーマンスを視覚的に監視することができます。詳細については、監視サービスのデプロイを参照してください。

  • Milvusバックアップ Milvusバックアップは、Milvusデータのバックアップとリストアを可能にするツールです。CLIとAPIの両方を提供し、様々なアプリケーションシナリオに対応します。詳細はMilvus Backupをご参照ください。

  • Milvus Capture Data Change (CDC) Milvus-CDCはMilvusインスタンス内の増分データをキャプチャして同期し、ソースインスタンスとターゲットインスタンス間でシームレスに転送することでビジネスデータの信頼性を確保し、増分バックアップやディザスタリカバリを容易に行うことができます。詳細はMilvus CDCをご参照ください。

  • Milvusコネクタ Milvusは、MilvusをApache Sparkなどのサードパーティツールとシームレスに統合するためのコネクタ群を計画しています。現在、Spark Connectorを使用することで、MilvusのデータをApache Sparkに供給し、機械学習処理を行うことができます。詳細はSpark-Milvus Connectorをご参照ください。

  • Vector Transmission Services (VTS) Milvusは、Milvusインスタンスと、Zillizクラスタ、Elasticsearch、Postgres (PgVector)、別のMilvusインスタンスなどの多数のデータソース間でデータを転送するためのツールセットを提供しています。詳細はマイグレーションを参照してください。

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?