

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

# Amazon S3 ベクトルエンジンを使用した高度な検索機能
<a name="s3-vector-opensearch-integration-engine"></a>

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

この機能を使用すると、OpenSearch は、OpenSearch クラスターのストレージに他のドキュメントフィールドを保持しながら、Amazon S3 OpenSearch ベクトルインデックスにベクトル埋め込みを保存します。このアーキテクチャには次の利点があります:
+ **耐久性**: S3 Vectors に書き込まれたデータは Amazon S3 に保存され、S3 はイレブンナインのデータ耐久性を実現するよう設計されています。
+ **スケーラビリティ**: クラスターストレージを消費することなく、大きなベクトルデータセットを S3 にオフロードします。
+ **コスト効率**: ベクトルが多いワークロードのストレージコストを最適化します。

OpenSearch には、S3 ベクトルインデックスを使用するための以下の要件があります:
+ OpenSearch バージョン 2.19 以降
+ OpenSearch Optimized インスタンス
+ OpenSearch リリースの最新のパッチバージョン

## S3 ベクトルの有効化
<a name="s3-vector-opensearch-integration-engine-enable"></a>

[新しいドメインを作成する](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)とき、または既存のドメインを更新するときは、**[詳細設定]** セクションで **[エンジンオプションとして S3 ベクトルを有効にする]** を選択できます。この設定により、エンジンとして S3 Vectors を利用するときに、OpenSearch が S3 ベクトルバケットを作成できるようになります。このオプションを有効にすると、OpenSearch はドメインの S3 ベクトルを次のように設定します。

1. ドメインで設定された AWS KMS キーに 2 つの新しい許可を作成します。
   + S3 Vectors のバックグラウンドインデックス作成ジョブに対する復号権限付きのグラント
   + OpenSearch が `GenerateDataKey` アクセス許可を持つ S3 ベクトルバケットを作成するためのグラント

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

## S3 ベクトルエンジンを使用したインデックスの作成
<a name="s3-vector-opensearch-integration-engine-creating-indexes"></a>

ドメインを設定したら、`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"
        }
    }
}
```

## 機能的制限
<a name="s3-vector-opensearch-integration-engine-functional-limitations"></a>

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


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

| 機能 | 行動 | 
| --- | --- | 
| Split/Shrink/Clone インデックス | これらの API は、`knn_vector` フィールドの `s3vector` エンジンで設定されたインデックスで使用すると失敗します。 | 
| スナップショット | `s3vector` エンジンを使用するインデックスはスナップショットをサポートしていません。マネージドドメインの場合:[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/s3-vector-opensearch-integration-engine.html) スナップショットは point-in-time リカバリではサポートされていませんが、`s3vector` エンジンは OpenSearch Optimized インスタンスとともにイレブンナインの耐久性を提供します。  | 
| UltraWarm 階層 | `s3vector` エンジンで設定されたインデックスは UltraWarm 階層に移行できません。 | 
| クラスター間レプリケーション | `s3vector` エンジンで設定されたインデックスは、クラスター間のレプリケーションをサポートしていません。 | 
| 誤削除防止 | `s3vector` エンジンを使用するインデックスではスナップショットがサポートされていないため、誤削除防止は使用できません。ドメイン内の他のインデックスは復元できます。 | 
| 放射状検索 | `s3vector` エンジンを使用するフィールドでは、放射状検索によるクエリはサポートされていません。 | 

## ドキュメントのインデックス作成
<a name="s3-vector-opensearch-integration-engine-index-documents"></a>

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

確認済みのすべての一括リクエストについて、OpenSearch はすべてのデータ (ベクトルと非ベクトル) の耐久性を保証します。リクエストが否定的な確認を受け取った場合、その一括リクエストのドキュメントの耐久性は保証されません。このようなまれなケースでは、ドキュメント ID を使用して、以前に失敗したリクエストを削除した後、このようなリクエストを再試行することをお勧めします。

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

```
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 }
```

## ドキュメントの検索
<a name="s3-vector-opensearch-integration-engine-searching-documents"></a>

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

**注記**  
`s3vector` エンジンでは、k-NN 検索クエリは最大値`k`の 100 をサポートします。つまり、100 個の最も近い近傍の最大値を検索結果に返すことができます。

**検索クエリの例**

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

s3vector エンジンを使用して、OpenSearch kNN インデックスでフィルタリングされたベクトル検索を実行できます。OpenSearch はフィルターをポストフィルターとして適用し、特定のヒューリスティックに基づいてオーバーサンプリングメカニズムを使用してリコールとレイテンシーのバランスを取ります。

**フィルターを使用した検索クエリの例:**

```
GET my-index/_search
{
  "size": 10,
  "query": {
    "knn": {
      "my_vector_field": {
        "vector": [2.5, 3.5, 1.2, 4.8],
        "k": 10,
        "filter": {
          "range": {
            "price": {
              "gte": 10,
              "lte": 100
            }
          }
        }
      }
    }
  }
}
```

## サポートされているマッピングパラメータ
<a name="s3-vector-opensearch-integration-engine-supported-mapping-parameters"></a>

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


**ベクトルフィールドパラメータ**  

| [Parameter] (パラメータ) | [Required] (必須) | 説明 | サポートされる値 | 
| --- | --- | --- | --- | 
| type | はい | ドキュメント内に存在するフィールドのタイプ。 | knn\_vector | 
| dimension | はい | インデックスに取り込まれる各ベクトルのディメンション。 | >0, <=4096 | 
| space\_type | いいえ | ベクトル間の距離を計算するために使用されるベクトル空間。 | l2, cosinesimil | 
| method.engine | はい | インデックス作成と検索に使用する近似 k-NN エンジン。 | s3vector | 
| method.name | いいえ | 最近傍法 | "" | 
| store | 該当なし | このマッピングパラメータの有効化または無効化は、knn\_vector データが OpenSearch に保存されないため、no-op です。 | サポート外 | 
| doc\_values | 該当なし | このマッピングパラメータの有効化または無効化は、knn\_vector データが OpenSearch に保存されないため、no-op です。 | サポート外 | 

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

## 使用量測定と請求
<a name="s3-vector-opensearch-integration-engine-metering-billing"></a>

この機能の計測と請求については、[「Amazon OpenSearch Service の料金](https://aws.amazon.com/opensearch-service/pricing/)」を参照してください。

## s3vector エンジンの無効化
<a name="s3-vector-opensearch-integration-engine-disable"></a>

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

また、`s3vector` エンジンを有効または無効にすると、ドメインで[ブルー/グリーンデプロイ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-configuration-changes.html)がトリガーされることに注意してください。

`s3vector` エンジンを無効にするには、[ドメイン設定を編集](https://docs.aws.amazon.com/cli/latest/reference/opensearch/update-domain-config.html)し、`S3VectorsEngine.Enabled: false` を設定します。