用語「RAG」について説明。ChatGPTなどのチャットAIに独自の情報源を付与する仕組みのことで、具体的には言語モデルによるテキスト生成に特定の情報源(ナレッジベース)の検索を組み合わせること。これには、生成内容の正確さを向上させるメリットがある。
生成系AI/LLM(大規模言語モデル)のRAG(Retrieval-Augmented Generation:検索拡張生成)とは、ChatGPTやGeminiに代表されるチャットAIに独自の情報源を付与する仕組みのことで、具体的には言語モデルによるテキスト生成に特定の知識や情報源(例えばナレッジベースなど)への検索を組み合わせることである。これにより、回答内容がより専門的かつ正確になるため、事実とは異なる内容や文脈と無関係な内容の出力がもっともらしく生成される問題(=ハルシネーション《Hallucination》と呼ばれる)をより回避しやすくなるというメリットがある。
図1に示した基本的なRAGの流れを簡単に説明しておこう。この流れは、あくまで典型的なパターンを説明したものだ。実装方法の詳細は、実装者によって異なる場合があるので注意してほしい。
(2)の「ナレッジベースの検索」には、意味的に関連する情報を見つけ出せるベクトル検索や、「キーワード検索+ベクトル検索」で両者の良いとこ取りをしようとするハイブリッド検索がよく用いられる(検索方法については、「ベクトル検索」の用語解説でより詳しく解説している)。ナレッジベースとなるベクトルデータベース(ベクトルストアとも呼ばれる)としてはPineconeやAzure AI Searchなどの多種多様なものが存在する(各種ベクトルストアについては「ベクトルデータベース」の用語解説でより詳しく解説している。筆者が時間をかけて広範に調査して書いた力作なのでぜひ参考にしてもらえるとうれしい)。
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.