RAG

LLMに外部ナレッジを注入する技術。データベースから関連情報を検索し、プロンプトに含めることで、モデルの知識を動的に拡張する。

仕組み

  1. ユーザーのクエリを埋め込みに変換
  2. ベクトルデータベースで類似度検索
  3. 取得した情報をプロンプトに追加
  4. LLMが回答を生成

LLMの制約とRAGによる解決

LLMには以下の制約がある:

RAGはこれらを外部検索で補完する。

ファインチューニングとの違い

手法 仕組み 適したケース 更新コスト
ファインチューニング モデル自体を再学習 文体、出力形式の調整 高(再学習が必要)
RAG 検索結果をプロンプトに追加 知識の追加・更新 低(データ追加のみ)

両者は排他的ではなく、併用も可能。

RAGが必要なケース

以下の条件を満たす場合にRAGが有効:

  1. セマンティック検索が必要: キーワードが分からない状態で探す
  2. エンドユーザーが直接使う: 検索スキルを持たない人が利用
  3. 大規模データ: 全文読み込みがコンテキストウィンドウを超える
  4. 複数データソース横断: 異なるシステムのデータを統合検索

RAG不要なケース

以下の場合はシンプルな検索で十分:

RAGの限界

  1. 取りこぼし問題: Top-Kで切り捨てられた情報は見えない
  2. チャンキングの難しさ: 切り方次第で検索精度が大きく変わる
  3. 埋め込みモデルの限界: 専門用語、文脈依存、否定の扱いが不完全
  4. コストとレイテンシ: 検索と生成の2ステップで遅延とコストが増加

Advanced RAGのテクニック

関連