RAGで類似検索がうまくいかない理由とその解決策

以下の動画の内容を基に、RAGにおける検索精度の課題と具体的な改善策についてまとめました。

要点:なぜ従来の類似検索では不十分なのか

RAGで一般的に使われる「類似検索」には、実は大きな落とし穴があります。それは、「問い」と「答え」は必ずしも言葉の意味が似ているわけではないという点です。このギャップにより、検索品質が低下するという根本的な課題を抱えています。

Googleをはじめとする高度な検索システムでは、単純な言葉の類似度ではなく、クエリ(質問)とドキュメントの「関連性(Relevancy)」を学習した「Two-Towerモデル」などの推薦モデルを採用しています。

Vertex AI Embedding APIを活用すれば、自前で膨大な学習コストをかけることなく、この高度な関連性に基づくエンベディングをすぐに実務へ取り入れることが可能です。

実務レベルの検索に求められるもの

多くのRAG入門編で推奨される「ベクトルによる類似検索」ですが、実はプロが手掛ける検索システムの現場では、そのまま使われることは多くありません。

その理由は、「空はなぜ青い?」(クエリ)という問いに対し、正解となるドキュメントには「空気の散乱(レイリー散乱)が原因で……」と書かれているからです。この両者は、使われている単語も見た目も似ていません。

ビッグテック各社は、この「問いと答えの非対称性」を解決するため、単なる「似ているかどうか」ではなく、「この質問にはこの回答が最適である」という関連性を学習させるアプローチをとっています。

検索精度を阻む「意味的ギャップ(Semantic Gap)」の正体

RAGにおける検索精度の伸び悩みは、「Semantic Gap(意味的ギャップ)」という言葉で説明されます。

従来の類似検索が抱える限界

従来のエンベディングモデル(例:sentence-transformers)の多くは、テキスト同士がどれだけ意味的に近いかを測定するように学習されています。つまり「この2つの文章は似ているか?」を判定するモデルです。

しかし、Q&A(質疑応答)のシナリオでは、以下のように「似ているもの」が必ずしも「正解」とは限りません。

クエリ(質問) 期待する正解 類似検索で上位に来がちなもの(誤答例)
空はなぜ青い? 光の散乱(レイリー散乱)の解説 「空」「青い」という単語を含むだけの中身のない文
Pythonでリストをソートするには? list.sort()sorted() の具体的な使い方 「Pythonのリストとは何か」という概念的な説明
エラー: ModuleNotFoundError 該当モジュールのインストール手順 同じエラー名が記載されているだけの別文脈のログ

ズレが生じる仕組み

類似検索モデルは、あくまで「2つのテキストの距離」を測ります。対してQ&Aでは、「質問」という入力に対して「回答」という異なる性質の情報を結びつける必要があり、これは根本的に異なるタスクなのです。

【比較】類似検索と関連性に基づく検索の違い

1. 従来の類似検索(Similar Search)

クエリ「空はなぜ青い?」に対し、ベクトル空間上で物理的に近い点を探します。
ここでは、「空が青い理由を説明します」といった、タイトルだけが似ていて中身の薄いドキュメントが優先されやすく、実際に「散乱現象」を詳しく解説している正解ドキュメントが遠ざけられてしまう傾向があります。

2. 関連性に基づく検索(Relevancy Search)

Vertex AIなどが採用している推薦モデルでは、クエリとドキュメントをそれぞれ独立して処理しつつ、「関連性が高いペア」が近くなるようにあらかじめ学習されています。
これにより、たとえ表面上の単語が異なっていても、内容として最適なドキュメントを正確に引き当てることが可能になります。

関連性を導き出す「Two-Towerアーキテクチャ」

推薦モデルの代表的な構造である「Two-Tower(双塔)モデル」について解説します。

モデルの構造

このモデルは、クエリ専用の「Query Tower」とドキュメント専用の「Document Tower」という2つの独立したエンコーダーで構成されています。それぞれの入り口から入ったデータが最終的にベクトル化され、その関連性(スコア)が算出されます。

学習のプロセス

Two-Towerモデルは、実際の検索ログ(ユーザーがどの結果をクリックしたか)や、精査されたQ&Aデータセットを用いて学習されます。関連するペアの類似度を高く、無関係なペアを低く評価するよう、厳密な最適化が行われています。

なぜこれが効果的なのか

類似検索が「形が似ていること」を追うのに対し、Two-Towerモデルは「この問いには、この答えが相応しい」という人間のような判断基準を直接学習します。その結果、言葉の表面をなぞるのではなく、文脈を汲み取った高度な検索が実現するのです。

まとめ

RAGの検索精度に関する悩みは、単なるパラメータの調整不足ではなく、類似検索という手法そのものの限界に起因しているケースが少なくありません。

Vertex AI Embedding APIのような学習済みモデルを賢く取り入れることで、検索システムの質を一段上のレベルへと引き上げることが可能です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください