取得拡張生成とインデックス
この記事では、生成 AI での取得拡張生成 (RAG) およびインデックスの重要性と必要性について説明します。
RAG とは
最初に、いくつかの基本について説明します。 ChatGPT などの大規模言語モデル (LLM) は、それらがトレーニングされた時点で使用可能だったパブリック インターネット データでトレーニングされます。 LLM は、トレーニングで使用されたデータに関連する質問に回答することができます。 このパブリック データは、すべてのニーズを満たすには十分ではない可能性があります。 プライベート データに基づいた回答が得られる質問を行いたい場合があります。 または、パブリック データが古くなっているだけの場合もあります。 この問題のソリューションが、取得拡張生成 (RAG) です。これは、LLM を使用して独自のデータで回答を生成する AI の中で使用されるパターンです。
RAG のしくみ
RAG は、LLM でユーザーのデータを使用して、そのデータに固有の回答を生成するパターンです。 ユーザーが質問すると、ユーザー入力に基づいてデータ ストアが検索されます。 その後、ユーザーの質問は、一致する結果と組み合わされ、プロンプト (AI または機械学習モデルへの明示的な指示) を使用して LLM に送信され、目的の回答が生成されます。 これは、次のような図で示すことができます。
インデックスとは、およびそれが必要な理由
RAG では、データを使用して、ユーザーの質問に対する回答が生成されます。 RAG が適切に機能するためには、簡単かつコスト効率の高い方法でデータを検索して LLM に送信する方法を見つける必要があります。 これは、インデックスを使用して実現されます。 インデックスは、データを効率的に検索できるデータ ストアです。 これは、RAG では非常に役立ちます。 ベクトル (埋め込みモデルを使用して数値シーケンスに変換されたテキストまたはデータ) を作成すると、インデックスを LLM 用に最適化できます。 通常、優れたインデックスには、キーワード検索、セマンティック検索、ベクトル検索などの効率的な検索機能があります。 この最適化された RAG パターンは、次のような図で示すことができます。
Azure AI では、RAG パターンで使用するインデックス アセットが提供されます。 インデックス アセットには、インデックスの格納場所、インデックスへのアクセス方法、インデックスを検索できるモード、インデックスにベクトルがあるかどうか、ベクトルに使用される埋め込みモデルなどの重要な情報が含まれています。Azure AI インデックスでは、プライマリかつ優先されるインデックス ストアとして Azure AI Search が使用されます。 Azure AI Search は、検索インデックスに格納されているベクトル データとテキスト データに対する情報取得をサポートする Azure リソースです。