Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

マイスケールにおけるハイブリッド検索のマスタリング:包括的なガイド

ハイブリッド検索は、複数の検索アルゴリズムを統合することで、検索結果の正確性と関連性を高める強力な技術です。全文検索とベクトル検索の強みを組み合わせることで、ハイブリッド検索はより効果的で包括的なユーザー検索体験を提供します。

MyScaleDBのバージョン1.6.2では、このハイブリッド検索 (opens new window)機能が導入されました。それがどのように実装され、検索の世界においてゲームチェンジャーとなるのかを探ってみましょう。

# ベクトル検索と全文検索の組み合わせ

ベクトルデータベース内のハイブリッド検索システムでは、通常、2つの異なるタイプの検索が使用されます:ベクトル検索 (opens new window)全文検索 (opens new window)です。

  • ベクトル検索: このアプローチは、意味的な類似性に基づいて結果を見つけ出し、単語やフレーズの意味と文脈を把握する機械学習モデルを活用することがよくあります。これは、ドキュメント間で微妙な関連性や概念的な関連性のある結果をキャプチャするのに特に役立ちます。
  • 全文検索: この方法は、テキストからキーワードやフレーズを直接マッチングします。これはより伝統的な方法であり、クエリの正確な表現が重要な場合に非常に効果的です。

これらの検索タイプはそれぞれに強みと制限があります。全文検索は基本的なキーワードの検索とテキストのマッチングに優れており、特定の用語が重要なクエリには理想的です。一方、ベクトル検索はドキュメント間の意味的なマッチングや深い意味の理解に優れていますが、短いテキストクエリでは効率が低下する場合があります。

ハイブリッド検索は、ベクトル検索と全文検索の機能を組み合わせることで、「ベストオブ両方の世界」のアプローチを実現します。この統合により、ユーザーは正確なキーワードマッチングを活用しながらも、より広範な意味的な文脈を捉えることができ、より包括的で効果的な検索体験を得ることができます。

# フュージョンアルゴリズム

ベクトル検索と全文検索のそれぞれの検索方法は、結果のセットを生成し、それぞれの検索方法に基づいて特定の結果がクエリにどれだけ一致するかを示す関連スコアが付けられます。

フュージョンアルゴリズムは、これらの結果を効果的に統合します。アルゴリズムは、ベクトル検索と全文検索のスコアを調整し正規化し、比較可能にし、シームレスに組み合わせることができます。このプロセスにより、ユーザーに提示される最終結果は、両方の検索方法の強みを統合し、意味的に関連性のあるテキスト的に正確な結果となります。

MyScaleDBでは、ハイブリッド検索はテキスト検索からのBM25スコア(「lex」として参照)とベクトル検索からの距離メトリックス(「sem」として参照)を活用しています。この統合を実現するため、MyScaleDBは現在、Relative Score Fusion(RSF)とReciprocal Rank Fusion(RRF)の2つのフュージョンアルゴリズムをサポートしています。

# Relative Score Fusion(RSF)

Relative Score Fusion(RSF)は、ベクトル検索と全文検索の結果を効果的に統合するための方法です。このプロセスには2つの主要なステップがあります:スコアの正規化と重み付き合計の計算です。

スコアの正規化:

  • 正規化: RSFは、ベクトル検索と全文検索のスコアを正規化することから始まります。これには、通常、0から1までの共通のスケールに生のスコアを変換する作業が含まれます。
  • 最高スコアと最低スコア: 各検索タイプ(ベクトルとテキスト)の最高スコアは1にスケーリングされ、その検索内で最も関連性の高い結果を表します。逆に、最低スコアは0にスケーリングされ、最も関連性の低い結果を表します。
  • 比例調整: その他のスコアは、最高スコアと最低スコアの間の相対的な位置に基づいて、この0から1の範囲内で比例的に調整されます。

重み付き合計:

  • 重みの割り当て: 正規化後、各スコアは、その特定の検索タイプ(ベクトルまたは全文)に割り当てられた重みで乗算されます。
  • 最終スコアの計算: 各結果の最終スコアは、これらの重み付き正規化スコアを合計することによって決定されます。これにより、両方の検索方法の強みを統合したバランスの取れた包括的なランキングが得られます。

使用される正規化の式は次のとおりです:

RSFの目的は、ベクトル検索からの意味的な関連性と全文検索からのテキストの正確さを統合した統一されたランキングを作成することです。スコアの正規化と適切な重みの適用により、RSFは最終結果がバランスよくなり、両方の検索方法の強みを組み合わせてユーザーにより包括的で正確な結果を提供します。

# Reciprocal Rank Fusion(RRF)

Reciprocal Rank Fusion(RRF)は、ベクトル検索と全文検索などの異なる検索方法の結果を組み合わせるための代替手法です。RSFとは異なり、RRFはスコアの正規化を必要としません。代わりに、次の式を使用して、各結果セット内の位置に基づいて結果をランク付けします。ここで、kは下位ランクの結果の重要性を調整する任意の定数です。

RRFの主な利点は、スコアの正規化の必要性を回避することです。RRFはスコアの正規化をバイパスし、ランクの位置に直接焦点を当てるため、特に異なる検索方法のスコアリングスケールが直接比較できない場合に、異なる検索方法の結果を統合する際に便利です。

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# MyScaleDBでのハイブリッド検索の実行方法

例を使用して、MyScaleでハイブリッド検索を実行する方法を説明します。以下に示すSQLクエリは、事前にMyScaleクラスタにインポートされたWikipediaデータセットを基にしています。

まず、テキスト列 'body' に対して全文検索(FTSインデックス (opens new window))と、ベクトル列 'body_vector' 上のCosine距離を使用したMSTGベクトルインデックスを作成します。

CREATE TABLE wiki_abstract
(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
    `body_vector` Array(Float32),
    VECTOR INDEX body_vec_idx body_vector TYPE MSTG('metric_type=Cosine'),
    INDEX body_idx body TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}') GRANULARITY 1,
    CONSTRAINT check_length CHECK length(body_vector) = 1024
) ENGINE = MergeTree ORDER BY id;

このSQL CREATE TABLE文では、BM25全文検索のためのFTSインデックスと、高次元データのCosine類似度検索のためのベクトルインデックスを定義しています。

次に、テキスト列とベクトル列の両方を利用するハイブリッド検索を実行します。以下にその方法を示します。

SELECT id, body, HybridSearch('fusion_type=RSF', 'fusion_weight=0.4')(body_vector, body, 
    HuggingFaceEmbedText('Who won the Polar Medal'), 'Who won the Polar Medal') AS score
FROM wiki_abstract
ORDER BY score DESC
LIMIT 5;

このハイブリッド検索クエリでは、まず、body_vector 列に対してベクトル検索の distance() 関数を実行し、クエリベクトルに最も類似したオブジェクトを見つけます。同時に、body 列に対して TextSearch() 関数を使用して全文検索を実行し、クエリの用語の頻度に基づいて結果をランク付けします。その後、選択したフュージョンアルゴリズム(この場合はRSF)を使用して、上位の候補を返します。

ハイブリッド検索結果

この例では、全文検索に対して重み0.4、ベクトル検索に対して重み0.6を適用しました。これらの重みを調整して、データと検索要件に最適なバランスを見つけることができます。

# ハイブリッド検索を使用するタイミング

ハイブリッド検索クエリは、セマンティックベクトル検索の力を活用しながら、全文検索の正確なキーワードマッチングに依存する検索システムに特に有用です。たとえば、「Who won the Polar Medal」という検索クエリは、標準のキーワードベースの全文検索や純粋なセマンティックベクトル検索よりも、ハイブリッド検索を使用した方がより正確で関連性の高い結果を得ることができます。

このシナリオでは:

  • ベクトル検索の上位5つの結果には、3つの正しい回答が含まれています:

ベクトル検索結果

  • 全文検索の上位5つの結果には、2つの正しい回答が含まれています:

全文検索検索結果

  • 前のセクションで示したように、ハイブリッド検索の上位5つの結果には、4つの正しい回答が含まれています。

ベクトル検索と全文検索を組み合わせることで、ハイブリッド検索は検索の精度を大幅に向上させ、より高い検索の正確性と関連性のある結果を提供します。

Join Our Newsletter

# 結論

ハイブリッド検索は重要です。なぜなら、キーワード検索の直接性とセマンティック検索の文脈の深さを組み合わせることで、検索結果の精度と関連性を向上させるからです。この二重アプローチにより、ユーザーは正確な一致だけでなく、文脈に関連性のある結果も受け取ることができます。さらに、ハイブリッド検索はさまざまなクエリを処理する能力に優れており、ユーザーの意図に合わせた包括的で適応性のある結果を提供します。パフォーマンスの最適化とさまざまなアプリケーションへの適応能力により、ハイブリッド検索は現代の情報検索における重要な技術です。

この記事では、ハイブリッド検索の概念とMyScaleでの実装について説明しました。MyScaleでハイブリッド検索を使用する方法についての質問がある場合は、MyScaleドキュメント (opens new window)を参照するか、Discord (opens new window)に参加してヘルプを求めてください。

Keep Reading
images
MyScaleDBでベクトル検索のための複雑なSQLクエリを実行する方法

ベクトル検索は、ベクトル表現に基づいてデータセット内の類似ベクトルやデータポイントを検索する方法です。Pinecone、Milvus、Qdrant、Weaviateなどの専用のベクトルデータベースとは異なり、MyScaleDBはオープンソースのSQL互換データベースであるClickHouseをベースにしています。 Structured Query Language(SQL)は、リレーショナルデー ...

images
RAGによるパフォーマンス向上を発見しよう

この記事は元々The New Stackに掲載されたものです。 大規模言語モデル(LLM)は、文脈を理解する能力を持っています。天文学、歴史、物理学など、どんなトピックであっても、広範なトレーニングデータ ...

images
MyScale vs. PostgreSQL&OpenSearch:統合ベクトルデータベースの比較

この記事では、MyScale という統合ベクトルデータベースと、従来の 2 つのデータベースである PostgreSQL と OpenSearch を比較します。両方のデータベースは、最近ベクトル類似性検索をツールボックスに追加しました。 ::: note 注意: 私たちはオープンソースプロジェクト [vector-db-benchmark](https://myscale.github.io/ ...

Start building your Al projects with MyScale today

Free Trial
Contact Us