RAG(Retrieve Augmented Generation)は、権威ある知識ベースからの情報に基づいて大規模言語モデル(LLM)の出力を最適化する技術です。この技法は、応答を生成する際に特定のドメインや組織の内部知識ベースを参照するようにLLMの機能を拡張することで、出力の品質を向上させ、さまざまなコンテキストにおける関連性、正確性、有用性を保証します。
大規模言語モデル(LLM)の最適化
大規模言語モデル(LLM)は通常、数十億のパラメータを持つ大規模データセットで学習され、質問への回答、言語翻訳、文章完成などのタスクの生出力を生成する。しかし、LLMの学習データは静的であり、知識の更新に期限があるため、回答が不足している場合に誤った情報を提供したり、特定の最新情報へのアクセスを必要とするクエリに応答する場合に、古い回答やあいまいな回答を出力したりする可能性がある。さらに、LLMの回答が権威のないソースから得られたり、用語の混同(同じ用語が異なるデータ・ソースで異なる内容を指す場合がある)により誤った回答を出力したりする可能性もある。
RAGのソリューション
RAGは、事前に定義された権威ある知識ソースから関連情報を検索するようLLMに指示することで、上記の問題に対処する。ベースモデルは通常オフラインで学習され、学習終了後に生成されたデータにはアクセスできない。LLMは通常、非常に一般的なドメインコーパスで学習されるため、ドメイン固有のタスクを処理する効率は低い。RAGモデルは、ベースモデルのデータ以外のデータから情報を取得し、関連する取得データをコンテキストに追加することでキューを増強することができる。
RAGモデル・アーキテクチャの詳細については、以下を参照のこと。知識集約的なNLPタスクの検索エンハンスド生成。.
検索拡張世代(RAG)の利点
RAGを使用することで、様々な外部データソース(ドキュメントリポジトリ、データベース、APIなど)からデータを取得し、キューを補強することができる。このプロセスは、文書とユーザークエリを関連検索のために互換性のあるフォーマットに変換することから始まる。RAGモデルの主なタスクは、ユーザークエリの埋め込みを知識ベース内のベクトルと比較することである。
その後、強化されたプロンプトはベースモデルに送信され、元のユーザープロンプトが知識ベース内の類似文書から関連するコンテキストと組み合わされます。また、ナレッジベースと関連する埋め込み表現を非同期に更新して、RAGモデルの効率と精度をさらに向上させることもできます。
RAGの課題
RAGは、大規模な言語モデルを最適化する方法を提供し、情報検索や質問応答における実際の課題に徹底的に取り組むものであるが、依然として多くの問題や課題に直面している。
1.データソースの正確性と信頼性
検索補強生成モデルでは、データソースの正確さと更新が重要である。データソースに不正確な情報、古い情報、または検証されていない情報が含まれている場合、RAGによって生成される回答が不正確または低品質になる可能性がある。したがって、データソースの品質を確保することは、継続的に直面し解決しなければならない課題である。
2.検索効率
RAGは大規模なデータセットに対して効率的に実行できるが、知識ベースが大規模になったり、クエリが複雑になったりすると、効率性の問題に直面することがある。大量のデータから関連情報を見つけることは、時間と計算量のかかる作業であるため、検索アルゴリズムの効率を最適化することもRAGの課題である。
3.一般化能力
RAGモデルは、特定のデータやクエリに特に敏感である可能性があり、いくつかの問題は、賢明で効果的な戦略を採用することがより困難に見えるかもしれません。様々なクエリやデータソースを扱うモデルをトレーニングする際に対処しなければならない問題や課題は非常に複雑である。
4.異種データ処理
実際には、データは必ずしも文書の形で存在するとは限らず、画像、音声、動画など他の形で存在することもある。より広範な知識ソース間の検索や相互参照のために、RAGがこれらの形式のデータを扱えるようにすることも大きな課題である。
上記の課題に対処するには、RAGのパワーとその潜在的な問題点のバランスを見つける必要がある。
詳しくは以下のサンプルノートブックをご覧ください:
重要な参考文献:https://docs.aws.amazon.com/pdfs/sagemaker/latest/dg/sagemaker-dg.pdf#jumpstart-foundation-models-customize-rag