+ 作るログイン
図を読み込んでいます…
1 / 14
RAG のすべて ― 基礎から現在の形、そして難しさまで / 全15章

RAG 06:ハイブリッド検索 ― キーワードと意味を合わせる

発行
アニメモ公式
版
第1版
改訂
コマ
全14

意味の検索(ベクトル検索)が苦手なエラーコードや型番を、昔ながらのキーワード検索で補うハイブリッド検索を説明します。転置索引と BM25 の考え方、それぞれが外す場面、日本語の区切り(形態素解析と n-gram)、点数を足せない理由と RRF(順位による合流)、重みの決め方まで。

「E-4012 が出たら?」に、意味の検索が外す

この章も、RAG の流れ(質問 → 探す → 集める → 読ませる → 答える)の「探す」の話です。第4・5章の「意味で探す」検索を、昔ながらのキーワード検索と組み合わせます。

社内のヘルプデスクの RAG に、「E-4012 が出たら?」という質問が来たとします。資料庫には、「E-4012 の対処」という、まさにその答えの資料があります。

ところが、ベクトル検索(第5章)の1位は「E-4013 の対処」でした。番号が1つ違うだけの、まったく別のエラーの資料です。

なぜこんなことが起きるのでしょうか。第4章で見たように、埋め込みは「だいたいの意味」をつかむ仕組みです。「E-4012」と「E-4013」は、どちらも「エラーコードと対処」の話なので、意味の地図の上ではほぼ同じ場所に置かれます。番号の違いは、意味の違いとしてはとても小さく扱われてしまうのです。

でも、利用者にとっては、E-4012 と E-4013 はまったく別物です。違う対処法を案内されたら、かえって困ります。

型番、エラーコード、人名、条文番号。こうした「文字がそのまま一致すること」が大事な情報は、実務の質問にとても多く出てきます。この章では、それに強いキーワード検索と、意味の検索を組み合わせるハイブリッド検索を見ていきます。

※この本は 2026年9月時点の情報をもとにしています。製品の名前や機能、数字は変わることがあります。

  • RAG のすべて 06 ― ハイブリッド検索
  • 1 / 14
  • 「E-4012 が出たら?」に、意味の検索が外す
  • E-4012 は?
  • 集めた資料
  • 質問
  • 検索
  • LLM
  • 答え
  • 資料庫
  • ベクトル検索の1位:「E-4013 の対処」。番号が1つ違うだけの、別のエラーの資料
  • 型番・エラーコード・人名は、文字がそのまま一致することが大事
  • 意味の検索は「似た話」を拾う。でも欲しいのは「その番号そのもの」の資料。

キーワード検索は「巻末の索引」

キーワード検索は、質問に含まれる言葉が文字どおり載っている文書を探す方法です。Web 検索やサイト内検索で、昔から使われてきました。

でも、質問のたびに全部の文書を頭から読んで、言葉を探すわけではありません。前もって、本の巻末の索引のようなものを作っておきます。

言葉載っている文書
休暇文書1・文書3
申請文書1・文書2
E-4012文書2
経費文書4

これを転置索引(インバーテッドインデックス)と呼びます。普通は「文書 → そこに載っている言葉」ですが、それを逆(転置)にして「言葉 → それが載っている文書」にしたものです。

質問が「E-4012 の申請」なら、索引で「E-4012」と「申請」を引けば、候補の文書がすぐにそろいます。全文書を読む必要はありません。何百万件の文書でも、一瞬で候補が出せます。

ちなみに、第5章の IVF の「I」も Inverted(転置)です。「区画 → そこに入っている点」の一覧を持つ、という同じ発想から名前が来ています。

  • RAG のすべて 06 ― ハイブリッド検索
  • 2 / 14
  • キーワード検索は「巻末の索引」
  • 文書
  • 索引(言葉 → 載っている文書)
  • 文書1:休暇の申請
  • 休暇
  • 文書1・文書3
  • 文書2:E-4012 と申請
  • 申請
  • 文書1・文書2
  • 文書3:夏季休暇
  • E-4012
  • 文書2
  • 文書4:経費の締め日
  • 経費
  • 文書4
  • 質問の言葉を索引で引けば、全文書を読まずに一瞬で候補がそろう
  • 言葉ごとに、その言葉が載っている文書の一覧を前もって作っておく(転置索引)。

BM25:どの文書をより上に並べるか

索引で候補の文書がそろったら、次は並べる順番です。キーワード検索で最もよく使われる並べ方が BM25 です。名前は「Best Matching(いちばんよく合う)」の略に、試した計算式の通し番号 25 が付いたものです。文書ごとに「質問とどれだけ合っているか」の点数(スコア)を出し、点数の高い順に並べます。

BM25 は 1990年代に、ロンドン市立大学の Okapi という検索システムの研究から生まれました。数式は少し込み入っていますが、考え方は次の3つです。

考え方例
珍しい言葉ほど重い「E-4012」はごく一部の文書にしか出ないので、一致したら強い手がかり。「の」「です」はどの文書にも出るので、ほぼ効かない
繰り返しは頭打ち同じ言葉が1回出る文書より、3回出る文書を上にする。でも10回出ても10倍にはしない
長い文書は割り引く長い文書は、たまたまいろいろな言葉を含みやすい。長さのぶん割り引いて公平にする

1つ目の「珍しさ」の考え方は、昔から IDF(逆文書頻度)と呼ばれるものです。「その言葉が載っている文書が少ないほど大きくなる数」と思えば十分です。

BM25 の良いところは、学習が要らないことです。どんな分野の文書にも、そのまま使えます。速く、結果の理由も説明しやすい(「この言葉が一致したから」)。多くの検索エンジンで、いまも標準の並べ方になっています。

「古い技術」と思われがちですが、RAG の研究でも、BM25 は今でも強い比較相手として必ず登場します。特定の分野の専門用語が多い資料では、意味の検索に勝つことも珍しくありません。

  • RAG のすべて 06 ― ハイブリッド検索
  • 3 / 14
  • BM25:どの文書をより上に並べるか
  • 珍しい言葉ほど重い
  • 繰り返しは頭打ち
  • 長い文書は割り引く
  • 「E-4012」は効く。「の」「です」は効かない
  • 10回出ても、10倍にはならない
  • 長いほど、たまたま言葉を含みやすい
  • BM25 は 1990年代に作られ、いまも多くの検索エンジンで標準の並べ方
  • 学習が要らず、速く、どんな分野の文書にもそのまま使える
  • 珍しい言葉ほど重く、同じ言葉の繰り返しは頭打ち、長い文書は割り引く。

意味の検索が苦手なもの:番号・名前・ぴったりの言い回し

改めて、意味の検索(ベクトル検索)が苦手なものを整理します。

苦手なもの例何が起きるか
エラーコード・型番E-4012、XR-200番号違いの別の資料が上に来る
人名・社内の略語「田中さんの資料」、「KPT」埋め込みモデルが意味を知らない
条文番号・日付第12条、2026年度数字の違いが小さく扱われる
訓練で見たことのない新語新製品名、今年できた言葉地図のどこに置くべきか分からない

図は、ベクトル検索の結果です。1位は「E-4013 の対処」、2位にやっと「E-4012 の対処」、3位は「障害時の連絡先」。どれも「エラーと対処」の話としては近いのですが、欲しい資料が1位ではありません。

今回はまだ2位に入っているので救いがあります。でも、似た番号のエラーが何十個もあれば、欲しい資料は圏外に落ちてしまいます。

「似ている」は「同じ」ではありません。意味の検索は、同じ話題の別物を上に持ってきやすいのです。

  • RAG のすべて 06 ― ハイブリッド検索
  • 4 / 14
  • 意味の検索が苦手なもの:番号・名前・ぴったりの言い回し
  • キーワード検索
  • エラーコード・型番
  • 人名・社内の略語
  • E-4012が出たら?
  • 条文番号・日付
  • 1
  • E-4013 の対処
  • 訓練で見たことのない新語
  • ベクトル検索
  • 2
  • E-4012 の対処
  • 1位の E-4013 は、番号違いの別の資料
  • 3
  • 障害時の連絡先
  • 「似ている」は「同じ」ではない。一字違いの別物を上に持ってくる。

キーワード検索が苦手なもの:言い換え・表記ゆれ

では、キーワード検索だけで良いかというと、そうでもありません。キーワード検索にも、はっきりした弱点があります。文字が一致しなければ、見つからないのです。

苦手なもの例
言い換え休み/休暇、パソコン/PC、壊れた/故障
表記ゆれサーバ/サーバー、問い合わせ/問合せ、全角/半角
言語の違い英語の資料に日本語で質問する
質問の形「〜したいときは?」と聞かれても、資料には「〜の手順」と書いてある

第4章の最初の例、「休みはいつ取れる?」と「有給休暇の取得手続き」は、キーワード検索の弱点そのものです。

利用者は、資料に書かれている言葉を知りません。自分の言葉で質問してきます。キーワード検索だけだと、「言葉が合っている人だけが答えにたどり着ける」検索になってしまいます。

表記ゆれは、索引を作るときに正規化(全角・半角をそろえる、長音をそろえるなど)や同義語の辞書を使えば、ある程度は減らせます。でも、言い換えを全部辞書に書き出すのは現実的ではありません。

  • RAG のすべて 06 ― ハイブリッド検索
  • 5 / 14
  • キーワード検索が苦手なもの:言い換え・表記ゆれ
  • 休みはいつ取れる?
  • 有給休暇の取得手続き
  • サーバ 問い合わせ
  • サーバーへの問合せ窓口
  • 言い換え
  • 休み/休暇、パソコン/PC、壊れた/故障
  • 表記ゆれ
  • サーバ/サーバー、問い合わせ/問合せ、全角/半角
  • 文字が一致しなければ見つからない。利用者は資料の言葉を知らない。

日本語の壁:単語の間に空白がない

キーワード検索を日本語で使うときには、もう1つ大きな壁があります。単語の間に空白がないことです。

英語なら、空白で区切れば単語になります。日本語の「東京都庁の休暇規程」は、どこで区切ればいいのでしょうか。索引を作るには、まず文章を言葉の単位(ここではこれをトークンと呼びます。索引の「言葉」の欄に載る1つ1つです)に区切らなければいけません。方法は大きく2つです。

方法やり方強み弱み
形態素解析辞書を使って単語に区切る(東京/都庁/の/休暇/規程)意味の単位で区切れる。索引が小さい辞書に無い新語・社内用語・製品名を切り損ねる
n-gram機械的に n 文字ずつ区切る(2文字なら東京/京都/都庁…)辞書が要らない。取りこぼしにくい関係ない一致が増える。索引が大きい

図の n-gram を見てください。「東京都庁」を2文字ずつ区切ると、「京都」という区切りが出てきます。「京都」で検索すると、東京都庁の資料が当たってしまいます。

形態素解析の道具には MeCab、Sudachi、kuromoji などがあり、検索エンジンにはそれを組み込むための部品が用意されています。PostgreSQL の標準の全文検索は日本語の区切りに対応していないので、pg_bigm(2文字ずつの索引)や PGroonga といった拡張を使うのが一般的です。

実務では、「形態素解析を基本にして、社内用語を辞書に足す」「両方の索引を作って合わせる」など、資料に合わせて選びます。使う道具が日本語にどう対応しているかは、必ず最初に確かめてください。

  • RAG のすべて 06 ― ハイブリッド検索
  • 6 / 14
  • 日本語の壁:単語の間に空白がない
  • 東京都庁の休暇規程
  • 形態素解析(辞書で単語に切る)
  • 東京
  • 都庁
  • の
  • 休暇
  • 規程
  • 辞書に無い新語・社内用語で切り損ねる
  • n-gram(2文字ずつ機械的に切る)
  • 東京
  • 京都
  • 都庁
  • 庁の
  • の休
  • 休暇
  • 暇規
  • 規程
  • 「京都」でも当たってしまう
  • どこで区切るかで、検索の当たり外れが変わる。形態素解析か、n-gram か。

ハイブリッド検索=両方で探して、結果を合わせる

キーワード検索と意味の検索は、ちょうど弱点が逆です。

キーワード検索意味の検索
番号・名前・ぴったりの言葉強い弱い
言い換え・表記ゆれ弱い強い

それなら、両方で探して、結果を合わせればいい。これがハイブリッド検索です。図のように、1つの質問で2つの検索を同時に走らせます。片方が外しても、もう片方が拾ってくれます。

仕組みは単純ですが、効果は大きく、いまの RAG では定番の構成になっています。多くの検索エンジンやベクトルデータベースが、ハイブリッド検索を組み込みの機能として持っています。

2つの検索は並行して走らせられるので、待ち時間はほぼ遅いほうの検索の時間だけです。

残る問題は1つです。2つの検索は、それぞれ別々の順位表を返してきます。キーワード検索では「E-4012 の対処」が1位、意味の検索では「E-4013 の対処」が1位。これをどうやって1つの順位表にまとめるか。次のページから見ていきます。

  • RAG のすべて 06 ― ハイブリッド検索
  • 7 / 14
  • ハイブリッド検索=両方で探して、結果を合わせる
  • 1
  • E-4012 の対処
  • キーワード検索
  • 2
  • エラーコード一覧
  • 2つの検索を同時に走らせる
  • 3
  • リリースノート
  • 片方が外しても、もう片方が拾う
  • E-4012が出たら?
  • 問題は「2つの順位表をどう1つにするか」
  • 1
  • E-4013 の対処
  • ベクトル検索
  • 2
  • E-4012 の対処
  • 3
  • 障害時の連絡先
  • キーワードの「ぴったり」と、意味の「言い換えに強い」を両取りする。

点数をそのまま足せない:物差しが違う

いちばん素直な案は、「それぞれの点数を足して、大きい順に並べる」です。でも、これはうまくいきません。点数の物差しが違うからです。

検索点数の範囲性質
キーワード(BM25)0 から上限なし(例:12.3、8.1、5.0)質問の言葉の数や、文書の集まり方で幅が大きく変わる
意味(コサイン類似度=第4章の「矢印の向きのそろい方」)−1〜1(例:0.82、0.80、0.79)モデルによっては、どれも 0.8 前後に固まる

この2つをそのまま足すと、どうなるでしょうか。BM25 の点数の差(12.3 と 5.0 で 7 以上)に比べて、コサインの差(0.82 と 0.79 で 0.03)はごくわずかです。結果は、ほぼキーワード検索の順番そのままになります。意味の検索は、実質的に効いていません。

では、点数を 0〜1 に揃え直してから足せばいいのでは、と考えるかもしれません(正規化)。これも使われる方法ですが、「何を最大・最小として揃えるか」で結果が変わり、質問によって振る舞いが不安定になりがちです。

そこで広く使われているのが、点数を捨てて、順位だけを使う方法です。

  • RAG のすべて 06 ― ハイブリッド検索
  • 8 / 14
  • 点数をそのまま足せない:物差しが違う
  • 1
  • E-4012 の対処
  • 12.3
  • キーワード検索
  • キーワード:質問や文書で幅が変わる
  • 2
  • エラーコード一覧
  • 8.1
  • 3
  • リリースノート
  • 5.0
  • 足すと、ほぼキーワードの順になる
  • E-4012が出たら?
  • 1
  • E-4013 の対処
  • 0.82
  • ベクトル:どれも0.8前後に固まる
  • ベクトル検索
  • 2
  • E-4012 の対処
  • 0.80
  • 3
  • 障害時の連絡先
  • 0.79
  • BM25 は上限の無い点数、コサインは −1〜1。足すと片方に引きずられる。

RRF:点数を捨てて「順位」だけを使う

RRF(Reciprocal Rank Fusion、逆順位融合)は、2009年の論文で提案された、とても単純な合わせ方です。名前は「順位(Rank)の逆数(Reciprocal、1÷その数)を合わせる(Fusion)」という意味です。

やることは1つだけです。各検索の結果で、資料が何位だったかを見て、次の点数を足します。

点数 = 1 ÷ (60 + 順位)   を、出てきた検索の数だけ足す

読み下すと、「1位なら 1÷61、2位なら 1÷62……と、順位が下がるほど少しずつ小さくなる点をもらい、両方の検索に出てくれば2回分もらえる」です。表の「—」は、その検索の結果に出てこなかった(点をもらえない)という意味です。

図の例で計算してみます。

資料キーワード意味RRF の点数
E-4012 の対処1位2位1/61 + 1/62 ≒ 0.0325
E-4013 の対処—1位1/61 ≒ 0.0164
エラーコード一覧2位—1/62 ≒ 0.0161
リリースノート3位—1/63 ≒ 0.0159
障害時の連絡先—3位1/63 ≒ 0.0159

「E-4012 の対処」は、どちらの検索でも1位ではありません。でも、両方で上位だったので、合わせた点数はダントツです。

「60」という数は、上位どうしの差をなだらかにするための値です。60 だと1位と2位の差が小さく、「片方で1位」より「両方で上位」が強くなります。元の論文で良かった値で、いまもほぼそのまま使われています。

RRF の良さは、点数の物差しを気にしなくていいことです。BM25 が 12.3 でも 120 でも、コサインが 0.8 でも 0.3 でも、使うのは順位だけです。検索を3本、4本に増やしても、同じように足せます。

  • RAG のすべて 06 ― ハイブリッド検索
  • 9 / 14
  • RRF:点数を捨てて「順位」だけを使う
  • 1
  • E-4012 の対処
  • 点数=1÷(60+順位)の合計
  • キーワード検索
  • 2
  • エラーコード一覧
  • E-4012 の対処
  • 1/61+1/62
  • 3
  • リリースノート
  • E-4013 の対処
  • 1/61
  • E-4012が出たら?
  • エラーコード一覧
  • 1/62
  • 1
  • E-4013 の対処
  • リリースノート
  • 1/63
  • ベクトル検索
  • 2
  • E-4012 の対処
  • 障害時の連絡先
  • 1/63
  • 3
  • 障害時の連絡先
  • 順位が上ほど大きい点をもらい、両方の点を足す。両方で上位なら強い。

合わせた結果:両方で上位の資料が1位に

RRF で合わせた順位表が、図の右の列です。

順位資料どこから来たか
1E-4012 の対処両方
2E-4013 の対処意味の検索だけ
3エラーコード一覧キーワード検索だけ
4リリースノートキーワード検索だけ
5障害時の連絡先意味の検索だけ

欲しかった「E-4012 の対処」が1位になりました。キーワード検索の「ぴったり」と、意味の検索の「話題の近さ」の両方で支持されたからです。

同じ仕組みは、逆の場面でも働きます。「休みはいつ取れる?」のような質問では、キーワード検索はほとんど外しますが、意味の検索が「有給休暇の取得手続き」を上位に出します。RRF で合わせても、それは上位に残ります。どちらか一方が外す質問でも、もう一方が支えてくれるのです。

一方で、2位に「E-4013 の対処」が残っていることにも注目してください。ハイブリッド検索は「拾う」のは上手になりますが、細かい正しさの判断まではしてくれません。上位の候補を、質問と照らし合わせてもっと丁寧に並べ直すのが、次の第7章のリランキングです。

  • RAG のすべて 06 ― ハイブリッド検索
  • 10 / 14
  • 合わせた結果:両方で上位の資料が1位に
  • キーワード検索
  • 1
  • E-4012 の対処
  • 両方に出た
  • 2
  • E-4013 の対処
  • E-4012が出たら?
  • RRF で合流
  • 3
  • エラーコード一覧
  • 4
  • リリースノート
  • ベクトル検索
  • 5
  • 障害時の連絡先
  • 片方だけの1位より、両方で上位のほうが強い。点数の物差しに悩まない。

どちらを重く見るか:資料と質問の性質で決める

RRF では、それぞれの検索に重みを付けることもできます。1 ÷ (60 + 順位) に、検索ごとの重みを掛けるだけです。たとえばキーワード検索の重みを 2、意味の検索を 1 にすると、キーワード検索でもらう点だけが2倍になり、キーワード検索で上位の資料が勝ちやすくなります。

どちらを重くするかは、資料と質問の性質で決めます。

資料・質問寄せる先理由
エラーコード・型番・法令番号が多いキーワードを重く文字の一致がそのまま正解の手がかり
社内 FAQ・自然な文章の質問が多いベクトルを重く言い換えが多く、文字は一致しにくい
よく分からない同じ重さRRF そのままから始めて、測って調整

質問の中身を見て、その場で重みを変える方法もあります。たとえば、質問にエラーコードや型番らしい文字列(英数字とハイフンの並びなど)が入っていたら、キーワードを重くする、といった具合です。第9章で見る「質問を直す」工夫と組み合わせることもできます。

どの場合も、勘で決めないことが大事です。実際に来る質問を集め、重みを変えながら「答えの載った資料が上位に入ったか」を数えて決めます(第12章)。

  • RAG のすべて 06 ― ハイブリッド検索
  • 11 / 14
  • どちらを重く見るか:資料と質問の性質で決める
  • キーワード寄り
  • 意味(ベクトル)寄り
  • エラーコード・型番・法令番号
  • キーワードを重く
  • 社内 FAQ・自然な質問
  • ベクトルを重く
  • わからないとき
  • 同じ重さ(RRF そのまま)から測って調整
  • コード・型番が多いならキーワード寄り、自然な質問が多いなら意味寄り。

コードで見る:RRF は十数行

RRF は、図のように十数行で書けます。TypeScript の例です。

部分やっていること
lists検索ごとの結果(資料の id を順位順に並べた配列)の配列
weights[j] / (k + i + 1)j 本目の検索で i+1 位の資料に、重み付きで点数を足す(i は 0 から数えるので +1 して順位にする。k は 60)
sort(…) の行点数の大きい順に並べ、資料の id だけを返す
Promise.all2つの検索を同時に走らせる
.slice(0, 20)上位20件を、次の段階(第7章の並べ直し)に渡す

紛らわしいのですが、ここの k(=60)は第5章の top-k の k(取り出す件数)とは別物です。RRF の式の「60」を入れる変数に、慣習で同じ文字が使われています。

ポイントは、それぞれの検索から多めに取ることです。コードではキーワード・意味の両方から50件ずつ取り、合わせた上位20件を次に渡しています。片方で51位の資料は、そもそも合流に参加できません。

検索エンジンやデータベースによっては、RRF が組み込みの機能として用意されています。その場合は、自分で書かずにそれを使えば十分です。ただ、中身がこれだけ単純だと知っておくと、結果がおかしいときに原因を追いやすくなります。

もう1つ、権限の絞り込み(第5章・第13章)は、両方の検索に必ず掛けてください。

  • RAG のすべて 06 ― ハイブリッド検索
  • 12 / 14
  • コードで見る:RRF は十数行
  • function rrf(lists: string[][], weights = lists.map(() => 1), k = 60) {
  • const score = new Map<string, number>();
  • lists.forEach((list, j) =>
  • list.forEach((id, i) =>
  • score.set(id, (score.get(id) ?? 0) + weights[j] / (k + i + 1))));
  • return [...score].sort((a, b) => b[1] - a[1]).map(([id]) => id);
  • }
  • const [kw, vec] = await Promise.all([keywordSearch(q, 50), vectorSearch(q, 50)]);
  • const top = rrf([kw, vec]).slice(0, 20); // → 第7章で並べ直す
  • 順位の表を何本でも合わせられる。重みは 1 ÷ (60 + 順位) に掛けるだけ。

よくある落とし穴と、かかる手間

ハイブリッド検索は効果が大きい一方で、手間も増えます。よくある失敗と合わせて整理します。

落とし穴何が起きるか対策
日本語の区切りを考えていないキーワード検索がほぼ効かない形態素解析か n-gram の対応を確かめる
索引の更新が片方だけ片方にだけ古い文書が残る1つの処理で両方を更新する
点数をそのまま足す片方の検索が実質的に無効RRF など、順位で合わせる
権限の絞り込みが片方だけ見せてはいけない資料が混ざる両方の検索に同じ条件を掛ける
重みを勘で決める良くなったのか分からない自分の質問で測る

かかる手間は、主に「索引が2つになる」ことです。文書を足す・変える・消すたびに、両方を更新します。キーワード検索とベクトル検索が同じデータベースでできるなら(PostgreSQL+日本語の全文検索の拡張+pgvector など)、この手間はかなり減ります。

それでも、多くの場合、ハイブリッド検索の効果は手間に見合います。特に、型番・コード・固有名詞が多い業務の資料では、ほぼ必須と考えてよいでしょう。

  • RAG のすべて 06 ― ハイブリッド検索
  • 13 / 14
  • よくある落とし穴と、かかる手間
  • 日本語なのに、空白で区切る前提のキーワード検索を使っている
  • 片方の索引だけ更新され、もう片方に古い文書が残る
  • 点数をそのまま足して、片方の検索が実質的に効いていない
  • 権限の絞り込みを片方の検索にしか掛けていない(第13章)
  • 重みを勘で決め、自分の質問で測っていない(第12章)
  • 索引が2つになる。更新も2つ、日本語の区切りも自分で選ぶ。

まとめ:「ぴったり」と「言い換え」を両取りする

この章で見たことをまとめます。

項目内容
キーワード検索転置索引で候補を集め、BM25 で並べる。番号・名前・ぴったりの言葉に強い
意味の検索言い換え・表記ゆれに強い。一字違いの別物を上に持ってきやすい
日本語空白がない。形態素解析か n-gram で区切る。道具の対応を確かめる
ハイブリッド検索両方で探して、結果を合わせる
合わせ方点数は物差しが違うので足さない。RRF で順位を合わせる
重み資料と質問の性質で決め、測って調整する

他の章とのつながりも確認しておきます。意味の検索の中身は第4・5章、重みや結果の良し悪しの測り方は第12章、質問の書き換えと組み合わせる工夫は第9章です。

ハイブリッド検索で、「拾う」力はぐっと上がります。でも、上位に並んだ候補の中で、どれが本当に質問に答えているかまでは判断していません。次の第7章では、候補を質問と一緒に読んで並べ直すリランキングを見ていきます。

  • RAG のすべて 06 ― ハイブリッド検索
  • 14 / 14
  • まとめ:「ぴったり」と「言い換え」を両取りする
  • キーワード検索
  • 転置索引+BM25。番号・名前・ぴったりの言葉に強い
  • ベクトル検索
  • 意味で探す。言い換え・表記ゆれに強い
  • 日本語
  • 形態素解析か n-gram か。区切り方で当たり外れが変わる
  • 合わせ方
  • 点数は足さない。RRF で順位を合わせる
  • 重み
  • 資料と質問の性質で決め、測って調整する
  • 次章では、合わせて拾った候補を、質問と一緒に読んで並べ直す。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]