翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
(プレビュー) 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 ベクトルを次のように設定します。
-
ドメインで設定された AWS KMS キーに 2 つの新しい許可を作成します。
-
復号権限を持つ S3 Vectors バックグラウンドインデックス作成ジョブの許可
-
OpenSearch がアクセス
GenerateDataKey
許可を持つ S3 ベクトルバケットを作成するための許可
-
-
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
エンジンを使用する前に、次の制限を考慮してください。
機能 | 行動 |
---|---|
インデックスSplit/Shrink/Clone |
これらの APIs、 |
スナップショット |
注記スナップショットはpoint-in-timeリカバリではサポートされていませんが、 |
UltraWarm 階層 |
|
クラスター間レプリケーション |
|
偶発的な削除保護 |
|
ラジアル検索 |
放射状検索を使用したクエリは、 |
ドキュメントのインデックス作成
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
。