概要 — Milvus と Zilliz の概要
本日のウェビナーへようこそ。年末を迎えるにあたり、誰にとっても非常に記念すべき時期となっています。皆さんも今年を通じて多くの成果を上げられたことと思いますし、私たちも同様です。
James は当社のエンジニアリングチームを率い、製品に多くの重要なアップグレードをもたらしました。本日は、Milvus 2.6 の新機能についてご紹介できることを大変楽しみにしています。
始める前に、いくつかお知らせがあります。
このセッションは録画されており、録画はセッション後にメールで配布されますので、後ほど内容をご確認いただけます。また、最後に Q&A セクションも設けています。ご質問がある場合は、挙手するかチャットに入力してください。進行に合わせて対応します。
それでは James を紹介します。James は Zilliz の VP of Engineering です。データベースアーキテクチャに深い専門知識を持ち、Milvus の進化において重要な役割を果たしてきました。本日は、Milvus 2.6 のアップグレードについて詳しく解説します。
James、お願いします。
ありがとうございます、Jenny。そしてご参加いただいた皆さん、ありがとうございます。
Milvus 2.6 は 4 か月以上前にリリースされました。この数か月間、私たちはリリースの安定化と多くの新機能の追加にかなりの時間を費やしてきました。現時点で、Milvus 2.6 は本番環境で利用可能な状態であり、すでに多くのお客様がクラウド上の本番環境で利用しています。
本日のセッションが、2.6 の新機能を理解し、ご自身のユースケースに役立つ機能を見つけるために十分な情報を提供できれば幸いです。
先に進む前に、Milvus がナレッジグラフ向けのグラフデータベース拡張をサポートするかどうかについて質問があります。短い答えは「いいえ」です。従来型のグラフデータベースになるのではなく、私たちはグラフ埋め込み戦略に取り組んでいます。バッチ処理によってグラフを生成し、それらをグラフ埋め込みに変換し、ベクトル検索を使用して関係検索を実行します。このアプローチは、厳密なグラフマッチングではなく、類似性と意味的な関係に重点を置いています。これについては後ほど詳しくお話しします。
それでは本日のアジェンダに移りましょう。
まず、Milvus について簡単に紹介します。その後、Milvus 2.6 における 4 つの主要な改善点を取り上げます。これには、データモデルの改善、検索機能の強化、パフォーマンスとコストの最適化、そして Milvus をより保守しやすくするアーキテクチャ上の変更が含まれます。
Milvus は、私たちがほぼ 6 年にわたって開発してきたオープンソースのベクトルデータベースです。ユーザーがベクトルデータを保存、インデックス化、管理するのに役立ちます。コミュニティは急速に成長しており、400 人以上のコントリビューターと 40,000 を超える GitHub スターがあります。現在、10,000 社を超えるエンタープライズユーザーが本番環境で Milvus を運用しています。
Zilliz は Milvus を支える企業です。オープンソースプロジェクトに加えて、Zilliz Cloud というフルマネージドのクラウド版を提供しており、ベクトルデータベースプロバイダーの中でリーダー的存在です。私たちの目標は、組織が非構造化データを理解できるよう支援することです。それはベクトル検索だけでなく、AI ネイティブなデータ処理のための完全なスタックを構築することによって実現します。
データモデルの改善 — STRUCT、GEO、TIMESTAMPTZ、TTL、そして減衰リランカー
最初の主要なトピックは、データモデルの改善です。
Milvus 2.6 では、新しい STRUCT データ型を導入しました。もともと Milvus は、各エンティティが複数のカラムを持つワイドカラムデータベースモデルに従っていました。これは構造化スキーマにはうまく機能しますが、多くの AI ワークロードではネストされたデータやドキュメント形式のデータを扱います。
たとえば、PDF を処理する場合、ドキュメントは複数のチャンクに分割され、それぞれが独自の埋め込みとメタデータを持つことがあります。動画データにはフレームが含まれることがあり、各フレームが複数の埋め込みを持つ場合があります。こうしたパターンは、RAG やマルチモーダルのユースケース全般で一般的です。そのため、ネストされたデータ構造をより自然にサポートするために STRUCT を導入しました。
これにより可能になる一般的なパターンは 2 つあります。
1 つ目は、ColBERT や類似のアプローチのようなマルチベクトルモデルです。ここではトークンレベルの埋め込みが生成され、検索時にレイトインタラクションが使用されます。これらのモデルは、より高い再現率とネイティブなマルチモーダリティを提供しますが、ストレージとパフォーマンスのコストが高くなります。STRUCT と Milvus 2.6 の最適化により、これらのワークロードにおける再現率とパフォーマンスの両方を大幅に改善できます。
2 つ目のパターンは、メタデータを伴うドキュメントのチャンク化です。従来、ユーザーは GROUP BY 操作に依存していましたが、これは低速です。STRUCT を使用すると、ドキュメント全体を 1 つの行に格納でき、ネイティブなグルーピングとより優れたトランザクション保証が可能になります。これにより、特にドキュメントレベルのメタデータが複数のチャンクで共有される場合に、データの重複も削減されます。
また、地理位置情報データのサポートも導入しました。多くのユースケースでは、近くのレストランやサービスを見つける場合のように、ベクトル検索と位置フィルタリングを組み合わせます。Milvus 2.6 は地理位置情報データ型と空間インデックスをサポートしており、ユーザーは別個のシステムを維持することなく、効率的な位置情報対応ベクトル検索を実行できます。
時間ベースのデータ処理も、もう 1 つの大きな改善点です。タイムスタンプデータの管理と既存システムとの統合を容易にするために、TIMESTAMPTZ を導入しました。これは Milvus の time-to-live 機能とシームレスに連携し、データを自動的に期限切れにできます。
また、エンティティレベルの TTL も導入しており、同じコレクション内で異なるドキュメントに異なる有効期間を持たせることができます。さらに、古いデータの関連性を徐々に低下させる減衰リランカーを追加しました。これは、鮮度が重要となるエージェントメモリ、ニュース推薦、Eコマースのシナリオで特に有用です。
最後に、Milvus 2.6 は既存のコレクションへの新しいカラム追加などのスキーマ変更をサポートします。ユーザーはデフォルト値を指定したり、Spark を使用してデータをバックフィルしたりできます。これにより、コレクションを一から再構築する必要がなくなり、運用上のオーバーヘッドが大幅に削減されます。
また、局所性鋭敏型ハッシュを使用したデータ重複排除も導入しました。これは Spark によるバッチ重複排除と Milvus 内でのストリーミング重複排除の両方をサポートし、ユーザーが大規模なトレーニングデータセットを効率的に管理できるようにします。
検索機能の強化 — Embeddings、Reranking、Boosting、Phrase Match、Highlight
Milvus 2.6 では、埋め込みモデルおよびリランキングモデルとのネイティブ統合が導入されました。ユーザーは OpenAI や Cohere などのサードパーティサービスを直接利用したり、Triton や Hugging Face モデルのようなセルフホスト型の推論エンジンをデプロイしたりできます。これによりデプロイが簡素化され、推論をベクトル検索と同じ場所に配置することでレイテンシが削減されます。
また、リランキングモデルを演算子としてサポートしており、SaaS ベースおよびセルフホスト型のリランカーの両方を利用できます。モデルベースのリランキングに加えて、Milvus ではブースティングが導入されており、鮮度、人気度、ユーザー属性などのビジネスロジックに基づいて関連性スコアを調整できます。
フレーズマッチは、複数のキーワードをまとめて一致させることを可能にし、従来のテキストマッチングを拡張することで、検索クエリの精度を向上させます。この機能はブースティングと組み合わせて、より関連性の高い結果を優先することもできます。
ハイライトも重要な追加機能です。Milvus はキーワードベースのハイライトとセマンティックハイライトの両方をサポートします。セマンティックハイライトは、クエリ語と完全に一致しない場合でも関連するコンテンツを識別します。これは検索結果の説明や、大規模言語モデルにデータを送信する前のコンテキストのトリミングに特に有用で、トークン使用量の削減に役立ちます。
パフォーマンスとコストの最適化 — Quantization、Tiered Storage、JSON Acceleration、NGRAM Index
Milvus 2.6 における最も注目すべき改善の 1 つは、RabitQ 量子化の導入です。この技術は高い再現率を維持しながら、メモリ使用量を大幅に削減します。従来のバイナリ量子化と比較して、RabitQ は精度を 10% 以上向上させ、大幅なパフォーマンス向上を実現します。
階層型ストレージも大きな強化点です。コールドデータは S3 などのオブジェクトストレージに残し、ホットデータはローカルにキャッシュします。これによりメモリとディスクの使用量が削減され、パフォーマンスを犠牲にすることなく効率的なマルチテナントワークロードが可能になります。
Milvus 2.6 では、JSON shredding と転置インデックスによって JSON フィルタリングも高速化されています。これにより、動的フィールドや複雑なメタデータクエリのパフォーマンスが劇的に向上します。ユーザーは必要に応じて JSON フィールドにインデックスを構築することで、さらにパフォーマンスを高めることができます。
また、部分文字列およびパターンマッチングを高速化するために NGRAM インデックスも導入しました。これにより LIKE クエリのパフォーマンスが最大 100 倍向上しますが、メモリ使用量は増加します。ユーザーはワークロードに基づいて適切なトレードオフを選択できます。
アーキテクチャのモダナイゼーション — Streaming Node、Woodpecker WAL、CDC、Data Lake Integration
Milvus 2.6 では新しいストリーミングノードが導入され、リアルタイム取り込みと履歴データの提供が分離されました。これにより一貫性の保証が向上し、ロードバランシングが簡素化され、メモリ負荷が軽減されます。
Woodpecker は Kafka や Pulsar などの外部依存関係を置き換え、保守の複雑さを軽減します。メモリバッファモードとコミットバッファモードの両方をサポートし、レイテンシとコストのバランスを取ります。今後のリリースではさらなる最適化が予定されています。
Change Data Capture は Milvus に直接統合され、レプリケーション、増分バックアップ、データウェアハウスとの同期を可能にします。これはグローバルデプロイメントと大規模なデータ増加の基盤となります。
最後に、Milvus は Iceberg や Delta Lake などのデータレイクと統合します。ユーザーはストレージを複製することなく、外部データ上に直接インデックスを構築できます。Spark と Ray は特徴量エンジニアリング、重複排除、クラスタリング、ETL ワークフローに使用でき、すべて同じ基盤ストレージとインデックスを共有します。