JA EN
体系RAG・検索拡張
·★ 会員·10分で読めます

RAGの基礎と設計パターン — 埋め込み・チャンク・リランキング・評価を1から

検索拡張生成(RAG)を前提知識ゼロから解説。仕組みの直感、チャンク分割の戦略、ハイブリッド検索とリランキング、そして最重要の評価設計まで。

対象textタスクragretrieval

RAGとは何か: LLMに「持ち込み可の試験」を受けさせる

LLMには構造的な弱点が2つあります。知識が学習時点で止まっていること、そして知らないことを聞かれるともっともらしい嘘(ハルシネーション)を生成しがちなことです。社内規程や最新の製品仕様など、モデルが学習していない情報には答えられません。

RAG(Retrieval-Augmented Generation, 検索拡張生成)はこれを「試験の受け方を変える」ことで解決します。閉卷試験(記憶だけで答える)ではなく、持ち込み可の試験にするのです。

  1. 質問が来たら、まず手元の資料棚から関連ページを検索する
  2. 見つけたページを質問と一緒にプロンプトに入れる
  3. LLMは「この資料に基づいて答えて」と指示されて回答する

用語としてのRAGは Lewis らの2020年の論文に由来しますが、現在は「外部知識を検索してプロンプトに注入する構成」全般を指す言葉として定着しています。ファインチューニングと違ってモデル自体は変更しないため、知識の更新が資料の差し替えだけで済み、回答の根拠(出典)を示せるのが大きな利点です。

全体パイプライン: 5つの工程

RAGは大きく「仕込み(インデックス構築)」と「実行(検索と生成)」に分かれます。

[仕込み]  文書 → チャンク分割 → 埋め込み → ベクトルDBに保存
[実行]    質問 → 埋め込み → 類似検索 → (リランキング) → プロンプト合成 → 生成

この記事では各工程を順に分解し、最後に「どこが壊れやすいか」を評価の観点から整理します。

埋め込み: 意味を座標にする

埋め込み(embedding)とは、テキストを数百〜数千次元の数値ベクトルに変換することです。ポイントはただ1つ、意味が近い文は、ベクトル空間でも近くに配置されるよう学習されていることです。

v1 = embed("有給休暇の申請方法")
v2 = embed("休みを取るにはどうすればいい?")
v3 = embed("サーバーの再起動手順")

cosine_sim(v1, v2)  # 高い(言い回しが違っても意味が近い)
cosine_sim(v1, v3)  # 低い

キーワード検索と違い、単語が一致しなくても意味で引けるのが強みです。逆に、型番・人名・エラーコードのような「文字列そのものの一致」が重要な検索は苦手で、これが後述のハイブリッド検索の動機になります。

ここで出てきた「類似度」の実体は、ベクトルどうしの内積(コサイン類似度)です。2本のベクトルが指す方向が近いほど値が大きくなる——線形代数の記事で扱った内積の幾何そのものなので、下の図で角度と内積の関係を触って確かめてみてください。

FIG 12本のベクトルの向きを変えると内積と余弦(コサイン類似度)が変わる。埋め込み検索の「意味が近い」とは、ベクトルのなす角が小さいことを指している

チャンク戦略: RAGの品質はここで大半が決まる

文書を丸ごと埋め込むと意味が平均化されてぼやけ、細かすぎると文脈が失われます。分割(チャンキング)の設計指針は次の通りです。

検索の物差し(内積・コサイン・距離)の違いは、事故が起きる形で理解しておくべきです。クエリをドラッグして、内積のときだけ「長いベクトルの房」が割り込むのを確かめてください。

FIG 2正規化しない内積検索では、向きが違っても長いベクトルが上位に入り込む。RAGが埋め込みを正規化する理由

内積そのものから固有値・低ランクまでの数学はLoRAとRAGを支える線形代数で1本にまとめています。

もう1つ効くのがメタデータの付与です。チャンクに「文書タイトル・章・更新日」を持たせ、検索時のフィルタ(例: 最新版のみ)や、チャンク先頭へのタイトル埋め込みに使うと精度が上がります。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

コメント

コメントにはログインが必要です