最近よくきくRAGがなんなのかよくわかっていないので調べたメモ
最初聞いた時はこっちを思い浮かべたがググっても全く出てこないので取り残されている
目次
RAGとは
生成AIの文脈での「RAG」は、Retrieval-Augmented Generation(検索強化生成)を指します。これは、生成AIモデルが外部データベースや知識ベースから情報を「検索」し、その情報を基に「生成」するアプローチです。この手法を使うことで、モデルがより正確かつ最新の情報を活用した文章生成が可能になります。
RAGの仕組み
- 検索フェーズ(Retrieval)
- モデルは、ユーザーの質問や要求に基づき、関連性のある文書や情報をデータベースや知識ベースから検索します。これにより、モデルは外部の豊富な情報源にアクセスし、単なる事前訓練された知識以上の内容を得られるようになります。
- 生成フェーズ(Generation)
- 検索された情報を活用し、それを基にユーザーの質問に答えたり、新しいテキストを生成します。生成されたテキストは、検索したデータを考慮しているため、より正確で最新の情報に基づくものになります。
RAGの特徴
- 検索(Retrieval)と生成(Generation)の統合
- RAGは、外部の知識ベースやデータベースから情報を「検索」し、その結果を基にテキストを「生成」するプロセスを組み合わせています。このため、モデルが自身の訓練データにない新しい情報にもアクセスでき、最新の知識を活用してテキスト生成を行えます。
- 高精度な生成
- 従来の生成モデル(GPTなど)は事前に学習した情報だけに基づいて回答しますが、RAGでは検索された外部データを基にテキストを生成するため、より具体的で正確な情報に基づいた応答を生成できることが特徴です。特に、最新の情報や専門的な知識が必要な場合に有効です。
- 柔軟性
- RAGは、複数の情報源にアクセスしてデータを取得できるため、異なるドメインやトピックに柔軟に対応可能です。例えば、技術文書、ニュース、製品情報など、さまざまなタイプのデータベースを利用することで、多様なユーザーのニーズに応じた回答を提供できます。
- 動的な知識利用
- RAGは、事前に学習した静的な知識に加えて、検索結果を動的に活用します。これにより、モデルが常に最新の情報を利用でき、時間の経過とともに古くなる情報に依存しない生成が可能です。特に変化の激しい領域(技術、ニュースなど)で有効です。
- パフォーマンスとリアルタイム性
- 多様な情報源の利用
- RAGは、事前に用意された特定の知識ベースやデータベースだけでなく、ウェブ全体の情報、カスタマイズされた企業内データ、または特定の専門的データベースを利用することも可能です。これにより、利用するデータの幅広さが大きな強みとなります。
- モデルのサイズ依存性の軽減
- 従来の大規模生成モデルは、巨大な訓練データを必要とするため、トレーニングコストが高い傾向があります。しかし、RAGでは必要に応じて外部データベースから情報を検索してくるため、モデル自体が極端に大きくなくても十分に高性能な結果を生成できます。
メリデメ
RAGの利点
- 正確性の向上
- モデルの事前訓練データだけに依存せず、外部の最新情報にアクセスすることで、事実誤認のリスクを軽減できます。
- 柔軟性
- 様々なデータソースから情報を取得できるため、特定分野の質問にも対応しやすくなります。
- 知識の最新化
- 生成AIは通常、訓練時点までの情報しか持ちませんが、RAGを使うことで、リアルタイムに最新の情報を反映した生成が可能です。
RAGの欠点
- 検索精度に依存
- RAGは検索された情報に基づいてテキストを生成しますが、検索フェーズで不正確または不適切な情報が選ばれた場合、生成された結果も正確性を欠く可能性があります。つまり、検索アルゴリズムの性能や、データベース内の情報の質に強く依存します。
- 速度の遅さ
- 外部データベースへの検索や取得プロセスが追加されるため、純粋な生成モデルよりも応答速度が遅くなることがあります。検索に時間がかかると、特にリアルタイム性が求められるアプリケーションではパフォーマンスの問題が生じることがあります。
- 情報の信頼性
- 検索した情報の信頼性が問題になることがあります。RAGモデルが使用する外部データベースや知識ベースの情報が正確であるとは限りません。もし不正確な情報を取得した場合、生成されるテキストも誤ったものになる可能性があります。特に、外部ソースに誤情報や古い情報が含まれている場合にはリスクが高くなります。
- メモリと計算資源の負荷
- RAGモデルは、生成フェーズと検索フェーズの両方を実行する必要があるため、通常の生成モデルよりもメモリや計算資源を多く必要とします。特に大規模なデータベースに対する検索と複雑な生成を行う場合、計算コストが高くなりがちです。
- データソースの依存
- RAGモデルは外部データベースに依存しているため、そのデータソースが利用できなくなる、更新されない、または内容が不十分な場合には、生成の質が著しく低下する可能性があります。データソースの選定や管理が適切に行われていないと、モデルの性能に悪影響を及ぼします。
実際の応用
- チャットボット
- ユーザーの質問に対して、外部データベースから情報を検索し、その情報を基に回答を生成する。
- ドキュメント作成支援
- 例えば技術文書やリサーチレポートの作成時、関連する文献や資料を検索し、その内容を反映した文章生成が行える。
RAGの実装
ただ動かすだけならサッとできそう。精度みたいなのを気にした途端に難しくなりそうという感じ。
Amazon Bedrock
AWS が提供する完全マネージド型の生成AIサービスです。開発者が簡単に大規模な生成AIモデルを利用してアプリケーションを構築、トレーニング、デプロイできるように設計されています。特に、自然言語処理(NLP)、テキスト生成、画像生成などの生成AIモデルを活用するためのプラットフォームです。
ファインチューニングとの違い
つらつらと書こうと思っていたがこの例えばすごくしっくりきた。マニュアルを渡しただけの人とOJTとかで教育した人。どっちが良いかはトレードオフが多くあるようでまだまだ研究段階らしい。
その他の用語とか
- LLM
- LangChain
- Embedding
- ベクトルデータベース
- データを数値ベクトルとして保存し、そのベクトル間の距離や類似性に基づいてデータを効率的に検索・管理するためのデータベース
- 学習
- ニューラルネットワーク
参考
- Embedding(エンベディング)の概念を理解してみた | ファブリカコミュニケーションズ
- RAGの基本と最新技術動向 - Speaker Deck
- 実例で紹介するRAG導入時の知見と精度向上の勘所 - Speaker Deck
- RAG(Retrieval Augmented Generation)の基本 - Speaker Deck
- RAGのサービスをリリースして1年3ヶ月が経ちました - Speaker Deck
- 🦜️🔗 LangChainとRAG: Embeddingで外部データを利用する | CyberAgent Developers Blog
- ⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について - Speaker Deck