RAG(Retrieval-Augmented Generation:検索拡張生成)とは?:AI・機械学習の用語辞典
用語「RAG」について説明。ChatGPTなどのチャットAIに独自の情報源を付与する仕組みのことで、具体的には言語モデルによるテキスト生成に特定の情報源(ナレッジベース)の検索を組み合わせること。これには、生成内容の正確さを向上させるメリットがある。
用語解説
生成系AI/LLM(大規模言語モデル)のRAG(Retrieval-Augmented Generation:検索拡張生成)とは、ChatGPTやGeminiに代表されるチャットAIに独自の情報源を付与する仕組みのことで、具体的には言語モデルによるテキスト生成に特定の知識や情報源(例えばナレッジベースなど)への検索を組み合わせることである。これにより、回答内容がより専門的かつ正確になるため、事実とは異なる内容や文脈と無関係な内容の出力がもっともらしく生成される問題(=ハルシネーション《Hallucination》と呼ばれる)をより回避しやすくなるというメリットがある。
RAGの基本的な流れ
図1に示した基本的なRAGの流れを簡単に説明しておこう。この流れは、あくまで典型的なパターンを説明したものだ。実装方法の詳細は、実装者によって異なる場合があるので注意してほしい。
- (1) 質問: ユーザーが、チャットAIアプリに質問を入力。
- (2) 検索: チャットAIアプリは内部で、質問内容を基にナレッジベース(ベクトルデータベースなどの情報源)を検索。
- (3) 結果データ: チャットAIアプリは内部で、検索結果を取得。
- (4) 質問+結果データ: チャットAIアプリは内部で、質問と検索結果を使ってLLMに質問。
- (5) 回答: チャットAIアプリは内部で、質問に対する回答を取得。
- (6) 回答: チャットAIアプリは、ユーザーに回答を表示。
(2)の「ナレッジベースの検索」には、意味的に関連する情報を見つけ出せるベクトル検索や、「キーワード検索+ベクトル検索」で両者の良いとこ取りをしようとするハイブリッド検索がよく用いられる(検索方法については、「ベクトル検索」の用語解説でより詳しく解説している)。ナレッジベースとなるベクトルデータベース(ベクトルストアとも呼ばれる)としてはPineconeやAzure AI Searchなどの多種多様なものが存在する(各種ベクトルストアについては「ベクトルデータベース」の用語解説でより詳しく解説している。筆者が時間をかけて広範に調査して書いた力作なのでぜひ参考にしてもらえるとうれしい)。
RAGの工夫と発展
RAGは有用ではあるが、完璧でも万能でもない。質問の仕方などによって思ったように適切な回答が得られない場合がある。場合によっては、適切な回答を得るための工夫が必要になる。
その代表的な工夫のテクニックに「HyDE(Hypothetical Document Embeddings:仮説文書の埋め込み)」などがある。HyDEは、LLMに仮説的に回答を作らせてからナレッジベースをベクトル検索するテクニックである(詳しくは論文を参照してほしい)。HyDE以外にも「FLARE」や「Multi Query Retriver」「Ensemble Retriever」などがある(まずはこちらのスライド資料を一読するのがお勧めだ)。
また、RAGの技術は発展途上であり、新しい手法も考案されている。例えば、2024年3月1日に公開されたLLMアプリ(チャットAIアプリを含む)用のライブラリ「LlamaIndex」のブログ記事「Towards Long Context RAG(長いコンテキストRAGに向けて)」では、2024年2月16日に公開されたGoogleのLLM「Gemini 1.5 Pro」が最大100万トークンのコンテキストウィンドウを有する(=非常に長いテキストを入力できる)ことを受けて、新しいRAGのアーキテクチャを提案している。
Copyright© Digital Advantage Corp. All Rights Reserved.