RAG(Retrieval-Augmented Generation)とは:定義と仕組み

RAG(Retrieval-Augmented Generation、検索拡張生成)とは、言語モデルが応答を生成する前に、ドキュメントベースの中から情報を検索する仕組みです。

Atakoのエージェントが執筆 · 確認・承認者 Romain Laodicina · Atako CTO

簡単な定義

RAG(Retrieval-Augmented Generation)とは、ドキュメント検索エンジンと言語モデルを組み合わせた手法です。応答を生成する前に、モデルは外部のデータベースから関連する箇所を検索し、その内容をもとに応答を生成します。これにより、事実に基づかない生成を抑え、最新の情報や企業内部の情報を活用できます。

RAGは、ツールコーリングや永続的なメモリと並んで、今日の自律型AIエージェントを支える技術要素の一つです。この略語は、2020年5月に、Patrick Lewisを筆頭とするFacebook AI Research(現Meta)のチームが発表した研究論文に由来します。当時の課題認識はシンプルでした。大規模言語モデルはそのパラメータの中に膨大な知識を蓄えているものの、それを簡単には更新できず、特定の情報源を正確に示すこともできない、というものです。RAGは、学習時に固定された記憶だけにすべてを頼るのではなく、応答する際にモデルが外部のデータベースへ情報を探しに行けるようにする、という解決策を提示しました。

詳しい定義

Retrieval-Augmented Generation、すなわち検索拡張生成とは、異なる2つの要素を組み合わせたアーキテクチャを指します。外部のドキュメントベースから関連する箇所を検索する検索(retrieval)の仕組みと、その箇所をもとに最終的な応答を作成するテキスト生成モデルです。LewisらによるNeurIPS 2020の基礎論文では、RAGはパラメトリックメモリ(事前学習済みモデルが内部に持つ知識)と非パラメトリックメモリ(その都度参照するドキュメントベース)を組み合わせることで、正確な知識を要するタスクの性能を向上させるとされています。

この定義については、幅広い合意があります。学術文献であれ、NVIDIAによる一般向けの解説であれ、RAGは常に、検索してから生成するという同じ2段階の仕組みに帰着します。見解が分かれるのは主に、技術的な実装(ベクトルデータベースの種類、ドキュメントの分割方法、取得する箇所の数)に関する部分であり、原則そのものの定義ではありません。

RAGは、言語モデルの2つのよく知られた限界に対応します。もっともらしいが誤った応答を作り出してしまうハルシネーションと、モデルの学習時点以降に情報が変化してしまう陳腐化です。実際の最新のドキュメントに応答の根拠を置くことで、RAGはモデルを再学習させることなく、この2つの問題を軽減します。

仕組み

RAGによる典型的なリクエストの流れは、3つのステップからなります。まず、ユーザーの質問(あるいはエージェントのニーズ)は、ドキュメントベースに対する検索へと変換されます。多くの場合、テキストのベクトル表現に対する類似度検索が使われ、従来のキーワード検索と組み合わされることもあります。次に、この検索によって取得された最も関連性の高い箇所が、最初の質問に加えて、言語モデルに送られる文脈の中に挿入されます。最後に、モデルはこれらの箇所を根拠にして応答を生成します。理想的には、その内容を引用するか、内容に沿った形で、即興で作り出すのではなく応答します。

この仕組みは、自律型AIエージェントによる利用に適しています。ドキュメント検索は、すべての応答の前に一律に起動されるのではなく、エージェント自身が必要だと判断したタイミングで呼び出すツールとして公開できます。これが、すべてのリクエストの前段に接続される「静的な」RAGと、いつ検索するか、何を検索するか、最初の結果が不十分な場合に再検索すべきかをモデル自身が判断する「エージェンティックな」RAGとの違いです。

Atakoでの具体例

Atakoの公開ドキュメントには、そのエージェントが使用するドキュメント検索の内部アーキテクチャについて詳しい説明はないため、AtakoがLewisらの論文が定義する厳密な意味でのRAGを使っているとここで断言することはできません。一方、文書化されている中で最も近い仕組みは次のものです。各エージェントには、企業によって共有され、フォルダごとに整理された、プレビュー可能な形式(Markdown、CSV、JSON、PDF、HTML、画像、テキスト、ソースコード)に対応したファイルライブラリがあります。これらのファイルは、人間またはエージェント自身によって、読み取り権限でエージェントに共有されるか、エージェント専用のフォルダに直接追加されます。

このファイルライブラリは、再起動や一時停止を経ても失われないエージェントの永続的なメモリと組み合わさることで、エージェントが応答や行動の前に参照できる外部の知識ベースとしての役割を果たします。これは、モデルが学習時に記憶した内容だけに頼るのではなく、実際の情報を探しに行くというRAGの原則に、考え方として通じるものです。例えば、カスタマーサポート用に設定されたエージェントは、チケットに答える前に、自分のフォルダに共有された製品ドキュメントのファイルを参照でき、当てずっぽうで答えることを避けられます。

よくある誤解

最もよくある誤解の一つは、RAGをソフトウェアのボタンのように、ワンクリックで有効化できる機能だと考えることです。実際には、これは一つのアーキテクチャであり、ドキュメントをどう分割するか、どうインデックス化するか、いくつの箇所を取得するかといった具体的な技術的選択が、応答の質を直接左右します。

2つ目の誤りは、RAGがハルシネーションを完全になくすと考えることです。RAGは、検証可能なドキュメントに生成の根拠を置くことでハルシネーションを減らしますが、モデルが箇所を誤って解釈したり、不完全な検索によって取得された関連性の低いドキュメントから応答を生成したりする可能性は残ります。RAGはリスクの所在を移すものであり、なくすものではありません。

3つ目の誤りは、RAGとファインチューニングを混同することです。ファインチューニングは、特定のデータでモデルを再学習させることでモデルを恒久的に変化させます。RAGはモデル自体には手を加えず、リクエストのたびに参照する外部のデータベースを追加するだけなので、更新が速く、一般的にコストも低く抑えられます。

最後に、ドキュメントベースの質の重要性を軽視することも、よくある誤りです。古くなった、構造が不十分な、あるいは不完全なドキュメントに接続されたRAGシステムは、背後で使われる生成モデルの性能がどれほど高くても、質の低い応答しか生み出しません。

関連用語

よくある質問

人工知能におけるRAGとは、どういう意味ですか。

RAGとは、Retrieval-Augmented Generation(検索拡張生成)の略です。言語モデルが、学習時に得た知識だけをもとに応答するのではなく、応答を作成する前に関連するドキュメントを検索する手法です。

モデル単体ではなく、なぜRAGを使うのですか。

モデル単体では、学習時に記憶した内容をもとに応答しますが、企業固有のテーマについては情報が古かったり不完全だったりすることがあります。RAGは、最新のデータベースを検索するステップを追加することで、事実に基づかない応答を減らし、正確で検証可能な情報源を引用できるようにします。

RAGは、AIモデルのハルシネーションを完全になくせますか。

いいえ、完全になくすのではなく、減らすものです。ドキュメント検索が関連性の低い箇所を取得してしまったり、モデルがそれを誤って解釈したりすれば、不正確な応答が生じる可能性は残ります。RAGは応答を情報源に根拠づけることで信頼性を高めますが、絶対的な保証ではありません。

RAGとモデルのファインチューニングの違いは何ですか。

ファインチューニングは、特定のデータでモデルを再学習させることで内部パラメータを変更するもので、コストが高く、知識はその学習時点で固定されてしまいます。RAGはモデル自体には手を加えず、リクエストのたびに参照する外部のドキュメントベースを追加するだけなので、モデルに手を加えることなく、いつでも更新できます。

次に読む

出典

Romain Laodicina

Atako CTO

このコンテンツはAtakoのAIエージェントが執筆し、その後Atako CTOのRomain Laodicinaが確認・修正・承認しました。

最初のAIエージェントを導入

無料でアカウントを作成し、コード不要で数分でエージェントを起動できます。

AIの最前線を 常にキャッチアップ。

新機能、新しいエージェント、当社のAI分析を直接受信箱にお届けします。スパムなし、いつでも配信停止できます。