Milvusにおけるハイブリッド・サーチのレビュー

Milvus 2.4では、単一のコレクション内に複数のベクトルカラムを導入することで、ハイブリッド検索機能を拡張しました。このアップグレードにより、複数のベクトルタイプとフィールドにまたがる同時検索が可能になり、より高度で柔軟なデータ検索が可能になりました。各フィールドからの検索結果は統合され、複数の再ランク付けアルゴリズムを用いて再ランク付けされ、より正確な結果を提供する。
なぜこの機能が重要で、どのような利点があるのでしょうか?この機能の背景にある設計戦略とは?この投稿では、これらの疑問を探っていきます。また、単一ベクトル検索とハイブリッド検索の結果を比較した実用的な例を示し、この強力な新機能がより正確な結果をもたらすことを実証します。
ハイブリッド検索とは?
Milvusにおけるハイブリッド検索とは何か?
Milvusは1つのコレクション内で同じデータセットに対して最大10個のベクトルフィールドの作成をサポートしています。このサポートに基づき、ハイブリッド検索では複数のベクター列を同時に検索することができます。この機能により、マルチモーダル検索、スパースとデンツのハイブリッド検索、デンツとフルテキストのハイブリッド検索を組み合わせることができ、多用途で柔軟な検索機能を提供します。
これらの異なる列のベクトルは、データの多様な側面を表し、異なる埋め込みモデルに由来するか、または異なる処理方法を経ている。ハイブリッド検索の結果は、様々な再順位付け戦略を用いて統合される。
ハイブリッド検索の仕組み](https://assets.zilliz.com/how_hybrid_search_works_5250109da8.png)
Milvusにおけるハイブリッド検索の仕組み
この機能により、異なるカラムを
情報の複数の視点を表現する**ことができます。例えば、eコマースでは、商品画像には正面、側面、上面があります。異なるビューは、異なるタイプまたは次元のベクトルで表現することができます。
BERT](https://zilliz.com/learn/explore-colbert-token-level-embedding-and-ranking-model-for-similarity-search#A-Quick-Recap-of-BERT)やTransformersのようなモデルによる密な埋め込みや、BM25、BGE-M3,、SPLADEのようなアルゴリズムによる疎な埋め込みが含まれます。
画像、動画、音声、テキストファイルなど様々な非構造化データからのマルチモーダルベクトルの融合**をサポートします。例えば、犯罪捜査では、指紋、声紋、顔認識などの生体認証モダリティを通じて容疑者を表現することができ、異なるモダリティを横断して個人を特定するのに役立ちます。
ベクトル検索と全文検索の融合をサポートします。
ハイブリッド検索を改良した理由
OpenAIが最近発表したマルチモーダルモデルGPT-4oは、AIの将来についての議論を再燃させている。マルチモーダルなデータを扱うことは、人工知能(AGI)を実現するためにますます必要になってきている。その出現はまた、"あらゆるものがベクトル化できる"という概念を強調している。AI時代の符号化手法であるベクトルは、異種モダリティをつなぐ要である。ベクトルがカプセル化する情報はますます多様化、複雑化しており、ベクトルデータを保存、検索するためのベクトルデータベースへの要求が高まっている。
したがって、ハイブリッド検索への進化は極めて重要である。Milvusが最新リリースでハイブリッド検索のサポートを導入したのは、このような需要の高まりに対応するためです。この戦略的強化により、Milvusは複雑なマルチモーダルデータ表現に対応し、ますます複雑化するデータセットの理解と処理におけるAIシステムの能力を推進することができる。
この新機能により、Milvusは開発者にAI駆動型アプリケーションの新たな可能性を追求する力を与え、データの複雑性と実用的な洞察の間のギャップをさらに埋めることができます。
ハイブリッド検索をどのように設計したか
複数のベクトル列にわたるベクトル検索をサポートするためには、Milvusの設計を大幅に再構築する必要がありました。例えば、システムの互換性と安定性を確保するためにストレージと書き込みの制限を解除し、複雑なクエリを処理するために複数のベクトル列に対する高度な検索メソッドを導入しました。
ハイブリッド検索の仕組み
以前は、Milvusは書き込みパスでコレクションごとに1つのベクターカラムのみを許可していました。Milvusはこの制限を撤廃し、コレクションごとにデフォルトで4つのベクターカラムを導入しました。コレクション内の各ベクトルカラムは異なるメトリックとインデックスタイプをサポートすることができます。
**システムの互換性のために、すべてのベクトル・カラムのインデックスが作成され、メモリにロードされたときのみ、コレクションを照会できます。
マルチルート・ベクター検索とハイブリッド再ランキング戦略を実装し、読み取りパスの複数のベクター列にまたがる検索を実行します。そのプロセスは以下の通りである:
1.検索:各ベクトル検索ルート(各列)の検索結果を制御する内部パラメータを定義する。このステップでは、filterやlimitのような中間パラメータはサポートするが、output_fieldやgroup_by_fieldのような出力パラメータはサポートしない。
2.再ランク付け: 各検索ルートから結果を得た後、次のステップは再ランク付けプロセスでこれらの結果をマージすることである。Milvusは2つの古典的な再ランク付け戦略をサポートしています:Ranked Retrieval Fusion (RRF)とWeightedRankerです。さらにMilvusでは、クライアント側でリランキングモデルを活用して結果を並べ替えることもできます。
Milvusにおけるハイブリッド検索プロセスとは](https://assets.zilliz.com/what_is_the_hybrid_search_process_within_Milvus_37da7c1806.png)
Milvusのハイブリッド検索プロセスとは?
このアーキテクチャにより、Milvusは複数のベクトル列が不可欠な環境における情報の保存と検索の複雑さを効果的に処理することができます。
再ランキング戦略
現在、Milvusは以下のリランキング戦略をサポートしている:
1.順位付き検索融合(RRF):このストラテジーは異なるベクトル列のランクに基づいて結果を結合します。
2.WeightedRanker:このアプローチは、異なるベクトル検索からのスコア(またはベクトル距離)の加重平均を計算することによって結果をマージする。各ベクトルフィールドの重要度に基づいて重みを割り当てます。
次の図は、Milvusにおけるリランキングプロセスの動作を示しています。
リランキングの仕組み](https://assets.zilliz.com/how_reranking_works_1b73f9e281.png)
Milvusにおけるランキングの仕組み
順位付き検索フュージョン(RRF)
RRFは、検索結果をランクの逆数に基づいて結合するデータ融合アルゴリズムである。特に、重要度の明確な優先順位がない場合に、各ベクトルフィールドの影響力をバランスさせる。すべてのベクトルフィールドを同等に考慮したい場合や、各フィールドの相対的な重要度が不明確な場合にこのストラテジーを使用する。
RRFの基本的なプロセスは以下の通りである:
検索中にランキングを収集する:** 複数のベクトル・フィールドにまたがるリトリーバーが結果を検索し、ソートする。
ランク・フュージョン:** RRFアルゴリズムは、各リトリーバーからのランクを重み付けし、結合します。計算式は以下の通り:
RRF式](https://assets.zilliz.com/RRF_formula_5388322026.png)
ここで、↪Lu_1 は異なる検索ルートの数を表し、rank𝑖(↪Ll_1D451) は𝑖番目の検索者による検索文書𝑑のランク位置、↪Ll_1D458 は平滑化パラメータで、通常60に設定される。
- 総合ランキング:** 検索された結果を総合スコアに基づいて再ランク付けし、最終的な結果を生成する。
WeightedRanker
WeightedRanker 戦略は、各ベクトルフィールドの重要度に基づいて、各ベクトル検索ルー トからの結果に異なる重みを割り当てます。この再ランキング戦略は、各ベクトルフィールドの重要度が異なる場合に適用され、 特定のベクトルフィールドに高い重みを割り当てることで、他のベクトルフィールドよ りも特定のベクトルフィールドを強調することができます。例えば、マルチモーダル検索では、画像の色分布よりもテキストの説明の方が重要だと考えられるかもしれない。
WeightedRankerの基本的な処理は以下の通りである:
検索中にスコアを収集:**異なるベクトル検索ルートから結果とそのスコアを収集する。
スコアの正規化:**各ルートからのスコアを[0,1]の範囲に正規化します。スコアの分布はメトリックの種類によって異なるため、この正規化は非常に重要です。例えば、IPの距離は[-∞,+∞]、L2の距離は[0,+∞]です。Milvusはarctan関数を採用し、値を[0,1]の範囲に変換することで、異なるメトリックタイプに対して標準化された基準を提供する。
重み割り当て:** 各ベクトル検索ルートに重み
w𝑖を割り当てる。ユーザーは、データソースの信頼性、正確性、その他の適切なメトリックを反映する重みを指定する。各重みの範囲は[0,1]である。スコア・フュージョン:** 正規化されたスコアの加重平均を計算し、最終的なスコアを導き出します。次に、この最高スコアから最低スコアに基づいて結果をランク付けし、最終的なソート結果を生成します。
重み付きランカー計算式](https://assets.zilliz.com/weightedranker_fomula_e36fcf6858.png)
ハイブリッド探索と単一ベクトル探索の例による比較
このセクションでは、単一ベクトル検索とハイブリッド検索をそれぞれ使った画像検索結果を比較し、ハイブリッド検索がいかに検索結果の質を向上させるかを示します。詳細はthis notebookのコードスニペットを参照してください。
データセット
データセットとして、公共ソースから信号機を含む画像をダウンロードした。
データセット](https://assets.zilliz.com/the_dataset_9891c977d2.png)
クエリー画像
このデモでは、下の画像がデータセットから探したいクエリー画像です。
クエリー画像](https://assets.zilliz.com/query_image_d173d91bb3.png)
ResNetとCLIPによる特徴抽出
特徴抽出を行い、画像をMilvusに挿入する前に、複数のベクトルカラムを持つコレクションを作成する必要があります。以下のコードでは、異なる埋め込みモデルを用いて抽出された画像特徴ベクトルを格納するために、2つのベクトルカラムを作成しています。
複数のベクトル列を持つコレクションを作成する](https://assets.zilliz.com/Create_a_collection_with_multiple_vector_columns_7361137e04.png)
このデモでは、埋め込みモデルとしてResNetとCLIPを使います。
- ResNet (Residual Network):** 画像認識と分類のための一般的なモデル。
resnet.png
- CLIP (Contrastive Language-Image Pre-training): 視覚データとテキストデータのギャップを埋めるテキスト-画像バイモーダル埋め込みモデル。画像検索のためのキャプションからの特徴抽出に利用する。
クリップ](https://assets.zilliz.com/clip_75cd5626b9.png)
ResNetベクトルによる単一ベクトル検索結果
画像検索において、データセットにクエリと同じ画像が含まれている場合、単一列の密なベクトル検索は正しい結果を素早く返すことができる。しかし、クエリ画像は、アングルや環境背景が異なるため、実際のケースではデータセット内の画像と異なることが多く、ベクトル検索結果に影響を与える。この例では、クエリ画像から特定の特徴、特に信号機に着目して画像検索を行う。
クエリ画像の特定の特徴 - 信号機
下の結果からわかるように、返された画像はすべて、信号機のオブジェクトを主に強調しています。しかし、クエリ画像(No.3)自体は、最も類似した画像としてランク付けされていません。検索結果を上位2つの画像だけに限定すると、クエリ画像は検索結果にまったく表示されません。
検索結果 - resnet.png](https://assets.zilliz.com/search_results_retnes_ba9e0ddd95.png)
CLIPベクトルによる単一ベクトル検索結果
次に、別の単一ベクトル検索を調べてみよう。CLIPのマルチモーダル理解機能により、テキスト入力で画像を検索することができる。ここでは、検索入力は "背景に建物がある画像" である。
検索結果 - クリップ](https://assets.zilliz.com/search_results_clip_351c1de3ad.png)
結果は、返された画像が建物という背景要素に焦点を当てていることを示している。しかし、クエリ画像はまだトップマッチではないようです。
ハイブリッド検索結果
前の2つの単一ルートによるベクトル検索の結果は理想的ではなかったので、複数のベクトル列にわたるハイブリッド検索を実行した。このハイブリッド検索では、2つの AnnSearchRequest ルートからの結果が加重平均法を用いて融合される。ResNet列とCLIP列の重みはそれぞれ0.7と0.8に設定した。
ハイブリッド検索結果](https://assets.zilliz.com/hybrid_search_results_cded9b4d3d.png)
上の結果からわかるように、今回はクエリ画像が最も類似した(トップ1)画像として返されました。
この例は、ハイブリッド検索が画像とテキストからのマルチモーダル入力をいかに効果的に統合するかを示している。単一ベクトル検索と比較して、ハイブリッド検索は最終結果において大幅な改善を示しています。
まとめ
ハイブリッド検索はMilvusのコア機能であり、複数のベクトルフィールドにまたがる同時検索を可能にすることでデータ検索機能を強化する。この機能は、ハイブリッドスパース検索とハイブリッドデンシー検索、マルチモーダル検索、ハイブリッドデンシー検索とフルテキスト検索を組み合わせたもので、これらの検索結果はすべて統合され、より正確で関連性の高い最終結果を得るために効率的な再ランク付け戦略を用いて再ランク付けされます。
今後は、ハイブリッド・サーチを様々なドメインに拡張することに注力していく。例えば、TwitterやTikTokでトレンドのソーシャル・トピックを推薦するようなユースケースのために、時間ベースの再ランク付けを活用するように拡張することができます。また、より洗練された検索体験を提供するために、よりロバストなフュージョン・アルゴリズムとリランキング・モデルを導入する予定です。
ハイブリッド検索の可能性は、ここで取り上げたものだけではありません。今後のアップデートにご期待ください。
読み続けて

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
The Zilliz MCP Server enables developers to manage vector databases using natural language, simplifying database operations and AI workflows.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.
