使い方・開発 中級
ハイブリッド検索
Hybrid Search
キーワード検索とベクトル検索(意味検索)を組み合わせて、両方の長所を生かす検索方式です。固有名詞や型番にも言い換えにも強くなり、RAGの検索精度が安定します。どちらか一方より取りこぼしが減ります。
別の呼び方ハイブリッドサーチ
例型番の完全一致はキーワード検索、言い換えは意味検索で拾うハイブリッド検索に切り替えた。
詳しく
ハイブリッド検索とは、従来型のキーワード検索と、ベクトルを使った意味検索(セマンティック検索)を組み合わせ、両方の結果を統合する検索方式です。それぞれの弱点を補い合えるため、RAGの検索部分で広く採用されています。
2つの検索の得意・不得意
- キーワード検索(BM25などの語の一致にもとづく方式):型番、人名、社名、エラーコード、法律の条番号のような、表記が決まっている語に強い方式です。ただし「車」と「自動車」のような言い換えや、質問と文書で言葉が異なる場合には弱くなります。
- ベクトル検索:意味の近さで探すため、言い換えや曖昧な質問に強い一方、「ABC-1234」のような記号的な語の完全一致が苦手で、似たものが上位に出てしまうことがあります。
両方を使えば、「型番はキーワードで確実に拾い、説明の言い換えは意味で拾う」という動きができます。
結果の統合のしかた
2つの検索はスコアの尺度が異なるため、単純に足し算はできません。よく使われる方法は次のとおりです。
- 順位で統合する:各検索の順位をもとに点数を付けて合算します。RRF(Reciprocal Rank Fusion)と呼ばれる方法が代表的で、スコアの調整が不要で扱いやすい手法です。
- 重み付きで合算する:スコアを正規化して、重みをかけて足します。キーワード寄りか意味寄りかを調整できます。
統合した候補に対して、さらにリランキングをかけ、上位の数件を生成モデルへ渡す構成もよく使われます。
具体例
製品サポートのFAQ検索を考えます。ユーザーが「ERR-4021が出て印刷できない」と入力しました。ベクトル検索だけでは、印刷トラブル全般の記事が並び、ERR-4021の専用記事が埋もれるかもしれません。キーワード検索は、ERR-4021を含む記事を確実に見つけます。反対に「プリンターが急に反応しなくなった」のような曖昧な入力では、意味検索が関連記事を拾います。両方を使うことで、どちらのタイプの質問にも対応できます。
使うときの注意
- 日本語ではキーワード検索の下ごしらえが重要です。 日本語は単語の区切りがないため、形態素解析やN-gramの設定によって、キーワード検索の精度が変わります。
- 対応状況を確認します。 一部のベクトルデータベースや検索エンジンは、ハイブリッド検索を標準機能として提供していますが、対応の仕方は製品ごとに違います。
- 重みや候補数の調整は実測で行います。 実際の質問のサンプルを用意し、正しい文書が上位に入る割合を測りながら調整します。
- 構成が複雑になります。 2つの検索基盤の運用と、更新時の整合性を保つ手間が増えます。小規模なら、まず片方で始めて、問題が出てから追加するのも現実的です。
関連する考え方
意味で探す仕組みはセマンティック検索、そのもとになる数値化は埋め込みです。RAGの精度を高める工夫として、チャンク分割の見直しやリランキングと組み合わせて検討されます。
あわせて知りたい言葉
- セマンティック検索言葉の一致ではなく、文章の意味の近さをもとに探す検索方式です。「車」で「自動車」の文書が見つかるなど、言い換えや曖昧な質問にも対応しやすいのが特徴です。ただし型番など完全一致が必要な検索は苦手です。
- RAG(検索拡張生成)質問に関係する文書を検索で取り出し、それを LLM に渡してから回答させる仕組みです。モデルが学習していない社内資料や、最新の情報にもとづいた回答ができるようになります。
- リランキング検索で取り出した候補を、質問との関連度でもう一度精密に並べ替える処理のことです。RAGで本当に役立つ資料を上位に残し、最終的な回答の質を高めるために使われます。
- 埋め込み文章や画像などを、意味の近さが距離として表れる数値の並び(ベクトル)に変換したものです。言葉が違っても意味の近い文書を探す検索や、分類、RAG の土台に使われます。
- ベクトルデータベース文章や画像を数値の並び(埋め込み)にして保存し、意味の近いものを高速に探せるデータベースです。RAG で関連する文書を探す部分に、とてもよく使われています。仕組みを知ると選びやすくなります。