View a markdown version of this page

LLMs と RAG について - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

LLMs と RAG について

ソースドキュメントの品質を向上させることで RAG レスポンスの品質がどのように向上するかを理解するには、LLM の内部動作を理解する必要があります。LLMs の真の能力は、自己注意メカニズムとトランスフォーマーアーキテクチャを使用する能力にあります。これらの高度な手法により、モデルはテキスト内の位置や距離に関係なく、入力シーケンスのさまざまな部分を効果的に処理して関連付けることができます。この機能は、長期的な依存関係やコンテキストの理解に苦労することがよくある従来の言語モデルとはまったく対照的です。さらに、LLMsは前例のない規模でトレーニングされます。最大のモデルの中には、何兆ものパラメータで構成されており、さまざまなソースからテラバイトのテキストデータを取り込みます。この大規模なスケールにより、LLMs言語の深い理解を深め、以前は AI システムにとって困難だった微妙なニュアンス、イディオム、コンテキストキューをキャプチャできます。その結果、コヒーレントで流暢なテキストを生成し、質問への回答、テキスト要約、コード生成などのタスクで優れた機能を示すことができるモデルのクラスが得られます。

これらのモデルを使用するには、Amazon Bedrock などのサービスを利用できます。Amazon Bedrock では、Anthropic、Cohere、Meta など、Amazon やサードパーティープロバイダーのさまざまな基盤モデルにアクセスできます。Amazon Bedrock を使用して、state-of-the-artモデルを試したり、カスタマイズして微調整したり、単一の API を通じて生成 AI を活用したソリューションに組み込むことができます。

LLMsパターンのキャプチャとコヒーレントテキストの生成に優れていますが、多くの場合、up-to-dateまたは特殊な情報にアクセスできません。RAG は、LLMs の生成能力と、マテリアライズド LLM プロンプトの一部として外部ソースからの関連情報にアクセスして組み込むことができる取り出しコンポーネントを組み合わせます。外部ソースの例としては、Amazon Bedrock のナレッジベースAmazon Kendra などのインテリジェント検索システム、Amazon OpenSearch Service などのベクトルデータベースなどがあります。

RAG ベースのアプリケーションがユーザーのクエリに応答する方法のワークフロー。

この図では、次のワークフローについて説明します。

  1. ユーザーはクエリを RAG アプリケーションに送信します。

  2. RAG アプリケーションは、ドキュメント、データ、メディアなどのナレッジソースを含むベクトルデータベースをクエリします。

  3. RAG アプリケーションは、クエリと保存されたドキュメントの間のセマンティック類似性に基づいて、ベクトルデータベースから関連情報を取得します。

  4. RAG アプリケーションは、元のプロンプトを取得したコンテキストで拡張し、LLM エンドポイントに送信します。

  5. LLM エンドポイントはレスポンスを生成し、RAG アプリケーションに返します。

  6. RAG アプリケーションは、生成されたレスポンスをユーザーに返します。

RAG は、その中核として 2 段階のプロセスを採用しています。最初のステージでは、取得モデルは、入力クエリに基づいて関連するドキュメントまたはパッセージを識別して取得します。この取り出しモデルは、従来の情報取り出しシステム、高密度取り出しモデル、またはその両方の組み合わせです。2 番目のステージでは、取得した情報と元のクエリは、完全にマテリアライズされたプロンプトテンプレートとして LLM にフィードされます。LLMs、リトリーバーコンポーネントによって配信されるソースコンテンツの品質に大きく依存します。自己注意メカニズムを適用して、取得したコンテンツがタスクにどのように関連しているかを数学的にエンコードします。次に、LLM はクエリと取得された情報の両方に基づいてレスポンスを生成します。RAG では、取得したソースドキュメントの品質を制御することは、タスクの LLM の内部表現を改善する直接的な手段を表します。RAG は、LLM のトレーニングデータを関連する外部データで効果的に補強します。このアプローチにより、RAG は LLMs と取り出しシステムの両方の長所を活用できるため、現在および専門知識を組み込んだ、より正確で情報に基づいたレスポンスを生成できます。

ベクトルと埋め込み

ベクトルと埋め込みは、機械学習と自然言語処理の基本概念です。ベクトルは、大きさと方向の両方を持つ量を表す数学オブジェクトです。自然言語処理 (NLP) では、単語、文、またはドキュメントは、多くの場合、高次元ベクトルスペースのベクトルとして表されます。一方、埋め込みは、ベクトル間の関係が意味的または構文的な類似性をキャプチャする、低次元ベクトル空間内の単語やドキュメントなどのオブジェクトを表す方法です。例えば、単語埋め込みでは、同様の意味を持つ単語が同様のベクトル表現を持つことができます。これにより、アルゴリズムは言語をより効果的に理解して処理できます。

ベクトルデータベース

生成 AI では、ベクトルデータベースは、ドキュメント、クエリ、またはその他のオブジェクトのベクトル表現を保存および管理するためのデータベースです。ベクトルを効率的に保存および取得するように設計されています。これにより、セマンティック検索や類似度マッチングなどの高速でスケーラブルなオペレーションがサポートされます。ベクトルデータベースは、階層ナビゲーション可能スモールワールド (HNSW) グラフや K 最近傍 (KNN) アルゴリズムなどの特殊なデータ構造を使用してベクトルをインデックス化します。これらのデータ構造により、最近傍検索が高速になり、データベース内で同様のベクトルをすばやく見つけることができます。

セマンティック検索は、キーワードを単に一致させるのではなく、クエリのインテントとコンテキストを理解することで、検索結果の関連性を向上させる手法です。技術的な用語では、セマンティック検索では、クエリのベクトル表現とデータベース内のドキュメントを比較して、最も関連性の高い一致を見つけます。セマンティック検索には、次のようなさまざまな取り出し戦略を使用できます。

  • HNSW – 最も近い近傍を効率的に検索できるようにベクトルを整理するグラフベースのデータ構造。

  • KNN – コサイン類似度などの距離メトリクスに基づいて、クエリベクトルに最も近い K ベクトルを検索するアルゴリズム。

  • コサイン類似性 – ゼロ以外の 2 つのベクトル間の角度のコサインを測定する類似性の尺度。多くの場合、セマンティック検索で使用され、高次元空間内のベクトルの方向を比較します。

  • Locality-sensitive hashing (LSH) – 同じまたは近くのバケットに類似したベクトルを高い確率でハッシュする手法。これにより、近似近傍検索が可能になり、高次元空間での正確な検索よりも高速になります。