(プレビュー) Amazon S3 Vectors から OpenSearch Serverless へのインポート - Amazon OpenSearch Service

(プレビュー) Amazon S3 Vectors から OpenSearch Serverless へのインポート

重要

Amazon S3 Vectors と OpenSearch Service の統合はプレビューリリース中であり、変更される可能性があります。

Amazon S3 Vectors は、ベクトルの保存とクエリをネイティブにサポートする史上初のクラウドオブジェクトストアを提供します。S3 Vectors は、意味的意味や類似性に基づいてクエリを実行できる、費用対効果に優れ、伸縮性自在で耐久性の高いベクトルストレージを提供します。1 秒未満のクエリ応答時間を提供し、ベクトルのアップロード、保存、クエリのコストを最大 90% 削減します。

Amazon S3 Vectors には S3 ベクトルバケットが導入されています。これを使用して、インフラストラクチャをプロビジョニングすることなくベクトルデータを保存、アクセス、クエリできます。ベクトルバケット内では、ベクトルデータをベクトルインデックス内で整理できます。ベクトルバケットは複数のベクトルインデックスを持つことができ、各ベクトルインデックスは数百万のベクトルを保持できます。詳細については、「Amazon S3 ユーザーガイド」の「Amazon S3 Vectors とベクトルバケットの操作」を参照してください。

各ベクトルは以下で構成されます:

  • 一意のキー

  • ベクトルデータ

  • JSON 形式のオプションのメタデータ

ベクトルインデックスは、類似性検索操作のためにユークリッド距離関数とコサイン距離関数をサポートします。

注記

ベクターバケットの主な利点は、膨大なデータセットを極めて低コストで保存できると同時に、ベクター演算のための直接的な API アクセスを提供できることです。

Amazon S3 ベクトルバケットの作成方法などの詳細については、「Amazon S3 ユーザーガイド」の「Amazon S3 Vectors とベクトルバケットの操作」を参照してください。このトピックで説明されている以外の OpenSearch Service との統合の詳細については、「OpenSearch Service での S3 Vectors の使用」を参照してください。

Amazon OpenSearch Service で S3 Vectors を使用すると、クエリの頻度が低い場合にベクトルストレージのコストを削減し、需要の増加に応じてそれらのデータセットを OpenSearch にすばやく移動したり、検索機能を強化したりできます。

OpenSearch Service は Amazon S3 Vectors と統合され、Amazon S3 ベクトルバケットが単独で提供する以上のパフォーマンスと機能を提供します。必要に応じて、この統合を検討してください。

  • より高いクエリスループット

  • 1 秒未満の検索レイテンシー

  • 集計などの高度な分析機能

  • テキストデータとベクトルデータを組み合わせたハイブリッド検索

この統合は、複数のアプリケーションが異なるパフォーマンス要件で同じベクトルデータを使用する場合に特に有用です。一部のアプリケーションはコストの影響を受けやすいユースケースのために Amazon S3 ベクトルバケットと直接やり取りでき、他のアプリケーションはパフォーマンスが重要なオペレーションのために OpenSearch 統合を活用できます。

統合アーキテクチャ

この統合では、Amazon OpenSearchAmazon S3 ベクトルインデックスと Amazon OpenSearch Serverless ベクトルコレクション間のデータパイプラインとして Amazon OpenSearch Ingestion (OSI) を使用します。OpenSearch Ingestion は、指定したベクトルインデックスからベクトルデータを自動的にエクスポートし、OpenSearch Serverless ベクトルコレクションに取り込んで、高性能な検索操作を行います。

注記

エクスポート後も、データは S3 ベクトルインデックスに残ります。データのコピーは 2 つあります。

各ベクトルインデックスは、OpenSearch Service コレクション内の対応するインデックスにマッピングされます。統合:

  • ベクトルディメンションを保持します

  • メタデータを保持します

  • OpenSearch のベクトル検索機能のデータ構造を最適化します

設定後、OpenSearch Ingestion は Amazon S3 ListVectors API を使用して、指定されたベクトルインデックスからベクトルを消費することでデータエクスポートプロセスを開始します。このサービスはベクトルを並行して処理し、OpenSearch Ingestion と Amazon OpenSearch Serverless の両方のスケーリング制限を尊重しながら取り込み速度を最適化します。

取り込み中、サービスは以下を行います。

  • OpenSearch Service の想定形式と一致するようにベクトルデータを変換します

  • ベクトル値、メタデータ、距離メトリクスなどの重要な情報を保持します

  • インテリジェントな再試行メカニズムを通じて障害シナリオを処理します

  • 後で分析するためのデッドレターキューとして使用される Amazon S3 バケットに問題のあるレコードを配置します

統合は、ベクトルディメンション、データセットサイズ、および設定されたスケーリング制限に応じてパフォーマンスで、大規模なデータセットを効率的に処理します。OSI はパイプラインあたり最大 16 人のワーカーをスケールアップでき、OpenSearch Serverless は取り込みの需要に基づいて容量を自動的に調整します。デフォルトでは、OpenSearch は maxSearch OpenSearch Serverless 側の OpenSearch Computational Unit (OCU) を 100 に増やします。

注記

統合では、以下を通じてコスト効率が優先されます。

  • エクスポート完了後の自動パイプラインシャットダウン

  • OpenSearch Serverless コレクションのスケーリング

  • 従量課金方式のリソースモデル

必要な IAM 許可

統合には、サービス間の安全な通信を可能にするための IAM アクセス許可の慎重な設定が必要です。OpenSearch Ingestion には、Amazon S3 ベクトルインデックスからの読み取り、OpenSearch Service ベクトルコレクションへの書き込み、および関連するセキュリティポリシーの管理を行うためのアクセス許可が必要です。

このトピックの後半の手順を使用して統合を有効にすると、アクセス許可管理に次のいずれかのオプションを選択できます。

  • 必要なアクセス許可を持つサービスロールを自動的に作成することをシステムに許可する

  • 要件を満たす既存のロールを提供します

自動的に作成されたロールには、以下のポリシーが含まれます:

  • Amazon S3 ベクトルインデックス API へのアクセス

  • OpenSearch Service コレクションの操作の管理

  • 失敗した取り込み試行のデッドレターキューオペレーションの処理

既存のロールを指定する場合は、ロールに次の IAM アクセス許可があることを確認します。

(必須): OpenSearch Ingestion と OpenSearch Serverless 間のデータパイプライン権限

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "allowAPIs", "Effect": "Allow", "Action": [ "aoss:APIAccessAll", "aoss:BatchGetCollection" ], "Resource": [ "arn:aws:aoss:*:111122223333:collection/collection-id" ] }, { "Sid": "allowSecurityPolicy", "Effect": "Allow", "Action": [ "aoss:CreateSecurityPolicy", "aoss:UpdateSecurityPolicy", "aoss:GetSecurityPolicy" ], "Resource": "*", "Condition":{ "StringLike":{ "aoss:collection": [ "collection-name" ] }, "StringEquals": { "aws:ResourceAccount": [ "111122223333" ] } } } ] }

(必須): OpenSearch Ingestion と Amazon S3 デッドレターキュー間のデータインジェスト権限

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "s3Access", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket/*" ] } ] }

(必須): OpenSearch Ingestion と Amazon S3 Vectors 間のデータインジェスト権限

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowS3VectorIndexAccess", "Effect": "Allow", "Action": [ "s3vectors:ListVectors", "s3vectors:GetVectors" ], "Resource": [ "arn:aws:s3vectors:us-east-1:111122223333:bucket/bucket-name/index/index-name" ] } ] }

(AWS KMS 暗号化が有効になっている場合に必須): OpenSearch Ingestion と Amazon S3 Vectors 間の通信のための復号権限

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "allowS3VectorDecryptionOfCustomManagedKey", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3vectors.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:s3vectors:arn": "arn:aws:s3vectors:us-east-1:111122223333:bucket/example-bucket" } } } ] }

Amazon S3 Vectors と OpenSearch の統合を設定する

次の手順を使用して、Amazon S3 Vectors と OpenSearch Serverless の統合を設定します。

注記

[ベクトルバケット] ページで [OpenSearch へエクスポート] オプションを選択して Amazon S3 コンソールから統合を設定するプロセスを開始した場合、手順に記載されているように、次の手順の一部のステップは適用されません。

Amazon S3 Vectors と OpenSearch Serverless の統合を設定するには
  1. Amazon OpenSearch Service コンソールで、[S3 ベクトルインデックスを OpenSearch ベクトルエンジンにインポート] ページを開きます。Amazon S3 コンソールで [OpenSearch へエクスポート] をクリックすると、ページが自動的に表示されます。OpenSearch コンソールで開始する場合は、左側のナビゲーションで [統合] を選択し、[S3 ベクトルインデックスのインポート] を選択します。

  2. [ソース] セクションで、Amazon S3 コンソールでを開始した場合は、ベクトルインデックスの名前とその Amazon リソースネーム (ARN) が既に指定されていることを確認します。OpenSearch コンソールで開始した場合は、[S3 ベクトルインデックス ARN] フィールドにインデックス ARN を入力します。

  3. [サービスアクセス] セクションでオプションを選択します。既存のロールを選択する場合は、「必要な IAM 許可」の説明に従って、統合に必要なすべてのアクセス許可があることを確認します。

  4. (オプション)追加設定 を展開します。[冗長性を有効にする (アクティブレプリカ)] には、本番環境ではこのオプションを選択したままにすることを推奨します。最初のコレクションを作成すると、OpenSearch Serverless は 2 OCU (1 OCU はインデックス作成用、もう 1 OCU は検索用) をインスタンス化します。高可用性を確保するために、他のアベイラビリティーゾーンでスタンバイノードのセットも起動します。開発とテストの目的で、コレクションの [冗長性を有効化] 設定を無効にすることができます。これにより、2 つのスタンバイレプリカが排除され、2 つの OCU のみがインスタンス化されます。デフォルトでは、冗長アクティブレプリカが有効になっています。これは、アカウントの最初のコレクションのために合計で 4 つの OCU がインスタンス化されることを意味します。

    [Amazon OpenSearch Serverless ベクトルのカスタマーマネージド AWS KMS キーを追加] で、カスタマーマネージドキーを使用してベクトルコレクションのデータを暗号化するには、このオプションを選択します。デフォルトでは、OpenSearch は AWS マネージドキー を使用します。

  5. Amazon S3 コンソールで [OpenSearch へエクスポート] オプションをクリックしてこのプロセスを開始した場合、[エクスポートの詳細] セクションに、OpenSearch が次に実行するステップが一覧表示されます。準備ができたら、[エクスポート] を選択します。

    OpenSearch Service コンソールでこのプロセスを開始した場合、[インポートの詳細] セクションに、OpenSearch が次に実行するステップが一覧表示されます。準備が完了したら、[インポート] を選択します。

    OpenSearch は履歴ページを開き、OpenSearch Serverless インデックスへの Amazon S3 ベクトルインデックスのすべてのエクスポート/インポートを表示します。

取り込みが正常に完了すると、OSI は不要なコストを回避するためにパイプラインを自動的に停止します。取り込まれたデータは OpenSearch に保持されます。CloudWatch メトリクスを使用して統合の進行状況をモニタリングし、トラブルシューティングのために詳細ログにアクセスできます。

OpenSearch コレクションはアクティブのままで、最初の取り込みが完了した後もクエリで使用できます。以下を実行できます:

  • 類似度検索

  • 集計

  • 分析運用