導入
LLM(大規模言語モデル)はとても物知りですが、万能ではありません。「あなたの会社の就業規則」「今週リリースされたばかりの製品情報」「あなた個人のメモ」――こうした情報は、LLMの訓練データには含まれていません。知らないことを聞かれても、LLMは平気な顔でそれっぽい嘘を答えてしまうことがあります。これを**ハルシネーション(幻覚)**と呼びます。
説明
この弱点を補うのが RAG(Retrieval-Augmented Generation、検索拡張生成) です。名前をそのまま分解すると分かりやすくなります。
- Retrieval(検索):質問に関連しそうな文書を、あらかじめ用意した資料の中から探してくる。
- Augmented(拡張):見つけた文書を、質問と一緒にLLMへの入力に付け加える。
- Generation(生成):LLMは「渡された文書」を根拠にして、答えを組み立てる。
たとえるなら、試験にカンニングペーパーを持ち込ませるようなものです。何も見ずに記憶だけで答えさせるとうろ覚えで間違えることがありますが、正しい資料を目の前に置いた状態で答えさせれば、資料に書かれている内容をもとに正確に答えられます。
flowchart LR q1["質問"] --> llm1["LLM単体<br/>知識は訓練時点で固定"] llm1 --> a1["それっぽい答え<br/>(古い・幻覚のリスク)"] q2["質問"] --> r["① 関連文書を検索"] r --> aug["② 文書を添えてLLMへ"] aug --> a2["③ 根拠のある答え"]
LLM単体とRAGの違いを整理すると、こうなります。
| 観点 | LLM単体 | RAG |
|---|---|---|
| 最新情報への対応 | 訓練時点で止まっている | 検索元の文書を更新すれば追いつける |
| 社内情報・個人データ | 知らない(学習していない) | 検索対象に含めれば答えられる |
| 出典の提示 | できない(記憶から生成するだけ) | 「この文書を根拠にしました」と示せる |
| 幻覚(ハルシネーション) | 起きやすい | 根拠となる文書があるぶん抑えやすい |
RAGは新しいモデルを作る技術ではありません。既存のLLMに「検索」という道具を持たせて、答えの土台を与える仕組みだと考えてください。
まとめ
- LLMは訓練データにない情報(社内文書・最新情報・個人データ)を知らず、聞かれるとハルシネーションを起こすことがある。
- RAG = Retrieval(検索)+ Augmented(拡張)+ Generation(生成)。関連文書を検索してLLMに渡し、根拠のある答えを作らせる。
- 「試験にカンニングペーパーを持ち込ませる」イメージ。