
ハイブリッド検索は、複数の検索アルゴリズムを組み合わせることで、検索結果の精度や関連性を向上させる技術です。一般的に、ハイブリッド検索とはキーワード検索とベクトル検索を組み合わせた方法を指します。これら二つのアルゴリズムの強みを活用することで、ユーザーに効果的な検索体験を提供します。
Weaviateベクトルデータベースにおけるハイブリッド検索では、スパースベクトルとデンスベクトルの両方が利用されます。
スパースベクトルにはトークナイザーが必要ですが、Weaviate v1.28 では日本語テキスト向けに新しいトークナイザーKAGOME_JAが導入されました。
このブログ記事では、ハイブリッド検索の基本を学び、日本語テキストでKAGOME_JAトークナイザーを使ったWeaviateのハイブリッド検索の方法を解説します。
ハイブリッド検索の説明
Weaviateのハイブリッド検索は、デンスベクトルとスパースベクトルを統合して、それぞれの検索手法の利点を活かします。 これら二つのベクトルは異なるアルゴリズムによって計算されます。

キーワード検索
キーワード検索にはスパースベクトルを使用します。 スパースベクトルは、主にゼロ値が多く一部に非ゼロ値を持つ構造をしており、デンスベクトルは主に非ゼロ値で構成されています。 スパース埋め込みは、BM25 や SPLADE のようなアルゴリズムから生成されます。 Weaviateにおける現在のハイブリッド検索実装では、BM25/BM25Fが使用されています。
スパース埋め込みを生成するためには、トークナイザーが必要です。 Weaviateでは、日本語テキスト向けに以下の3つのトークナイザーが利用可能です。
| トークナイザー | TRIGAM | GSE | KAGOME_JA(Weaviate v1.28で導入) |
|---|---|---|---|
| メリット | 辞書不要 部分一致する | 辞書にある単語をできるだけ 部分一致する | 辞書にある単語 不要な結果が出ない |
| デメリット | 不自然な単語がある 出てくる単語が多数 | 英単語は1文字ずつに分割 不自然な単語がある 辞書が必要 | 単語中の部分一致はしない 辞書が必要 |
| Source: Jun Ohtani |