🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus 2.1の新機能 - シンプルさとスピードを目指して

Milvus 2.1の新機能 - シンプルさとスピードを目指して

  • News
August 05, 2022
Xiaofan Luan

What's new in Milvus 2.1 - Towards simplicity and speed Milvus 2.1の新機能 - シンプルさとスピードを目指して

Milvus 2.1のリリースは、Milvusコミュニティの貢献者全員による6ヶ月間の努力の末に実現しました。この人気のあるベクターデータベースのメジャーイテレーションは、パフォーマンスと ユーザビリティという2つの最も重要なキーワードに重点を置いています。文字列、Kafkaメッセージキュー、組み込みMilvusのサポートに加え、パフォーマンス、スケーラビリティ、セキュリティ、観測可能性において多くの改良を加えました。Milvus 2.1は、アルゴリズムエンジニアのラップトップからプロダクションレベルのベクトル類似検索サービスまでの「ラストワンマイル」の架け橋となるエキサイティングなアップデートです。

5msレベルの待ち時間

Milvusはすでに近似最近傍(ANN)検索をサポートしており、従来のKNN手法から大きく飛躍している。しかしながら、スループットと待ち時間の問題は、億単位のベクトルデータ検索シナリオに対処する必要のあるユーザーにとって依然として課題となっています。

Milvus2.1では、検索リンクのメッセージキューに依存しない新しいルーティングプロトコルが追加され、小規模データセットの検索待ち時間が大幅に短縮された。我々のテスト結果によれば、Milvusのレイテンシは5msまで低減され、類似検索や推薦などの重要なオンラインリンクの要件を満たしている。

同時実行制御

Milvus 2.1では、新しいコスト評価モデルと同時実行スケジューラを導入することで、同時実行モデルを微調整している。これにより、CPUやキャッシュのリソースを競合する多数の同時リクエストが発生したり、十分なリクエストがないためにCPUが十分に使用されなかったりすることがなくなります。また、Milvus 2.1の新しいインテリジェントなスケジューラレイヤーは、一貫したリクエストパラメータを持つsmall-nqクエリをマージし、small-nqかつ高いクエリ並行性を持つシナリオにおいて、3.2倍という驚異的なパフォーマンス向上を実現する。

インメモリーレプリカ

Milvus 2.1では、小規模データセットのスケーラビリティと可用性を向上させるインメモリレプリカが導入されました。従来のデータベースのリードオンリーレプリカと同様に、インメモリレプリカはリードQPSが高い場合にマシンを追加することで水平方向に拡張することができる。小規模データセットのベクトル検索では、推薦システムはしばしば1台のマシンの性能限界を超えるQPSを提供する必要がある。このようなシナリオでは、複数のレプリカをメモリにロードすることで、システムのスループットを大幅に向上させることができる。将来的には、インメモリ・レプリカに基づくヘッジド・リード・メカニズムも導入する予定です。これは、システムが障害から回復する必要がある場合に備えて、他の機能的なコピーを迅速に要求するもので、メモリの冗長性をフルに活用してシステム全体の可用性を向上させます。

In-memory replicas allow query services to be based on separate
copies of the same data. インメモリーレプリカは、同じデータの別々のコピーに基づくクエリーサービスを可能にする

データロードの高速化

最後の性能向上は、データロードからもたらされる。Milvus 2.1では、Zstandard (zstd)を用いてバイナリログを圧縮するようになり、オブジェクトストアとメッセージストアのデータサイズが大幅に削減され、データロード時のネットワークオーバーヘッドも削減されました。さらに、ゴルーチンプールが導入され、Milvusはメモリフットプリントを制御しながらセグメントを同時にロードし、障害からの回復とデータのロードに必要な時間を最小化できるようになりました。

Milvus 2.1の完全なベンチマーク結果は、近日中に弊社ウェブサイトで公開される予定です。ご期待ください。

文字列およびスカラーインデックスのサポート

Milvus 2.1では、スカラーデータ型として可変長文字列(VARCHAR)をサポートしました。VARCHARは出力として返される主キーとして使用することができ、属性フィルタとしても機能します。属性フィルタはMilvusユーザが最も必要とする機能の一つです。200-200価格帯で、ユーザーに最も近い商品を見つけたい」、「キーワード "ベクトルデータベース "を持ち、クラウドネイティブのトピックに関連する記事を見つけたい」と思うことが多いのであれば、Milvus 2.1を気に入ることでしょう。

Milvus2.1では、データ構造として簡潔なMARISA-Triesに基づくフィルタリング速度を向上させるスカラー転置インデックスもサポートしている。全てのデータを非常に少ないフットプリントでメモリにロードできるようになり、文字列の比較、フィルタリング、接頭辞マッチングがより迅速に行えるようになった。我々のテスト結果によれば、MARISA-trieのメモリ要件は、全てのデータをメモリにロードしクエリー機能を提供するPython辞書の10%に過ぎない。

Milvus 2.1 combines MARISA-Trie with inverted index to significantly improve filtering speed. Milvus2.1はMARISA-Trieと転置インデックスを組み合わせ、フィルタリング速度を大幅に向上させる。

今後、Milvusはスカラークエリ関連の開発に引き続き注力し、より多くのスカラインデックスタイプとクエリ演算子をサポートし、ディスクベースのスカラークエリ機能を提供する予定である。

Kafka サポート

Milvus2.1では、Milvusの抽象化およびカプセル化設計とConfluentが提供するGo Kafka SDKにより、ユーザの設定に応じてPulsarまたはKafkaを メッセージ・ストレージとして使用するオプションを提供します。

プロダクション対応のJava SDK

Milvus 2.1では、Java SDKが正式にリリースされました。Java SDKはPython SDKと全く同じ機能を持ち、並行処理性能はさらに向上しています。次のステップでは、コミュニティの貢献者がJava SDKのドキュメントとユースケースを徐々に改善し、GoとRESTful SDKもプロダクションレディの段階へと押し上げる手助けをします。

観測可能性と保守性

Milvus 2.1では、ベクトル挿入数、検索レイテンシ/スループット、ノードメモリオーバーヘッド、CPUオーバーヘッドなどの重要な監視メトリクスが追加されました。さらに、新バージョンでは、ログレベルを調整し、無駄なログ出力を削減することで、ログ保持を大幅に最適化しています。

組み込みMilvus

Milvusは大規模な大規模ベクトルデータ検索サービスの展開を大幅に簡素化したが、小規模なアルゴリズムを検証したい科学者にとっては、DockerやK8sはまだ不必要に複雑すぎる。組み込みMilvusの導入により、PyrocksbやPysqliteと同様に、pipを使ってMilvusをインストールできるようになった。組み込みMilvusは、クラスタ版とスタンドアロン版のすべての機能をサポートしており、コードを一行も変更することなく、ラップトップから分散本番環境に簡単に切り替えることができる。アルゴリズムエンジニアは、Milvusを使ってプロトタイプを構築する際に、より良い経験をすることができます。

さらに、Milvus 2.1では、安定性とスケーラビリティが大幅に改善されました。

今後の予定

編集:Songxian Jiang

Like the article? Spread the word

続けて読む