HAQM Web Services ブログ
HAQM Titan Text Embeddings V2、HAQM OpenSearch Serverless、および HAQM Bedrock Knowledge Bases における バイナリ埋め込みを使用した費用対効果の高い RAG アプリケーションの構築
本投稿は 2024 年 11 月 18 日に AWS Machine Learning Blog に投稿された Build cost-effective RAG applications with Binary Embeddings in HAQM Titan Text Embeddings V2, HAQM OpenSearch Serverless, and HAQM Bedrock Knowledge Bases を翻訳したものです。
本日、HAQM Bedrock Knowledge Bases と HAQM OpenSearch Serverless における HAQM Titan Text Embeddings V2 用のバイナリ埋め込みの提供開始を発表できることを嬉しく思います。HAQM Bedrock でのバイナリ埋め込みと OpenSearch Serverless でのバイナリベクトルストアのサポートにより、HAQM Bedrock Knowledge Bases でバイナリ埋め込みとバイナリベクトルストアを使用した Retrieval Augmented Generation (RAG) アプリケーションを構築し、メモリ使用量と全体的なコストを削減することができます。
HAQM Bedrock は、主要な AI 企業が提供する様々な高性能な 基盤モデル (foundation models – FMs) にアクセスして使用するための単一の API を提供する完全マネージド型サービスです。HAQM Bedrock は、セキュリティ、プライバシー、責任ある AI を備えた生成 AI アプリケーションを構築するための幅広い機能も提供します。HAQM Bedrock Knowledge Bases を使用することで、FM やエージェントは RAG のために企業の非公開データソースから文脈的な情報を取得することができます。RAG は、基盤モデルがより関連性が高く、正確で、カスタマイズされた応答を提供するために役立ちます。
HAQM Titan Text Embeddings モデルは、ドキュメント、段落、文章の意味的表現を生成します。HAQM Titan Text Embeddings は、テキスト本文を入力として受け取り、1,024 (デフォルト)、512、または 256 次元のベクトルを生成します。HAQM Titan Text Embeddings は、高速な検索向けの、低レイテンシを重視したエンドポイントの呼び出し (検索ステップ中での利用を推奨) と、高速なインデックス作成のための、スループットを重視したバッチジョブを通じて利用可能です。Binary Embeddings により、HAQM Titan Text Embeddings V2 は、データを各次元ごとに単一のバイナリ桁 (0 または 1) としてエンコードした、バイナリベクトルとして表現します。このバイナリ表現により、高次元のデータは、格納と計算においてより効率的な形式に変換されます。
HAQM OpenSearch Serverless は、HAQM OpenSearch Service の serverless デプロイメントオプションです。OpenSearch Serverless は、k-nearest neighbor (kNN) プラグインを使用してインタラクティブなログ分析、リアルタイムアプリケーションモニタリング、Web サイト検索、およびベクトル検索を簡単に実行できる完全マネージド型サービスです。exact および approximate nearest-neighbor アルゴリズムと、複数のストレージおよびマッチングエンジンをサポートしています。基盤となるインフラストラクチャを管理することなく、最新の機械学習 (ML) を活用した検索体験、生成 AI アプリケーション、および分析ワークロードを簡単に構築することができます。
OpenSearch Serverless kNN プラグインは、32 ビット浮動小数点ベクトル (FP32) に加えて、16 ビット (FP16) およびバイナリベクトルをサポートするようになりました。kNN ベクターフィールドタイプを binary に設定することで、HAQM Titan Text Embeddings V2 によって生成されたバイナリベクトルを低コストで保存できます。ベクトルは PUT および GET API を使用して OpenSearch Serverless に保存・検索が可能です。
この投稿では、HAQM Titan Text Embedings、HAQM Bedrock Knowledge Bases、および OpenSearch Serverless 全体にわたる新しいバイナリベクトルサポートの利点をまとめ、開始方法に関する情報を紹介します。以下の図は、HAQM Bedrock Knowledge Bases と HAQM OpenSearch Serverless を使用した概略的なアーキテクチャ図です。
OpenSearch Serverless と HAQM Bedrock Knowledge Bases において、検索品質の低下を最小限に抑えつつ、レイテンシーを短縮し、ストレージコストとメモリ要件を削減することができます。
私たちはバイナリ埋め込みを用いて、Massive Text Embedding Benchmark (MTEB) retrieval data set を実行しました。retrieval data set においては、ストレージを削減しつつ、レイテンシーを 1/25 に短縮する効果がみられました。バイナリ埋め込みは、最大精度 (float32) 埋め込みを使用した結果に対して、再ランキングありで 98.5%、再ランキングなしで 97% の正確性を維持しました。end-to-end RAG ベンチマークにおいては、HAQM Titan Text Embeddings V2 のバイナリ埋め込みは、最大精度埋め込みと比較して、再ランキングありで 99.1%、再ランキングなしで 98.6% の正確性を維持しました。お客様の環境でも、HAQM OpenSearch Serverless と HAQM Titan Text Embeddings V2 のバイナリ埋め込みを使用して、独自にベンチマークを実施することをお勧めします。
Hierarchical Navigable Small Worlds(HNSW)アルゴリズムにおいてバイナリベクトルを使用した OpenSearch Serverless のベンチマークでは、検索用の OpenSearch Computing Units (OCUs) が 50% 削減され、ユーザーのコスト削減につながることが明らかになりました。バイナリインデックスの活用により、検索時間が大幅に短縮されました。従来の検索方法は、リソースを大量に消費する可能性のある L2 距離やコサイン距離などの計算集約的な計算に依存することが多いですが、HAQM OpenSearch Serverless のバイナリインデックスは、より効率的なアプローチであるハミング距離を使用して検索を実行します。
以下のセクションでは、HAQM Titan Text Embeddings での バイナリ埋め込み、ベクトルエンジンにおけるバイナリベクトル (および FP16) と、 HAQM Bedrock Knowledge Bases での binary embedding オプションの使用方法について説明します。HAQM Bedrock Knowledge Bases の詳細については、「ナレッジベースは、HAQM Bedrock でフルマネージド型の RAG エクスペリエンスを提供するようになりました」をご覧ください。
HAQM Titan Text Embeddings V2 で Binary Embeddings を生成する
HAQM Titan Text Embeddings V2 は現在バイナリ埋め込みをサポートしており、100 以上の言語のテキストサポートを備え、異なる次元サイズ (1024、512、256) における検索性能と精度が最適化されています。デフォルトでは、HAQM Titan Text Embeddings モデルは Floating Point 32 bit (FP32) 精度で埋め込みを生成します。1024 次元の FP32 埋め込みベクトルを使用することで、より良い精度を達成できますが、検索ユースケースではストレージ要件と関連コストも増大します。
コードでバイナリ埋め込みを生成するには、HAQM Titan Text Embeddings V2 への invoke_model API リクエストに適切な embeddingTypes パラメータを追加します。
import json
import boto3
import numpy as np
rt_client = boto3.client("bedrock-runtime")
response = rt_client.invoke_model(modelId="amazon.titan-embed-text-v2:0",
body=json.dumps(
{
"inputText":"What is HAQM Bedrock?",
"embeddingTypes": ["binary","float"]
}))['body'].read()
embedding = np.array(json.loads(response)["embeddingsByType"]["binary"], dtype=np.int8)
上記のリクエストのように、バイナリ埋め込みのみ、またはバイナリと fp32 の両方の埋め込みを要求することができます。得られる埋め込みは、以下のような 1024 の要素からなるバイナリベクトルです。
array([0, 1, 1, ..., 0, 0, 0], dtype=int8)
詳細とサンプルコードについては、HAQM Titan Embeddings Text を参照してください。
Binary Vector Embeddings で HAQM Bedrock Knowledge Bases を設定する
HAQM Bedrock Knowledge Bases を使用して、1 行もコードを書かずに、HAQM Titan Text Embeddings V2 の Binary Embeddings と HAQM OpenSearch Serverless のバイナリベクトルおよび Floating Point 16 bit (FP16) を利用することができます。以下の手順に従って作業を行ってください。
- HAQM Bedrock コンソールで knowledge base を作成します。名前と説明を含む knowledge base の詳細を入力し、関連する AWS Identity and Access Management (IAM)権限を持つ新規または既存のサービスロールを作成または使用します。サービスロールの作成については、Service roles を参照してください。Choose data source で、以下のスクリーンショットのように HAQM S3 を選択します。Next を選択します。
- データソースを設定します。名前と説明を入力します。ソース S3 URI を定義します。Chunking and parsing configurations で、Default を選択します。続行するには Next を選択します。
- 埋め込みモデルを選択して knowledge base のセットアップを完了します。このチュートリアルでは、Titan Text Embedding v2 を選択します。Embeddings type で Binary vector embeddings を選択します。Vector dimensions で 1024 を選択します。Quick Create a New Vector Store を選択します。このオプションは、binary データ型をサポートする新しい HAQM OpenSearch Serverless ストアを設定します。
作成後に knowledge base の詳細を確認して、データソースの同期ステータスを監視できます。同期が完了したら、knowledge base をテストして基盤モデルの応答を確認できます。
まとめ
この投稿で説明したように、バイナリ埋め込みは HAQM Bedrock で利用可能な HAQM Titan Text Embeddings V2 モデルのオプションであり、OpenSearch Serverless のバイナリベクトルストアも利用できます。これらの機能により、HAQM Bedrock と OpenSearch Serverless のメモリとディスク需要が大幅に削減され、RAG ソリューションの OCU が少なくなります。また、パフォーマンスが向上し、レイテンシーも改善されますが、full float データ型 (FP32) を使用した場合と比較して結果の精度にある程度の影響があります。精度の低下は最小限ですが、アプリケーションに適しているかどうかを判断する必要があります。具体的な利点は、データ量、検索トラフィック、ストレージ要件などの要因によって異なりますが、この投稿で説明した例は潜在的な価値を示しています。
HAQM Open Search Serverless、HAQM Bedrock Knowledge Bases、および HAQM Titan Text Embeddings v2 でのバイナリ埋め込みサポートは、既にこれらのサービスが提供されている全ての AWS リージョンで本日から利用可能です。詳細と今後の更新については Region list をご確認ください。HAQM Knowledge Bases の詳細については、HAQM Bedrock Knowledge Bases 製品ページをご覧ください。HAQM Titan Text Embeddings の詳細については、HAQM Titan in HAQM Bedrock をご覧ください。HAQM OpenSearch Serverless の詳細については、HAQM OpenSearch Serverless 製品ページをご覧ください。価格の詳細については、HAQM Bedrock の料金 ページをご確認ください。
今すぐ HAQM Bedrock コンソールで新機能をお試しください。HAQM Bedrock に関するフィードバックは AWS re:Post または通常の AWS の連絡先を通じてフィードバックを送信してください。また、community.aws で生成 AI ビルダーコミュニティにもご参加ください。
著者について
Shreyas Subramanian はプリンシパルデータサイエンティストです。生成 AIと深層学習を用いた AWS サービスの活用による、お客様の事業課題を解決支援を行っています。大規模な最適化と ML、ML と強化学習を用いた最適化タスクの加速といった分野の経験を持っています。
Ron Widha は、HAQM Bedrock Knowledge Bases のシニアソフトウェア開発マネージャーです。簡単に拡張可能な RAG アプリケーションを構築できるよう、お客様を支援しています
Satish Nandi は、HAQM OpenSearch Service のシニアプロダクトマネージャーです。OpenSearch Serverless に注力しており、ネットワーキング、セキュリティ、AI/ML の分野で長年の経験を持っています。コンピューターサイエンスの学士号とアントレプレナーシップの MBA を取得しています。余暇は、飛行機や ハンググライダーの操縦、バイクに乗ることを楽しんでいます。
Vamshi Vijay Nakkirtha は、OpenSearch Project と HAQM OpenSearch Service に従事しているシニアソフトウェア開発マネージャーです。主な関心事は分散システムです。