

# ベクトルバケットでのベクトルインデックスの作成
<a name="s3-vectors-create-index"></a>

**注記**  
ベクトルインデックス設定パラメータを慎重に選択してください。ベクトルインデックスを作成した後、ベクトルインデックス名、ディメンション、距離メトリクス、またはフィルタリング不可能なメタデータキーを更新することはできません。これらの値を変更するには、新しいベクトルインデックスを作成する必要があります。

ベクトルインデックスは、ベクトルデータを保存および整理して効率的な類似度検索を行うベクトルバケット内のリソースです。ベクトルインデックスを作成するときは、ディメンション、類似度の計算に使用される距離メトリクス、オプションでフィルタリングできないメタデータキーなど、そのインデックス内のすべてのベクトルが共有する必要がある特性を定義します。オプションで、インデックスの作成時にベクトルインデックス専用の暗号化設定とタグを設定することもできます。ベクトルインデックスの命名要件、ディメンション要件、距離メトリクスオプション、フィルタリングできないメタデータキーの詳細については、「[制限と制約](s3-vectors-limitations.md)」を参照してください。ベクトルインデックスの暗号化設定の詳細については、「[S3 Vectors のデータ保護と暗号化](s3-vectors-data-encryption.md)」を参照してください。タグの設定の詳細については、「[S3 ベクトルバケットでのタグの使用](s3-vectors-tags.md)」を参照してください。

 ベクトルインデックスは既存のベクトルバケット内に作成する必要があり、作成後に変更できない特定の設定パラメータが必要です。

## S3 コンソールの使用
<a name="s3-vectors-create-index-console"></a>

**ベクトルインデックスを作成するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. ナビゲーションペインで、**ベクトルバケット**を選択します。

1. ベクトルバケットのリストで、ベクトルインデックスを作成するバケットの名前を選択します。

1. **[ベクトルインデックスを作成]** を選択します。

1. **[ベクトルインデックス名]** に、ベクトルインデックスの名前を入力します。

   ベクトルインデックス名は、ベクトルバケット内で一意である必要があります。名前は 3～63 文字にしてください。有効な文字は、小文字 (a～z)、数字 (0～9)、ハイフン (-)、ドット (.) です。ベクトルインデックスの命名要件の詳細については、「[制限と制約](s3-vectors-limitations.md)」を参照してください。

1. **[ディメンション]** には、各ベクトルの値の数を入力します。
**注記**  
**[ディメンション]** の値は、各ベクトルに含まれる数値の数を決定します。
このインデックスに追加されるすべてのベクトルには、正確にこの数の値が必要です。
ディメンションは 1～4096 である必要があります。
より大きなディメンションには、より多くのストレージ領域が必要です。
埋め込みモデルの出力ディメンションに基づいて選択します。

   要件の詳細については、「[制限と制約](s3-vectors-limitations.md)」を参照してください。

1. **[距離メトリクス]** で次のいずれかのオプションを選択します。
   + **コサイン** – ベクトル間の角度のコサインを測定します。正規化されたベクトル、および方向がマグニチュードよりも重要な場合に最適
   + **ユークリッド** – ベクトル間の直線距離を測定します。方向と大きさの両方が重要な場合に最適です。

1. (オプション) **[フィルタリングできないメタデータ]** で、保存されるがフィルタリングには使用しないメタデータキーを設定します。

   フィルタリングできないメタデータキーを追加するには

   1. **[キーの追加]** を選択します。

   1. キー名 (1～63 文字で、このベクトルインデックス内で一意) を入力します。

   1. 繰り返してキーを追加します (最大 10 個のキー)。
**注記**  
ベクトルインデックスの作成後にベクトルデータを挿入するときに、フィルタリング可能なメタデータをキーと値のペアとして各ベクトルにアタッチできます。デフォルトでは、ベクトルにアタッチされているすべてのメタデータキーはフィルタリング可能で、類似度クエリでフィルターとして使用できます。ベクトルインデックスの作成中にフィルタリング不可として指定されたメタデータキーのみがフィルタリングから除外されます。合計メタデータ制約とフィルタリング可能なメタデータ制約の両方を含む、ベクトルあたりのメタデータサイズ制限の詳細については、「[制限と制約](s3-vectors-limitations.md)」を参照してください。

1. 設定を注意深く確認します。
**注記**  
一部の設定は、作成後に変更できません。

1. **[暗号化]** で、**[暗号化タイプを指定する]** を選択します。**[暗号化のバケット設定を使用する]** か、ベクトルインデックスの暗号化設定を上書きするかを選択できます。バケットレベルの設定を上書きする場合は、ベクトルインデックスの暗号化タイプを **[AWS Key Management Service キーを使用したサーバー側の暗号化 (SSE-KMS)]**、または **[Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)]** として指定するオプションがあります。ベクトルインデックスの暗号化設定の詳細については、「[S3 Vectors のデータ保護と暗号化](s3-vectors-data-encryption.md)」を参照してください。

1. **[タグ] (オプション)** では、キーと値のペアとしてタグを追加して、AWS Billing and Cost Management を使用してベクトルインデックスのコストを追跡および整理できます。**キー**と**値**を入力します。別のタグを追加するには、[**タグの追加**] を選択します。ベクトルインデックスには最大 50 個のタグを入力できます。詳細については、「[S3 ベクトルバケットでのタグの使用](s3-vectors-tags.md)」を参照してください。

1. **[ベクトルインデックスを作成]** を選択します。

## の使用AWS CLI
<a name="s3-vectors-create-index-cli"></a>

ベクトルバケットにベクトルインデックスを作成するには、次のコマンド例を使用し、`user input placeholders` を独自の情報に置き換えます。

**例 1: フィルタリングできないメタデータキーを使用したベクトルインデックスの作成**

```
aws s3vectors create-index \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --data-type "float32" \
  --dimension 1 \
  --distance-metric "cosine" \
  --metadata-configuration '{"nonFilterableMetadataKeys":["nonFilterableKey1"]}'
```

**例 2: フィルタリングできないメタデータキーなしでベクトルインデックスを作成する**

```
aws s3vectors create-index \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx2" \
  --data-type "float32" \
  --dimension 4096 \
  --distance-metric "euclidean"
```

さらに、すべてのメタデータ (フィルタリング可能とフィルタリング不可の両方) は `GetVectors`、`ListVectors`、または `QueryVectors` API オペレーションを使用して同じ方法で取得されます。次の CLI コマンドは、メタデータ (フィルタリングできないメタデータを含む) を含むベクトルを取得する方法を示しています。

リクエストの例:

```
aws s3vectors get-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --keys '["vec1", "vec3"]' \
  --return-data \
  --return-metadata \
```

レスポンスの例: 

```
{
    "vectors": [
        {
            "key": "vec1",
            "data": {
                "float32": [
                    0.10000000149011612,
                    0.20000000298023224,
                    0.30000001192092896,
                    0.4000000059604645,
                    0.5
                ]
            },
            "metadata": {
                "category": "test",
                "text": "First vector"
            }
        },
        {
            "key": "vec3",
            "data": {
                "float32": [
                    0.6000000238418579,
                    0.699999988079071,
                    0.800000011920929,
                    0.8999999761581421,
                    1.0
                ]
            },
            "metadata": {
                "text": "Third vector",
                "category": "test"
            }
        }
    ]
}
```

レスポンスには、インデックスの作成時にフィルタリング可能と指定されたかどうかにかかわらず、ベクトルに関連付けられたすべてのメタデータが含まれます。

## AWS SDK の使用
<a name="s3-vectors-create-index-sdk"></a>

------
#### [ SDK for Python ]

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Create a vector index "movies" in the vector bucket "media-embeddings" without non-filterable metadata keys
s3vectors.create_index(
    vectorBucketName="media-embeddings",
    indexName="movies",
    dimension=3,
    distanceMetric="cosine",
    dataType = "float32"
)


#Create a vector index "movies" in the vector bucket "media-embeddings" with non-filterable metadata keys
s3vectors.create_index(
    vectorBucketName="media-embeddings",
    indexName="movies",
    dimension=3,
    distanceMetric="cosine",
    dataType = "float32",
    metadataConfiguration= {"nonFilterableMetadataKeys": ["nonFilterableMetadataKey1"]}
)
```

------