(プレビュー) Amazon S3 ベクトルエンジンを使用した高度な検索機能 - Amazon OpenSearch Service

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

(プレビュー) Amazon S3 ベクトルエンジンを使用した高度な検索機能

重要

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

Amazon OpenSearch Service は、ベクトルインデックスのベクトルエンジンとして Amazon S3 を使用する機能を提供します。この機能を使用すると、低コストで 1 秒未満のベクトル検索機能を維持しながら、ベクトルデータを Amazon S3 にオフロードできます。

この機能を使用すると、OpenSearch は Amazon S3 ベクトルインデックスにベクトル埋め込みを保存し、他のドキュメントフィールドは OpenSearch クラスターのストレージに保持します。このアーキテクチャには、次の利点があります。

  • 耐久性: S3 Vectors に書き込まれたデータは S3 に保存され、11 9 秒のデータ耐久性を実現するように設計されています。

  • スケーラビリティ: クラスターストレージを消費することなく、大きなベクトルデータセットを S3 にオフロードします。

  • コスト効率: ベクトルが多いワークロードのストレージコストを最適化します。

OpenSearch には、S3 ベクトルインデックスを使用するための以下の要件があります。

  • OpenSearch バージョン 2.19 以降

  • OpenSearch Optimized インスタンス

  • OpenSearch リリースの最新のパッチバージョン

S3 ベクトルの有効化

新しいドメインを作成するとき、または既存のドメインを更新するときは、高度な機能セクションのエンジンオプションとして S3 ベクトルを有効にする を選択できます。この設定により、エンジンとして S3 Vectors を利用するときに、OpenSearch が S3 ベクトルバケットを作成できるようになります。このオプションを有効にすると、OpenSearch はドメインの S3 ベクトルを次のように設定します。

  1. ドメインで設定された AWS KMS キーに 2 つの新しい許可を作成します。

    • 復号権限を持つ S3 Vectors バックグラウンドインデックス作成ジョブの許可

    • OpenSearch がアクセスGenerateDataKey許可を持つ S3 ベクトルバケットを作成するための許可

  2. OpenSearch ドメインで使用される KMS キーを、すべてのベクトルインデックスデータの保管時の暗号化用の CMK として設定します。

S3 ベクトルエンジンを使用したインデックスの作成

ドメインを設定したら、 をインデックスマッピングのバックエンドベクトルエンジンs3vectorとして使用するフィールドを使用して、1 つ以上の k-NN インデックスを作成できます。ユースケースに基づいて、異なるエンジンタイプで異なるベクトルフィールドを設定できます。

重要

s3vector エンジンは、インデックス作成時のフィールド定義のマッピングにのみ使用できます。インデックスの作成後にs3vectorエンジンでマッピングを追加または更新することはできません。

S3 ベクトルエンジンインデックスを作成する例をいくつか示します。

例: S3 ベクトルエンジンを使用した k-NN インデックスの作成

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }

例: S3 ベクトルエンジンと FAISS エンジンの両方で k-NN インデックスを作成する

この例では、同じインデックス内で複数のベクトルエンジンを使用できるという事実を強調しています。

PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }

サポートされていない例: インデックスの作成後に S3 ベクトルエンジンを追加する

以下のアプローチはサポートされておらず、失敗します。

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }

機能の制限

インデックスでs3vectorエンジンを使用する前に、次の制限を考慮してください。

s3vector エンジンでサポートされていない機能と動作
機能 行動

インデックスSplit/Shrink/Clone

これらの APIs、 knn_vectorフィールドのs3vectorエンジンで設定されたインデックスで使用すると失敗します。

スナップショット

s3vector エンジンを使用するインデックスはスナップショットをサポートしていません。マネージドドメインの場合:

  • 自動スナップショットには、s3vectorエンジンを使用していないインデックスのみが含まれます。

  • s3vector インデックスの手動スナップショットリクエストは失敗します。

注記

スナップショットはpoint-in-timeリカバリではサポートされていませんが、s3vectorエンジンは OpenSearch Optimized インスタンスとともに 11 の耐久性を提供します。

UltraWarm 階層

s3vector エンジンで設定されたインデックスは UltraWarm 階層に移行できません。

クラスター間レプリケーション

s3vector エンジンで設定されたインデックスは、クラスター間のレプリケーションをサポートしていません。

偶発的な削除保護

s3vector エンジンを使用するインデックスではスナップショットはサポートされていないため、偶発的な削除保護は使用できません。ドメイン内の他のインデックスは復元できます。

ラジアル検索

放射状検索を使用したクエリは、s3vectorエンジンを使用するフィールドではサポートされていません。

ドキュメントのインデックス作成

S3 ベクトルエンジンでインデックスを作成したら、標準 _bulk API を使用してドキュメントを取り込むことができます。OpenSearch は、s3vectorエンジンを使用してknn_vectorフィールドのベクトルデータをリアルタイムで S3 ベクトルインデックスに自動的にオフロードします。異なるエンジンknn_vectorを使用する他のフィールドに属するデータは、OpenSearch によって独自のストレージレイヤーに保持されます。

確認済みのすべての一括リクエストについて、OpenSearch はすべてのデータ (ベクトルと非ベクトル) の耐久性を保証します。リクエストが否定的な確認を受け取った場合、その一括リクエストのドキュメントの耐久性は保証されません。このようなリクエストは再試行する必要があります。

一括インデックス作成の例

POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }

ドキュメントの検索

標準 _search API を使用してインデックスを検索し、テキスト、k-NN、またはハイブリッドクエリを実行できます。s3vector エンジンで設定されたknn_vectorフィールドに対するクエリの場合、OpenSearch はクエリを対応する S3 ベクトルインデックスに自動的にオフロードします。

注記

s3vector エンジンでは、更新セマンティクスはs3vectorエンジンを使用しないフィールドにのみ適用されます。ただし、 にオフロードされたベクトルデータはs3vector、ドキュメントのインデックスが正常に作成された直後に表示されます。

検索クエリの例

GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }

サポートされているマッピングパラメータ

s3vector エンジンでは、 knn_vectorフィールドはマッピングで次のパラメータをサポートします。

ベクトルフィールドパラメータ
[Parameter] (パラメータ) 必須 説明 サポートされる値
type あり ドキュメントに存在するフィールドのタイプ。 knn_vector
dimension あり インデックスに取り込まれる各ベクトルのディメンション。 >0、<=4096
space_type なし ベクトル間の距離を計算するために使用されるベクトル空間。 l2, cosinesimil
method.engine あり インデックス作成と検索に使用するおおよその k-NN エンジン。 s3vector
method.name なし 最も近い近傍メソッド ""
重要

ネストされたknn_vectorフィールドタイプはs3vectorエンジンを使用してサポートされていません

計測と請求

計測が発表されるまで、この機能は請求されません。

s3vector エンジンの無効化

s3vector エンジンを無効にする前に、現在使用しているすべてのインデックスを削除します。そうしないと、エンジンを無効にする試みは失敗します。

また、s3vectorエンジンを有効または無効にすると、ドメインでブルー/グリーンデプロイがトリガーされることに注意してください。

s3vector エンジンを無効にするには、ドメイン設定を編集し、 を設定しますS3VectorsEngine.Enabled: false