Amazon Bedrock ナレッジベースの仕組み - Amazon Bedrock

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

Amazon Bedrock ナレッジベースの仕組み

Amazon Bedrock のナレッジベースは、検索拡張生成 (RAG) の活用に役立ちます。RAG は、データストアから情報を取得して、大規模言語モデル (LLM) によって生成されるレスポンスを拡張する一般的な手法です。データソースでナレッジベースを設定すると、アプリケーションはナレッジベースにクエリを実行して情報を返し、ソースからの直接引用符またはクエリ結果から生成された自然なレスポンスを使用してクエリに回答できます。

Amazon Bedrock ナレッジベースを使用すると、ナレッジベースのクエリから受信したコンテキストによって強化されたアプリケーションを構築できます。パイプライン構築の面倒な作業から解放され、すぐに使える RAG ソリューションを提供することでアプリケーションの構築時間を短縮できるため、市場投入までの時間を短縮できます。また、ナレッジベースを追加することで、プライベートデータを活用できるようにモデルを継続的にトレーニングする必要がなくなるため、費用対効果も向上します。

以下の図は、RAG がどのように実行されるかを概略的に示しています。ナレッジベースは、このプロセスのいくつかのステップを自動化することで、RAG の設定と実装を簡素化します。

非構造化データの事前処理

非構造化プライベートデータ (構造化データストアに存在しないデータ) から効果的に取得できるようにするには、データをテキストに変換して管理可能な部分に分割するのが一般的な方法です。このかたまり (チャンク) は埋め込みに変換され、元のドキュメントへのマッピングを維持したままベクトルインデックスに書き込まれます。これらの埋め込みは、クエリとデータソースからのテキストの意味上の類似性を判断するために使用されます。以下の図は、ベクトルデータベース用のデータの前処理を示しています。

検索拡張生成のためにデータを前処理する

ベクトル埋め込みは、テキストの各チャンクを表す一連の数値です。モデルは、各テキストチャンクをベクトルと呼ばれる一連の数値に変換し、テキストを数学的に比較できるようにします。これらのベクトルは、浮動小数点数 (float32) またはバイナリ数のいずれかです。Amazon Bedrock でサポートされているほとんどの埋め込みモデルは、デフォルトで浮動小数点ベクトルを使用します。ただし、一部のモデルはバイナリベクトルをサポートしています。バイナリ埋め込みモデルを選択する場合は、バイナリベクトルをサポートするモデルとベクトルストアも選択する必要があります。

ディメンションあたり 1 ビットのみを使用するバイナリベクトルは、ディメンションあたり 32 ビットを使用する浮動小数点 (float32) ベクトルほどストレージにコストがかかりません。ただし、バイナリベクトルは、テキストの表現において浮動小数点ベクトルほど正確ではありません。

次の例は、3 つの表現のテキストを示しています。

表記
[テキスト] 「Amazon Bedrock は、主要な AI 企業と Amazon の高性能な基盤モデルを使用しています。」
浮動小数点ベクトル [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...]
バイナリベクトル [1,1,0,0,0, ...]

ランタイムの実行

実行時には、埋め込みモデルを使用してユーザーのクエリをベクトルに変換します。次に、ドキュメントベクトルとユーザークエリベクトルを比較して、ベクトルインデックスをクエリしてユーザークエリの検索対象に意味的に類似したチャンクを検索します。最後のステップでは、ベクトルインデックスから取得したチャンクの追加コンテキストがユーザープロンプトに追加されます。その後、追加のコンテキストと共にプロンプトがモデルに送信され、ユーザーへのレスポンスが生成されます。以下の画像は、RAG が実行時にどのように動作してユーザークエリへのレスポンスを補強するかを示しています。

実行時の検索拡張生成

データをナレッジベースに変換する方法、設定後にナレッジベースをクエリする方法、および取り込み中にデータソースに適用できるカスタマイズの詳細については、以下のトピックを参照してください。