Amazon Bedrock ナレッジベースの仕組み
Amazon Bedrock のナレッジベースは、検索拡張生成 (RAG) の活用に役立ちます。RAG は、データストアから情報を取得して、大規模言語モデル (LLM) によって生成されるレスポンスを拡張する一般的な手法です。データソースとベクトルストアを使用してナレッジベースを設定すると、アプリケーションはナレッジベースにクエリを送信し、その回答として、ソースからの直接的な引用、またはクエリ結果から生成された自然なレスポンスのいずれかを返すことができます。
ナレッジベースを使用すると、ナレッジベースへのクエリから得られるコンテキストによって強化されたアプリケーションを構築できます。パイプライン構築の面倒な作業から解放され、すぐに使える RAG ソリューションを提供することでアプリケーションの構築時間を短縮できるため、市場投入までの時間を短縮できます。また、ナレッジベースを追加することで、プライベートデータを活用できるようにモデルを継続的にトレーニングする必要がなくなるため、費用対効果も向上します。
以下の図は、RAG がどのように実行されるかを概略的に示しています。ナレッジベースは、このプロセスのいくつかのステップを自動化することで、RAG の設定と実装を簡素化します。
データを前処理する
プライベートデータを効果的に検索できるようにするには、まずデータをテキストに変換し、管理しやすいかたまりに分割するのが一般的です。このかたまり (チャンク) は埋め込みに変換され、元のドキュメントへのマッピングを維持したままベクトルインデックスに書き込まれます。これらの埋め込みは、クエリとデータソースからのテキストの意味上の類似性を判断するために使用されます。以下の図は、ベクトルデータベース用のデータの前処理を示しています。
ランタイムの実行
実行時には、埋め込みモデルを使用してユーザーのクエリをベクトルに変換します。次に、ドキュメントベクトルとユーザークエリベクトルを比較して、ベクトルインデックスをクエリしてユーザークエリの検索対象に意味的に類似したチャンクを検索します。最後のステップでは、ベクトルインデックスから取得したチャンクの追加コンテキストがユーザープロンプトに追加されます。その後、追加のコンテキストと共にプロンプトがモデルに送信され、ユーザーへのレスポンスが生成されます。以下の画像は、RAG が実行時にどのように動作してユーザークエリへのレスポンスを補強するかを示しています。