1. RAGと情報検索の基本
RAGとは何か
RAG(Retrieval-Augmented Generation: 検索拡張生成)は、大規模言語モデル(LLM)に外部の知識ベースを組み合わせる技術です。 LLM が回答を作る前に、質問に関連する文書やデータを外部から検索し、その見つかった情報をプロンプト(指示文)に付与して LLM に渡します。
LLM は学習した時点のデータしか知らず、最新の出来事や特定の企業内の機密文書、個人のプライベートな情報を持っていません。 また、知らないことに対して、もっともらしい嘘をついてしまう現象(ハルシネーション)が起こることもあります。 RAG を使うと、最新情報や独自データをその都度検索して LLM に読ませることができるため、正確で根拠のある回答を生成できるようになります。
なぜ検索の品質が重要なのか
RAG システムの回答精度は、LLM の性能だけでなく、「検索の正確さ」に大きく依存します。 検索ステップで適切な文書を見つけられなければ、いくら賢い LLM であっても正しい回答を作ることはできません。
逆に、関係のない余計な文書を大量に渡してしまうと、LLM が混乱して誤った情報を回答に混ぜてしまう原因になります。 また、プロンプトの文字数が増えるため、処理速度の低下や API 利用コストの増加につながります。 そのため、数千・数万の文書の中から「質問の答えが書かれているピンポイントな情報」を上位に選び出す検索技術が、RAG の成功において最も重要です。
情報検索の2大アプローチ:密検索と疎検索
現在の RAG における検索技術は、大きく分けると「密検索(ベクトル検索)」と「疎検索(キーワード検索)」の2つが存在します。
密検索(Dense Retrieval)は、文章全体を意味を表現する数値の並び(密ベクトル)に変換し、質問文と文書の意味の近さ(コサイン類似度など)を計算して探す手法です。 表現の揺らぎや同義語(例:「クルマ」と「自動車」)を自然に吸収できる強みがあります。
疎検索(Sparse Retrieval)は、文章に含まれる単語そのものの出現頻度や珍しさを計算して探す、昔から使われている確実な手法です。 その代表格が「BM25」です。専門用語、型番、人名、固有名詞のように、完全に一致するキーワードを厳密に探したい場合に圧倒的な強みを発揮します。
近年の高精度な RAG では、この両方の長所を活かす「ハイブリッド検索」が標準的な設計となっています。 次章では、疎検索の代表である BM25 のアルゴリズムと数理について詳しく見ていきます。