そもそもRAGとは何か ― AIが「自社データを見に行く」仕組み
ChatGPTやClaudeに質問すると、AIは自分が学習済みの知識から回答します。しかし「うちの社内規定ではどうなっているか」「先月の営業会議の議事録に何が書いてあったか」といった自社固有の情報には答えられません。学習データに含まれていないからです。
この問題を解決するのがRAG(ラグ)です。Retrieval-Augmented Generation(検索拡張生成)の略で、やっていることはシンプルです。
- ユーザーが質問する
- AIが回答する前に、社内のドキュメントデータベースを検索して関連する文書を探す
- 見つけた文書をAIに渡し、「この情報をもとに回答して」と指示する
つまりRAGとは、AIに「カンニングペーパー」を渡してから回答させる仕組みです。このカンニングペーパーの質 ― つまり「どれだけ的確な文書を検索できるか」が、RAGの回答精度を決定的に左右します。
RAGの基本フロー ― 検索エンジンの精度がRAG全体の回答品質を決める
RAG(ラグ) = Retrieval-Augmented Generation。AIが回答する前に外部データを検索し、その結果を参照しながら回答する仕組み。社内チャットボット、ナレッジ検索、カスタマーサポートの自動応答などで広く使われている。
ベクトル検索の弱点 ― なぜ社名や型番で的外れになるのか
RAGで最も多く使われている検索方式がベクトル検索(Embedding検索)です。文章を数百〜数千個の数値の列(ベクトル)に変換し、「意味が近い文書」を探す仕組みです。
たとえば「売上を伸ばす方法」と「収益拡大の施策」は使っている単語が全然違いますが、意味は似ています。ベクトル検索はこうした「言い換え」や「類義語」を高い精度で拾えるのが強みです。
しかし、固有名詞やコード、型番には弱いのが欠点です。
| 検索クエリ | ベクトル検索の結果 | 問題 |
|---|---|---|
| 「ERR_CONN_REFUSED」 | ネットワーク一般の記事がヒット | エラーコードの完全一致ができない |
| 「XG-7200A」(製品型番) | 似た文字列のXG-7100Bの記事が返る | 1文字違いの型番を区別できない |
| 「田中太郎さんの案件」 | 「案件管理」の一般記事がヒット | 人名を無視して意味だけで検索してしまう |
ベクトル検索は「意味の近さ」で文書を探すため、文字列そのものの一致を重視しません。「ERR_CONN_REFUSED」という文字列がドンピシャで書いてある文書があっても、ベクトル空間上で近いだけの別の文書を返してしまうことがあります。
ベクトル検索(Embedding検索) = 文章を数値の列(ベクトル)に変換し、ベクトル同士の距離(近さ)で「意味が似ている文書」を探す方式。言い換えや類義語に強いが、固有名詞・コード・型番の完全一致には弱い。
Embedding(エンベディング) = 文章をベクトル(数値の列)に変換すること、またはその変換結果。OpenAIやGoogleなどが変換用のモデルを提供している。
BM25(キーワード検索)が捨てられない理由
BM25は1990年代に考案された、いわば「古典的な」検索アルゴリズムです。Googleの検索エンジンが登場する以前から使われている技術で、原理は単純。ユーザーが入力したキーワードが、文書の中に何回出てくるかを数え、出現頻度が高い文書をスコア順に並べる、という仕組みです。
30年以上前の技術が今でも使われ続けている理由は明確で、「文字が一致しているものは確実に見つける」という当たり前の精度が、ベクトル検索には出せないからです。
| 観点 | BM25(キーワード検索) | ベクトル検索(Embedding) |
|---|---|---|
| 得意なこと | 固有名詞、型番、エラーコード、引用文の完全一致 | 言い換え、類義語、文脈が似ている文書の発見 |
| 苦手なこと | 言い換え(「売上向上」と「収益拡大」を同じと認識できない) | 固有名詞の1文字違い(XG-7200AとXG-7100Bを混同する) |
| 処理速度 | 高速(インデックスが軽い) | やや遅い(ベクトル計算が必要) |
| コスト | 低い(GPUが不要) | 高い(Embedding生成にGPUまたはAPI課金が必要) |
BM25は「文字の一致」が得意。ベクトル検索は「意味の一致」が得意。どちらか一方では必ず取りこぼしが出ます。だから両方を同時に走らせて結果を合体させる ―― これが「ハイブリッド検索」の発想です。
ハイブリッド検索の仕組み ― 2つの検索結果をどう合体させるか
ハイブリッド検索では、1つの検索クエリに対してBM25とベクトル検索を同時に実行し、それぞれの検索結果を「合体(フュージョン)」させて最終的なランキングを作る流れになります。
ハイブリッド検索の基本フロー ― BM25とベクトル検索を並列で走らせ、RRFで統合
RRF(Reciprocal Rank Fusion)― 合体アルゴリズムの定番
2つの検索結果を合体させる方法で最も広く使われているのがRRF(アールアールエフ)です。2009年に提案された手法で、考え方はシンプル。
BM25の結果とベクトル検索の結果、それぞれの文書が「何位にランクインしたか」を見て、両方で上位に来ている文書ほど高スコアにする方式です。スコアの絶対値(点数)ではなく順位(何番目か)で統合するので、BM25とベクトル検索でスコアの尺度が全然違っても問題なく機能します。
2024〜2026年にかけて、Elasticsearch、Weaviate、Azure AI Search、Vertex AI Search、Qdrantなど主要な検索エンジン・ベクトルDBがハイブリッド検索機能を標準搭載しました。「ベクトル検索だけ」から「ハイブリッド」への切り替えが、設定一つで可能になったことで、実装のハードルが大幅に下がっています。
RRF(Reciprocal Rank Fusion) = 複数の検索結果を「順位ベース」で統合するアルゴリズム。各検索結果の順位に基づいてスコアを計算し、両方で上位に来ている文書を最終結果の上位に配置する。チューニング不要で安定した結果が出るため、ハイブリッド検索の標準的な統合手法。
リランカー(Reranker) = 検索結果をさらに精査し、AIモデルが「本当に質問に関連性が高い順」に並べ替える追加ステップ。RRFの後段に入れるとさらに精度が上がるが、コストと処理時間も増える。
導入判断のチェックリスト ― 自社に必要かどうかを見極める
「ハイブリッド検索が良いのはわかったが、すべてのRAGシステムに必要なのか?」という疑問に答えます。
| チェック項目 | 該当するなら |
|---|---|
| 社内文書に製品型番・顧客名・エラーコードが頻出する | ハイブリッド検索が強く推奨 |
| ユーザーが「○○の手順」のように自然文で質問する用途がメイン | ベクトル検索だけでも許容範囲だが、ハイブリッドにすると安定する |
| 法務・コンプライアンス文書を扱う(条文番号の正確性が重要) | ハイブリッド検索が必須 |
| 検索対象が英語だけ or 日本語だけの単一言語 | ベクトル検索の精度が比較的高いため、優先度はやや下がる |
| カスタマーサポートで顧客が送ってくるエラーメッセージで検索する | ハイブリッド検索が強く推奨 |
ハイブリッド検索は「2つのインデックスを同時に管理する」ため、ベクトル検索単体よりストレージとメンテナンスコストが増えます。あるベンチマーク(WANDS eコマースデータセット)では、ハイブリッド化による精度向上はベクトル検索単体比で+1.7%にとどまったケースもあります。コストに見合う効果が出るかどうかは、自社のデータ特性と検索クエリの傾向で判断してください。
ベンダーに聞くべき5つの質問
RAGシステムの構築や改善をベンダーに依頼するとき、ハイブリッド検索に関して以下の質問をすると、提案の質が見極めやすくなります。
- 「検索方式はベクトル検索のみですか、BM25とのハイブリッドですか?」
ベクトル検索のみの提案しか出てこない場合、固有名詞の検索精度に問題が出る可能性があります - 「検索結果の統合アルゴリズムは何を使っていますか?」
RRFが標準的。独自アルゴリズムの場合は、なぜRRFではないのかの根拠を確認してください - 「リランカー(Reranker)は組み込まれていますか?」
ハイブリッド検索の後にリランカーを入れると精度がさらに上がります。ただしコストも増えるため、費用対効果を確認 - 「チャンク分割の方式はどうなっていますか?」
文書をどの粒度で分割するか(セマンティック分割 vs 固定長分割)は検索精度に直結します - 「検索精度の評価指標は何で測っていますか?」
MRR(Mean Reciprocal Rank)やNDCG(Normalized Discounted Cumulative Gain)で定量的に精度を測っているか。「体感で良くなりました」では改善サイクルが回りません
チャンク分割 = 長い文書を検索しやすい小さな単位(チャンク)に分ける処理。分け方次第で検索精度が大きく変わる。段落単位、見出し単位、意味の区切り目で分ける「セマンティック分割」などがある。
MRR / NDCG = 検索結果の品質を数値で測る指標。「正解の文書が検索結果の何番目に来ているか」をもとにスコア化する。ベンダーがこれらの指標で精度を管理していれば、改善を定量的に追いかけられる。





