RAG・検索基盤

ハイブリッド検索とは|「レポートの提出期限」で聞いたら、語の検索は0%だった

ハイブリッド検索とは何を組み合わせるのか語の検索だけでは何が起きるのかどうやって混ぜるのか

「宿泊費」と書かれた規程を「ホテル代」で探すと、語が一致しないので当たりません。利用者は規程の言葉づかいを知らないまま聞いてきます。

言い換えで聞いた5問で測ったところ、語の検索だけの適合率は40.0%でした。「レポートの提出期限」に至っては0%です。

この記事の要点

  • 言い換えで聞くと、語の検索だけの適合率は46.7%から40.0%
  • 「レポートの提出期限」は0%
  • 言い換えを補うと53.3%まで戻る
  • 順位で混ぜる方式は調整する値が要らない

「レポートの提出期限」で聞いたら、語の検索は0%だった

言い換えで聞いた5問で実際に測りました。語の検索だけは40.0%、補うと53.3%、混ぜても53.3%です。

ハイブリッド検索が何を救うのかを、言い換えで聞いた問いで測りました。用意したのは文書中の語と違う言葉で聞いた問い5件です。

検索は本当に実行しています。ただし意味の近さは同義語の辞書で模しており、埋め込みによる検索ではありません。語が違っても当たる仕組みを置いた形です。

javascript
function rrf(listA, listB, k = 60) {
  // 順位の逆数を足して混ぜる(Reciprocal Rank Fusion)
  const score = new Map();
  listA.forEach((x, r) => score.set(x.i, (score.get(x.i) || 0) + 1 / (k + r + 1)));
  listB.forEach((x, r) => score.set(x.i, (score.get(x.i) || 0) + 1 / (k + r + 1)));
  return [...score.entries()].map(([i, s]) => ({ i, s })).sort((a, b) => b.s - a.s);
}
text
問い                    語の検索だけ  言い換えを補う  両方を混ぜる
ホテル代の限度額                         33%         67%         67%
出張手当は日帰りだと                       67%         67%         67%
仮払の申請                            67%         67%         67%
消耗品の購入                           33%         33%         33%
レポートの提出期限                         0%         33%         33%

上位3件の適合率  語の検索だけ: 40.0%   言い換えを補う: 53.3%   両方を混ぜる: 53.3%

元の語で聞いた場合(比較)
  語の検索だけ: 46.7%

最後の行が0%です。「レポートの提出期限」で聞くと、上位3件に正解が1件も入りません。文書には「報告書」と書いてあるためです。

言い換えで聞かれると落ちる

比較のために、元の語で聞いた場合も測りました。46.7%が40.0%に落ちています

利用者は文書の言葉づかいを知りません。「宿泊費」と書いてあっても「ホテル代」と聞きます。この落ち込みは、実運用では常に起きています

補うと戻る

言い換えを補うと53.3%まで戻りました。0%だった問いも33%になっています。語が一致するようにしてやれば、あとは同じ計算で当たります

実際の構成では、この役割を意味の近さで探す仕組みが担います。埋め込みの検索が、言い換えを吸収する形です。

混ぜても追い越さなかった

正直に書いておくと、混ぜる方式も53.3%で、補う方式と同じでした。この規模では差が出ていません。

混ぜる価値が出るのは、片方が外した問いをもう片方が拾う場面です。今回は補う側が一貫して強かったので、混ぜても順位が変わりませんでした。

利用者は文書の言葉づかいを知らない。そこが落ちる。

単位: %元の語で聞く・語の検索だけ46.7%言い換えで聞く・語の検索だけ40%言い換えで聞く・補う53.3%言い換えで聞く・混ぜる53.3%問い5件での実測。意味の近さは同義語の辞書で模しており、埋め込みによる検索ではない。
図1 ── 言い換えで聞いたときの上位3件の適合率
出典Elasticsearch Reference「Reciprocal rank fusion」2026-08-18 確認
Reciprocal rank fusion (RRF) is a method for combining multiple result sets with different relevance indicators into a single result set.
原文Elasticsearch Reference「Reciprocal rank fusion」 この内容の有効期限2027-02-18

ハイブリッド検索とは何を組み合わせるのか

性質の違う検索を2つ以上走らせ、結果をまとめます。語で当てる仕組みと、意味で当てる仕組みが典型です。

ハイブリッド検索は、性質の違う検索を複数走らせて、結果を1つにまとめる方式です。語で当てる検索と、意味で当てる検索を組み合わせる形が典型になります。

得意が違う

組み合わせる理由は、それぞれ当てられる問いが違うためです。語の検索は型番や固有名詞に強く、意味の検索は言い換えに強くなります。

前の節では、言い換えの問いで語の検索が0%になりました。逆に、型番のような珍しい語では語の検索のほうが確実です。

順位で混ぜる

問題は、点数の尺度が違うことです。語の検索の点と、意味の検索の点は、そのまま足せません。

そこで順位を使います。Elasticsearchはこれを、関連度の指標が違う複数の結果を1つにまとめる方法だと説明しました。調整が要らず、指標どうしが関係している必要もない、という但し書きも付いています。

混ぜる数

同じ文書では、並べ替えには最低2つの検索が必要だと明記されています。3つ以上を混ぜることもできます。

増やせば当たる範囲は広がりますが、その分だけ検索の回数も増えます。1回の問い合わせで走る検索の数を数えておいてください。

余談 落ちている問いを先に見つける

測ってみて有効だったのは、言い換えで聞いた問いだけを集めて測ることでした。全体の平均では46.7%と40.0%で、6ポイントの差にしか見えません。問いを分けると、0%の問いが1件あることが見えます。

出典Elasticsearch Reference「Reciprocal rank fusion」2026-08-18 確認
RRF requires no tuning, and the different relevance indicators do not have to be related to each other to achieve high-quality results.
原文Elasticsearch Reference「Reciprocal rank fusion」 この内容の有効期限2027-02-18

ハイブリッド検索をどう組むか

まず語の検索だけで測り、落ちている問いを特定します。混ぜるのはそのあとです。

ハイブリッド検索は組む前に、今の検索がどの問いで落ちているかを掴んでおく必要があります。落ちていないなら混ぜる意味がありません。

組む順番

  1. 実際に検索された語を集める。文書中の語と違うものを探す
  2. その問いだけで適合率を測る。平均では見えない
  3. 落ちているなら意味の検索を足す。ここで初めて2つになる
  4. 最初から2つ走らせる。効果を確かめられない

4番目を避けてください。最初から混ぜると、混ぜたことの効果が測れません。前の節でも、混ぜる方式は補う方式と同じ53.3%でした。

検索の回数が増える

混ぜるということは、1回の問い合わせで検索を2回以上走らせるということです。応答時間も費用も、その分だけ増えます。

意味の検索を足す場合は、問いを埋め込みに変える処理も加わります。語の検索だけなら不要だった工程です。

混ぜた後を確かめる

混ぜると順位が変わります。混ぜる前にそれぞれ1位だったものが、混ぜた後に3位になることもあります。

ですから混ぜる前後の順位を並べて確かめてください。順位の評価はnDCGの記事で扱っています。

落ちている問いを掴んでから混ぜる。順序が逆だと効果が測れない。

充足 2 / 4言い換えの問いだけで測ってある全体平均では46.7%と40.0%の差にしか見えない。0%の問いが埋もれる混ぜる前の各検索を単体で測ってある混ぜる方式は補う方式と同じ53.3%だった。差が出ない場合もある最初から2つ走らせている混ぜたことの効果を確かめられない。応答時間と費用だけが増える混ぜた後の順位を確かめていない混ぜる前に1位だったものが下がることがある言い換えで聞いた問い5件での実測にもとづく。語の検索だけでは1問が0%だった。
図2 ── ハイブリッド検索を組むときの点検項目
出典Elasticsearch Reference「Reciprocal rank fusion」2026-08-18 確認
A minimum of two child retrievers is required for ranking.
原文Elasticsearch Reference「Reciprocal rank fusion」 この内容の有効期限2027-02-18

よくある質問

なぜ語の検索だけでは当たらないのですか
文書に「報告書」と書いてあり、問いが「レポート」なら、語として一致しないためです。この計測ではその問いの適合率が0%でした。
混ぜると必ず良くなりますか
この計測では、言い換えを補う方式と混ぜる方式が同じ53.3%でした。片方が明らかに強い場面では、混ぜても追い越しません。
混ぜ方に調整は要りますか
順位で混ぜる方式は調整が要らないとされています。点数の大きさではなく順位を使うので、指標の尺度が違っても混ぜられます。
いくつの検索を混ぜられますか
順位で混ぜる方式では、最低2つが必要だと明記されています。3つ以上を混ぜることもできます。

まとめ

  • ハイブリッド検索は語の検索と意味の検索を組み合わせる方式
  • 言い換えで聞かれると語の検索だけでは40.0%
  • 補うと53.3%まで戻る
  • 順位で混ぜる方式は尺度が違っても混ぜられる

今日から始められること

  1. 実際に検索された語を集め、文書中の語と違うものを探す
  2. その問いだけで適合率を測る
  3. 落ちているなら、意味で探す仕組みを併用できるか検討する
  4. 混ぜたあとの順位を、混ぜる前と並べて確かめる

実務で組んだハイブリッド検索のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る