

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在向量儲存貯體中建立向量索引
<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. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon 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. 選擇 **Add key (新增金鑰)**。

   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 追蹤和組織向量索引成本。輸入 **Key (索引鍵)** 和 **Value (數值)**。若要新增其他標籤，選擇 **Add Tag (新增標籤)**。您可以為向量索引輸入最多 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 SDKs
<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"]}
)
```

------