RAG
正式名称
Retrieval-Augmented Generation(検索拡張生成)
- Retrieval … 検索、取り出すこと
- Augmented … 補強された
- Generation … 生成
「検索で補強した生成」という成り立ちの言葉です。
何をする仕組みか
RAG は、生成 AI へ入力した質問に関連するデータを外部のデータベース(ベクトル DB)から検索し、元の質問に追加情報として付与した上で LLM に回答を生成させる技術です
— IPA『テキスト生成AIの導入・運用ガイドライン』
順番で書くとこうなります。
- 質問が来る
- その質問に関係しそうな資料を、手元の資料から検索する
- 見つけた資料を、質問にくっつけてAIに渡す
- AIは、渡された資料を読んだ状態で答える
Microsoftの公式ドキュメントは「検索と大規模言語モデルを組み合わせて、回答を自分たちのデータに根拠づける方式」と説明しています。
試験の前に資料を渡すのと同じです。
LLMは、学習したときまでの内容で答えます。社内規定も、先月できた制度も知りません。そこで、答えさせる直前に関係する資料を手渡す。これがRAGです。
AIの中身を書き換えているのではなく、毎回カンニングペーパーを添えていると考えるのが近いです。
何のために使うのか
2つあります。
1つめは、自社の資料に基づいて答えさせること。 社内規定、商品マニュアル、過去の問い合わせ記録。これらはどのAIも学習していません。
2つめは、作り直さずに最新にできること。 AWSの解説は、RAGについて「モデルを再学習させる必要が一切ない」と述べています。資料を差し替えれば、答えも変わります。
ファインチューニングとの違い
ここは言い方を正確にしておきます。RAGはファインチューニングの代わりではありません。用途が違います。
Microsoftの公式ドキュメントは、使い分けをこう書いています。
| | 使う場面 | | --- | --- | | RAG | 非公開のデータ、または頻繁に変わるデータに根拠づけた回答が必要なとき | | ファインチューニング | 新しい知識を足すのではなく、モデルの振る舞い・文体・タスクの性能を変えたいとき |
知識を足したいならRAG、しゃべり方や得意分野を変えたいならファインチューニング、という分け方です。「RAGのほうが安いから代わりに使える」という話ではありません。
ハルシネーションとの関係
ここは資料の言い方をそのまま使います。
RAG(検索拡張生成)の活用等により、ハルシネーションの抑制や出力過程・根拠の透明性向上等が期待されている。
— 総務省・経済産業省『AI事業者ガイドライン(第1.1版)』
「抑制」であって「解消」ではなく、「期待されている」であって「する」ではありません。 Microsoftの公式ドキュメントも「検索して取得した内容があっても、モデルは依然として不正確な回答を生成しうる」と明記しています。
ひとつ補足しておきます。RAGの原論文は「ハルシネーションを減らす」とは述べていません。 2020年の論文の主張は、RAGのモデルが「より具体的・多様かつ事実に即した文章を生成する」というものです。ハルシネーションの抑制という言い方は、後年の実務の中で使われるようになったものです。
ベクトルデータベースは必須ではありません
IPAの説明は「外部のデータベース(ベクトル DB)から検索し」とベクトルDBを名指ししていますが、RAGの定義としてベクトルDBが必須というわけではありません。 原論文も、MicrosoftやGoogleの定義も、検索の方式を限定していません。Microsoftの検索サービスは全文検索も含みます。
ベクトルデータベースはよく使われる手段のひとつ、という位置づけで理解してください。
関連する語:グラウンディング
RAGの説明にはグラウンディングという語がよく一緒に出てきます。Googleの用語集は「モデルの出力を、検証可能な情報源に結びつける工程」と定義しています。
RAGは、グラウンディングを実現する方式のひとつです。
こう言えば一度で済む
こう言うと伝わらない 「社内のことも答えられるAIにしてください」
こう言えば一度で済む 「就業規則とマニュアルのPDFが30本あります。これを参照して答えさせて、どのページを見たかも表示したいです」
後者なら、相手はRAGを組む話だと判断できます。