ハイブリッド検索(ベクトル+キーワード)

Weaviateにおける**ハイブリッド検索(Hybrid Search)**とは、ベクトル検索(意味ベース)とキーワード検索(シンボリックベース)を組み合わせた検索手法です。これにより、精度と柔軟性の高い情報検索が可能になります。以下に詳しく説明します。


1. ハイブリッド検索の目的と背景

Weaviateでは、通常のベクトル検索(例:nearVector, nearText)は意味的な類似性を重視します。一方、キーワード検索(例:BM25など)は単語の一致や頻度に基づくスコアリングを行います。

ハイブリッド検索は、両者の利点を融合することで、意味的な一致と文字通りの一致の両方を考慮した検索結果を得ることを目的としています。


2. 仕組みの概要

ハイブリッド検索は以下の2つのスコアを組み合わせて、最終スコアを算出します。

  • ベクトルスコア(semantic score):クエリの意味ベクトルとオブジェクトのベクトルとの類似度(例:cosine similarity)

  • BM25スコア(symbolic score):クエリ中のキーワードとドキュメントの一致度(文字ベース)

この2つのスコアを**加重平均(weighting)**して、結果をランキングします。


3. 実装方法

GraphQLを使用した例(hybrid引数を使用):

graphql
{ Get { Article( hybrid: { query: "climate change effects", alpha: 0.7 } ) { title content _additional { score } } } }

各パラメータの意味

  • query:検索クエリ文字列(キーワード的意味を持ちつつ、ベクトル化もされる)

  • alpha:スコア合成におけるベクトル検索の重み(0.0〜1.0)

    • 1.0 = 完全なベクトル検索

    • 0.0 = 完全なキーワード検索(BM25)


4. 利用上のポイント

  • alphaの調整により検索結果の特性を制御できます。

  • キーワードとベクトルの両方にマッチするドキュメントはスコアが高くなり、上位にランクインします。

  • 多様なデータソースや検索用途(FAQ、ナレッジベース、商品検索など)に適しています。


5. ハイブリッド検索が有効なケース

  • クエリが曖昧で、意味理解が必要な場合

  • 単語一致だけでは精度が出ないが、完全なベクトル検索ではノイズが増える場合

  • FAQ検索や社内文書検索など、構造化された文章と非構造テキストの両方を対象とする場合


6. 注意点

  • ハイブリッド検索を使用するには、対象プロパティがBM25の有効化(indexInvertedtrue)とベクトル化(vectorizePropertyNameなど)の両方をサポートしている必要があります。

  • スキーマ設計の段階で、どのプロパティがキーワード検索対象かを明確にしておく必要があります。


まとめ

ハイブリッド検索は、Weaviateにおいて検索の精度と柔軟性を両立する強力な機能です。ベクトルとキーワードという異なるアプローチを組み合わせることで、よりユーザー意図に即した検索結果を提供できます。用途やデータに応じて、alphaパラメータを調整しながら最適な検索体験を設計することが重要です。

ChatGPT4o 生成日:2025/06/20