精度が伸びるRAG設計:重要な5レイヤー

技術解説
  1. ― 中で何が起きているのかを、例え話で解きほぐす ―
  2. 1. RAGを一言で言うと何か?
    1. 人間の場合を考えてみる
  3. 2. RAGの内部は「5つのレイヤー」に分かれている
  4. 3. Layer 1:データの表現(どう整理して覚えさせるか)
    1. ―「資料の置き方」で精度は決まる
      1. 例え話:倉庫の整理
    2. 3-1. 生テキスト型RAG(まず動くが、当たり外れが大きい)
    3. 3-2. 構造付加型RAG(おすすめ:意味のラベルを足す)
  5. 4. Layer 2:検索単位(何を1件として探すか)
    1. ―「何を1件として探すか」で、RAGの用途が決まる
      1. 例え話:本を探すとき
    2. 4-1. ファイル単位RAG(1ファイル = 1ベクトル)
    3. 4-2. チャンク単位RAG(ファイルを分割して検索)
    4. 4-3. 階層型RAG(本 → ページの2段階)
  6. 5. Layer 3:探し方(どうやって探すか)
    1. ―「全部探すか、近そうなところだけ見るか」
      1. 例え話:人探し
    2. 5-1. 全探索RAG(Brute force)
    3. 5-2. 近似探索RAG(ANN: Approximate Nearest Neighbor)
  7. 6. Layer 4:絞り込み(どれを採用するか)
    1. ―「候補をどう選ぶか」で、精度が跳ねる
      1. 例え話:採用面接
    2. 6-1. Single-stage RAG(1段で決める)
    3. 6-2. Two-stage RAG(Rerankで再評価する)
  8. 7. Layer 5:LLMへの渡し方(どう読ませるか)
    1. ―「提示の仕方」で、LLMの迷い方が決まる
      1. 例え話:持ち込み可の試験
    2. 7-1. 生注入型(そのまま貼る)
    3. 7-2. 要約注入型(圧縮して渡す)
    4. 7-3. 根拠制約型(Grounded:根拠を固定する)
  9. 8. RAGは「1つの技術」ではない
  10. まとめ:RAGは“人間の調べ物”の再現度を設計する技術

― 中で何が起きているのかを、例え話で解きほぐす ―

RAG(Retrieval-Augmented Generation)はよく、

「AIが社内ドキュメントを読めるようになる仕組み」

のように説明されます。

ただ、この理解だけで実装を始めると、だいたい途中で詰まります。

  • 思ったほど精度が出ない
  • 関係ない情報を持ち出す
  • 回答がブレる
  • 「RAGなのに嘘をつく(それっぽいけど根拠が違う)」

なぜかというと、RAGの正体は“1つの技術”ではなく、複数の設計判断の集合体だからです。
本質は「検索してから答える」という、人間の調べ物プロセスをどこまで機械で再現するかにあります。

この記事では、RAGを 内部で何が起きているか という視点で分解し、例え話を使いながら直感的に理解できるように整理します。
エンジニア以外でも読める一方で、実装前提の人が 設計判断できる深さまで踏み込みます。


1. RAGを一言で言うと何か?

RAGとは、

「人間が資料を探してから答える行為を、機械で再現したもの」

です。

人間の場合を考えてみる

職場で、こう聞かれたとします。

「欠勤控除ってどういう扱いでしたっけ?」

あなたは、だいたいこう動くはずです。

  1. 就業規則の“ありそうな場所”を思い出す
  2. それっぽい資料を何冊か開く
  3. 該当しそうな章を読む
  4. 書いてある内容を要約して答える

RAGは、この行動をそのまま機械化します。


2. RAGの内部は「5つのレイヤー」に分かれている

RAGは内部的に、次の5層で構成されます。

Layer 1: データの表現(どう整理して覚えさせるか)
Layer 2: 検索単位(何を1件として探すか)
Layer 3: 探し方(どうやって探すか)
Layer 4: 絞り込み(どれを採用するか)
Layer 5: 渡し方(どうLLMに読ませるか)

よくある誤解として、「RAGの種類」というと“ベクトルDBの違い”みたいに語られがちですが、実態は違います。
各レイヤーでどの選択をするか、その組み合わせが「あなたのRAG」です。

以降は、レイヤーごとに「何を決めているのか」をほどいていきます。


3. Layer 1:データの表現(どう整理して覚えさせるか)

―「資料の置き方」で精度は決まる

例え話:倉庫の整理

同じ荷物でも、

  • 箱に何も書いていない倉庫
  • 「工具」「書類」「食品」とラベル付きの倉庫

では、探すスピードも正確さもまるで違います。RAGでも同じです。

3-1. 生テキスト型RAG(まず動くが、当たり外れが大きい)

  • PDF / JSON / Markdownなどを
  • そのまま文字列にしてEmbeddingする

特徴

  • 実装は簡単
  • ただしノイズも混ざりやすい(目次、ヘッダ/フッタ、脚注、表の崩れ、重複など)

たとえるなら、段ボールに全部突っ込んだ倉庫です。
「あるにはある」けど、探す側(検索・モデル)が苦労します。

3-2. 構造付加型RAG(おすすめ:意味のラベルを足す)

Embeddingする前に、意味が分かるラベルを付ける方式です。

例(概念的な整形):

TITLE: 就業規則
SECTION: 欠勤控除
RULE: 欠勤控除は1日単位で控除
EXCEPTION: 半休は0.5日

なぜ効くのか?

Embeddingは「単語」よりも「意味の方向性」で近さを測ります。
このとき「これはタイトル」「これはルール」「これは例外」といった情報があると、質問との対応が強くなります。

たとえるなら、棚にラベルを貼った倉庫
検索が当たりやすく、後工程(LLM)も読み取りやすくなります。


4. Layer 2:検索単位(何を1件として探すか)

―「何を1件として探すか」で、RAGの用途が決まる

例え話:本を探すとき

  • 「どの本を読むべきか」を知りたい
  • 「本の中のこの1ページを知りたい」

この2つは、探す“粒度”が違います。RAGも同様です。

4-1. ファイル単位RAG(1ファイル = 1ベクトル)

できること

  • 「この質問なら、この資料が怪しい」という“資料ナビ”

向いている用途

  • 読むべきドキュメントの特定(FAQ候補提示、資料誘導、参照先の案内)

たとえるなら、まず“本棚(どの本か)”を当てるRAGです。

4-2. チャンク単位RAG(ファイルを分割して検索)

できること

  • 回答文をその場で生成しやすい
  • 「この段落に書いてある」と根拠を示しやすい

難しさ

  • 分割(チャンク)の仕方が悪いと意味が壊れる
  • 例:定義と例外が別チャンクに割れる
  • 例:表の行が切れて文脈が欠落する

たとえるなら、本の中の“ページ(段落)”を探すRAGです。

4-3. 階層型RAG(本 → ページの2段階)

Step 1: 本(資料)を探す
Step 2: 本の中のページ(チャンク)を探す

人間の探し方に最も近い形です。
「まず候補の資料を絞ってから、その中を丁寧に探す」ので、精度とコストのバランスが取りやすいです。


5. Layer 3:探し方(どうやって探すか)

―「全部探すか、近そうなところだけ見るか」

例え話:人探し

  • クラス全員に声をかける
  • 「あの人はこの辺にいそう」と当たりを付ける

規模が小さいなら前者でも成立しますが、人数が増えるほど後者が必要になります。

5-1. 全探索RAG(Brute force)

  • 全ベクトルと比較する
  • 正確(取りこぼしが少ない)
  • 件数が増えると遅い

たとえるなら、小さなクラスなら全員に聞ける、という話です。

5-2. 近似探索RAG(ANN: Approximate Nearest Neighbor)

  • 「だいたい近い」を高速に探す
  • 代表例:IVF / HNSW など

たとえるなら、町内会・市区町村レベルになったら当たりを付けるしかない、という話です。
実務のRAGは、データが増えるほどANNが基本になります。


6. Layer 4:絞り込み(どれを採用するか)

―「候補をどう選ぶか」で、精度が跳ねる

例え話:採用面接

  • 書類選考だけで決める
  • 書類 → 面接 → 最終判断

後者のほうが手間はかかりますが、ミスマッチは減ります。RAGも同じです。

6-1. Single-stage RAG(1段で決める)

  • 検索結果(上位k件)をそのまま使う

たとえるなら、書類選考だけです。
軽いけれど、運が悪いと関係ない候補が紛れます。

6-2. Two-stage RAG(Rerankで再評価する)

  • いったん多めに集める(例:上位50件)
  • その中を再評価して厳選(例:最終的に上位5件)

たとえるなら、面接付き採用
ここを入れるだけで「それっぽいけど違う」が大きく減ることが多いです。


7. Layer 5:LLMへの渡し方(どう読ませるか)

―「提示の仕方」で、LLMの迷い方が決まる

例え話:持ち込み可の試験

  • 資料持ち込み可(ただし範囲が広すぎると迷う)
  • 「この資料だけを根拠に答えよ」(根拠が明確になる)

LLMも同様で、“何を根拠にしていいか”が曖昧だと、良くも悪くも想像してしまうことがあります。

7-1. 生注入型(そのまま貼る)

  • 検索結果をそのままプロンプトに貼る
  • 手軽だが、長くなるほどモデルが迷いやすい

7-2. 要約注入型(圧縮して渡す)

  • 要約して渡す
  • トークン節約になる
  • ただし情報欠落のリスクがある(要約の時点で“落ちる”)

7-3. 根拠制約型(Grounded:根拠を固定する)

  • 「以下の情報のみを根拠に答えよ」を強く指示する
  • 引用(根拠の提示)を必須にする
  • 情報が足りない場合は「不足」と言わせる

業務RAGで一番重要になりやすいのがここです。
たとえるなら、採点者が“根拠の出典”まで確認する試験にするイメージです。


8. RAGは「1つの技術」ではない

RAGはこう捉えると一気に分かりやすくなります。

RAG = 本の整理方法 × 探し方 × 選び方 × 読ませ方

だから、

  • RAGを入れたのに精度が出ない
  • RAGなのに嘘をつく(根拠がズレる)

という現象は、だいたい どこかのレイヤーの設計がズレているだけです。
「RAGを入れたかどうか」ではなく、「どのレイヤーをどう設計したか」が勝負になります。


まとめ:RAGは“人間の調べ物”の再現度を設計する技術

RAGとは、

「AIに資料を渡す仕組み」ではなく、 「人間の調べ物のプロセスを、どこまで再現するか」を設計する技術

です。

実装は、その後です。
まずは5レイヤーのどこで何を選ぶかを言語化できると、RAG開発は途端に安定します。


コメント

タイトルとURLをコピーしました