生成AIで最近よく出てくるRAGについて非エンジニア向けに解説していきます。
RAGとは?
RAG(Retrieval-Augmented Generation)は、最近の生成AIで注目されている技術です。RAGは、大規模言語モデル(LLM)と情報検索技術を組み合わせたものです。簡単に言うと、RAGは外部データベースから情報を取得し、それを基に新しいテキストを生成する方法です。これにより、より正確で最新の情報を提供することができます。
RAGのメリット
RAGの最大のメリットは、最新かつ正確な情報を提供できることです。従来のLLMは、訓練時に与えられたデータに基づいてテキストを生成しますが、RAGはリアルタイムで外部のデータベースやウェブサイトから情報を取得し、それを反映させることができます。これにより、より現実に即した、具体的な回答が得られるようになります。
大規模言語モデルの課題
従来の大規模言語モデルには下記の課題があります。
- 情報が古い可能性
- 正確性
一つが、訓練データの情報が古くなることです。モデルは訓練時点の情報を基にしているため、新しい情報や最近の出来事には対応できません。また、情報の正確性に欠けることもあり、誤った回答を生成するリスクがあります。
ハルシネーションとは?
ハルシネーションとは、AIが実際には存在しない情報を生成する現象のことです。大規模言語モデルは、入力された情報に基づいて関連性のあるテキストを生成しますが、時には全く根拠のない情報を生成することがあります。これがハルシネーションです。これは、モデルが回答を生成する過程で起こる予測の誤りから生じます。
RAGの仕組み
RAGは下記の段階に分けられます
- 検索
- 生成
検索はさまざまな手法があります。
ベクトル検索(Vector Search)
ベクトル検索は RAG で最も一般的に使用される手法の一つです。この方法では、文書やクエリをベクトル(数値の配列)に変換し、意味的な類似性を計算して関連情報を検索します
仮説的ドキュメント埋め込み (Hypothetical Document Embeddings)
この手法では、クエリから「仮想的なドキュメント」を生成し、そのドキュメントの埋め込みを利用して意味的検索を行います。これにより、ニュアンスやコンテキストが重要なクエリに対して効果的な検索が可能になります
書き換え-検索-読み込み (Rewrite-Retrieve-Read)
クエリを最適な形に書き換えてから検索を行い、その結果をもとにさらに情報を読み込む手法です。これにより、あいまいなクエリに対してもより正確な情報を提供できます
RAG-フュージョン
RAG-フュージョンと呼ばれるこの手法では、複数のクエリを生成してそれに基づき文書を検索し、得られた文書を相互ランク融合を用いて再ランク付けします