第8部 外部知識とツールでLLMを拡張する
第29章RAGの全体像
LLMは学習した範囲の知識しか持たず、最新の情報や手元の資料には答えられません。この限界を補う代表的な 方法がRAGです。第8部の最初となるこの章では、RAGとは何か、どのような流れで働くのかという全体像を つかみます。実務でLLMを使うとき、もっとも登場する機会の多い手法の一つです。
29.1LLM単体の知識の限界
LLMは学習した時点までの一般的な知識しか持たず、社内の資料や最新の情報には答えられません。これがLLMを実務で使うときの大きな制約です。
第24章で見たとおり、LLMは学習した時点までの知識で動きます。そのため、学習後に起きた出来事や、 学習データに含まれていない情報には答えられません。とくに実務では、社内の規定や製品の資料、自分たちの データベースの中身など、そのLLMが学習していない情報を扱いたい場面が数多くあります。
こうした情報を、LLMはそのままでは知りません。知らないことを無理に答えさせれば、第24章で見た ハルシネーションを招きかねません。かといって、社内資料を覚えさせるために、そのつどモデルを学習し直すのは 現実的ではありません。第10章で見たとおり、学習は重い処理だからです。そこで、モデルの中身は変えずに、 必要な知識を「外から渡す」という発想が生まれます。それがRAGです。
29.2RAG:検索して得た情報を入力に加える
RAGとは、質問に関連する情報をまず外部から検索し、その情報をプロンプトに加えたうえでLLMに答えさせる方法です。
RAGは、日本語では「検索拡張生成」と訳されます。考え方はシンプルです。LLMに直接答えさせる前に、まず 質問に関連する情報を、用意しておいた資料の中から検索します。そして、検索で得た情報をプロンプトに 加えたうえで、「この情報をもとに答えて」とLLMに渡します。LLMは、自分の記憶だけでなく、渡された情報を 手がかりに応答できるため、学習していない内容にも、根拠にもとづいて答えやすくなります。
身近なたとえ
知識だけで答える試験ではなく、資料を見ながら答えてよい試験に似ています。手元に関連資料を用意して おき、それを参照しながら答える。RAGは、LLMに対してこの「資料を見ながら答える」形を用意する しくみだと考えると分かりやすくなります。
29.3RAGの基本的な流れ
RAGは、質問に関連する情報を検索し、それをプロンプトに加えてLLMに渡し、応答を得る、という流れで進みます。
RAGのおおまかな流れは、次のようになります。まず、利用者からの質問を受け取ります。次に、その質問に 関連する情報を、あらかじめ用意しておいた資料の中から検索します。続いて、検索で得た情報を質問と一緒に プロンプトにまとめ、LLMに渡します。最後に、LLMがその情報を踏まえて応答を返します。この検索の部分で 中心的な役割を果たすのが、次章で扱うベクトルDBです。
29.4RAGが向く場面
RAGは、社内文書への質問応答や、最新情報を扱いたい場面、根拠を示して答えたい場面に向きます。モデルを学習し直さずに知識を補える点が利点です。
RAGが力を発揮するのは、LLMが学習していない情報を扱いたい場面です。社内の規定やマニュアルにもとづいて 質問に答える、頻繁に更新される情報を扱う、といった用途が典型例です。検索で得た情報を根拠として示せる ため、応答の裏づけを確認しやすい利点もあります。「どの資料にもとづいて答えたか」を示せることは、 第24章で見た誤りへの備えとしても有効です。
実務メモ:ファインチューニングとの使い分け
「社内の情報に答えさせたい」とき、モデルを学習し直す(ファインチューニング)べきか、RAGを使うべきか 迷うことがあります。おおまかな目安として、内容が頻繁に変わる知識や、根拠を示したい場合はRAGが 向きます。参照する資料を差し替えるだけで、扱う知識を更新できるからです。一方、特定の口調や形式に 振る舞いをそろえたい場合は、ファインチューニングが向くこともあります。多くの場面では、まず手軽な RAGから試すのが現実的です。知識は外から渡し、振る舞いは調整で、と役割を分けて考えると整理できます。
また、モデルそのものを学習し直さなくても、参照する資料を差し替えるだけで扱える知識を更新できるため、 運用の面でも扱いやすい方法です。RAGの鍵となるのは、質問に本当に関連する情報を、うまく検索できるか どうかです。次の章では、その検索を支える埋め込みとベクトルDB、そして「似ている」を測るコサイン類似度の しくみを見ていきます。
この章の要点
- LLMは学習範囲の知識しか持たず、社内資料や最新情報には答えられないという限界があります。
- RAGは、質問に関連する情報を検索し、それをプロンプトに加えてLLMに答えさせる方法です。
- 流れは、質問→関連情報の検索→プロンプトにまとめる→LLMが応答、というものです。
- 社内文書への質問応答や最新情報の利用に向き、モデルを学習し直さずに知識を補え、根拠も示せます。