Retrieval-Augmented Generation(RAG)とは?

RAGは言語モデルとドキュメント検索ステップを組み合わせ、モデルの学習済み記憶だけでなく、取得した情報源に基づいた回答を可能にします。

Retrieval-Augmented Generation(RAG)は、言語モデルが質問に答える前に外部ドキュメントを参照できるようにするAIシステム構築の手法です。学習時に得た知識のみに依存するのではなく、RAGパイプラインはまずユーザーのクエリに関連する箇所を知識ベースから検索し、それらの箇所をコンテキストとしてモデルに渡します。これにより、モデルの内部の重みだけに依存するのではなく、特定の引用可能な情報源に基づく生成された回答が得られます。

Retrieval-Augmented Generationの仕組み

一般的なRAGシステムは、リトリーバー(検索器)とジェネレーター(生成器)の2つの主要コンポーネントで構成されます。リトリーバーは通常、ドキュメント群から構築されたベクトル検索インデックスです。各ドキュメントがインデックスに追加される際に、埋め込みモデルがそのチャンクを数値ベクトルに変換します。同じモデルがユーザーのクエリも埋め込み類似度検索(一般的にはコサイン類似度または内積距離を用いた近傍探索)が行われ、クエリに最も近いベクトルを持つチャンクが返されます。上位にランクされたチャンクは、「提供されたコンテキストのみを使用して回答する」といった指示とともに、大規模言語モデルに送られるプロンプトに挿入されます。

たとえば、ユーザーが社内アシスタントに「当社の育児休業ポリシーはどうなっていますか?」と尋ねた場合、リトリーバーは従業員ハンドブックの関連セクションを見つけ出し、言語モデルはその箇所を引用して正確な回答を作成します。Facebook AI ResearchのLewisらによる2020年の論文で紹介されたこのパターンは、知識(インデックスに保存)と推論(モデルが実行)を分離するため、ソース資料が変更されてもスケーラブルに機能します。

なぜ重要なのか

RAGはスタンドアロンの言語モデルに存在する3つの慢性的な問題に対処します。第一に、モデルが即興で生成するのではなく取得したテキストに固定されるため、ハルシネーションを削減できます。第二に、インデックスを更新するだけで、モデルの学習カットオフ以降に存在しなかった情報や変更された情報をシステムに反映できます。第三に、モデルの回答がより検証しやすくなります。開発者やユーザーは取得したチャンクを確認し、引用し、あらゆる主張をソースドキュメントまでさかのぼることができます。

これらの特性により、RAGはエンタープライズ向け質疑応答、カスタマーサポートのコパイロット、法的・コンプライアンス検索、そして基盤モデルを再トレーニングすることなく非公開または独自データ上で動作する必要があるAIアシスタントのデファクトスタンダードとなっています。

主要な種類とパターン

  • ナイーブ(または「Retrieve-and-Read」)RAG:単一の検索ステップで、上位k件のチャンクをジェネレーターのプロンプトに直接フィードします。
  • Advanced RAG:生成前にクエリ書き換え、再ランキング、チャンクレベルのフィルタリングを追加し、精度を向上させます。
  • Modular RAG:Web検索、SQLルックアップ、API呼び出しなどの交換可能なコンポーネントでパイプラインを構成し、検索と生成の間をループさせることもあります。
  • Graph RAG:コーパスからナレッジグラフを構築し、関連エンティティのサブグラフを取得することで、つながりのあるデータに対してより文脈に即した回答を生成できます。
  • Agentic RAG:言語モデルが、いつ・何を検索するかを複数のツールを横断して判断し、最終的な回答を生成します。

知識の保存を推論エンジンから分離することで、RAGは正確かつ最新かつ監査可能なことが求められる本番運用AIアプリケーションの基本的な構成要素となっています。元の研究はLewisらによる「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」(2020年)で説明されており、現在のベストプラクティスはLlamaIndexLangChainなどのフレームワークでドキュメント化されています。

You might also like

関連記事