RAGとは

RAG(Retrieval-Augumented Generation、検索拡張生成)とは、大規模言語モデル(LLM)によってテキストを生成する際に、検索結果を生成するための情報を検索結果に含める技術。

SEO上位のNRI、IBM、NVIDIA等がこう言ってる。

Retrieval-Augmented Generation (RAG) は、大規模言語モデル(LLM)によるテキスト生成に、外部情報の検索を組み合わせることで、回答精度を向上させる技術のこと。 RAG | 用語解説 | 野村総合研究所(NRI)より引用

RAGは、外部の知識ベースから事実を検索して、最新の正確な情報に基づいて大規模言語モデル(LLM)に回答を生成させることで、ユーザーの洞察をLLMの生成プロセスに組み込むというAIフレームワークです。 Retrieval-Augmented Generation(RAG)とは? | IBM ソリューション ブログより引用

Retrieval-Augmented Generation は、外部ソースから取得した情報を用いて、生成 AI モデルの精度と信頼性を向上させるテクノロジです。 Retrieval-Augmented Generation (RAG) とは? | NVIDIAより引用

OpenAIはこう言っている。

RAG is the process of retrieving relevant contextual information from a data source and passing that information to a large language model alongside the user’s prompt. (RAGは、データソースから関連する文脈情報を取得し、その情報をユーザーのプロンプトと一緒に大規模な言語モデルに渡すプロセスである。) Retrieval Augmented Generation (RAG) and Semantic Search for GPTs | OpenAI Help Centerより引用

これらの定義をどう思いますか?

「追加学習しなくても外部の知識を扱えるようになる技術じゃないの?」

違います。

RAGによって改善されるのは、例えば「今の日本の総理大臣は誰?」といった知識を問うクイズのようなタスクなどに限られる。もちろん、それでもRAGは有用な手法と言える。だけど、それだけで外部知識をすべて扱えるとか、追加学習が必要ないとか、そんな事には全然ならない。

たとえば私が定義した「ハバタクカミの対策を教えて」タスクはRAG(というかRetriever)によって獲得した知識をもとに別の行動の計画を立てるエージェントのような使い方が必要になる。 他に、レストランのメニューを与えて「パスタの値段を教えて」というようなタスクはRAGで解ける。しかし「一番安いメニューを教えて」というのはドキュメントの一部をGeneratorに渡すRAGでは解けず、ドキュメント全体を読み込む必要がある。

このように、RAGで解ける問題は外部知識を求められるタスクの一部に過ぎない。RAGではない読み込み方とか、追加学習とか、いろいろな手法を目的に応じて使い分ける必要があることは、RAGの仕組みをすこしだけでも理解していれば簡単にわかる。

RAGの本来の定義

RAGが提案されたのは2020年のMetaによる論文“Retrieval-augmented generation for knowledge-intensive NLP tasks,”。そこでは、RetrieverとGeneratorを組み合わせてEnd-to-EndでFine-tuningすることで、より具体的で事実に基づいた生成ができるようになると述べられている。

しかし2024年現在、RAGについて述べられるときは必ずしもFine-tuningして扱われる文脈ではなく、単にRetrieverとGeneratorを組み合わせる技術として語られることが多い。これはGPT-4に代表される大規模言語モデルの性能向上に伴い、Fine-tuningを行わなくても十分な性能が得られるようになったのを表していると思う。

とにかく、RAGとは、LLMの生成に外部データソースの検索結果を含める手法のことであって、それ以上ではない。