

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 从 Amazon S3 向量导入到 OpenSearch 无服务器
<a name="s3-opensearch-vector-bucket-integration"></a>

Amazon S3 Vectors 推出首个支持存储和查询向量的云对象存储。S3 Vectors 提供经济高效、弹性且持久的向量存储，可根据语义含义和相似性进行查询。S3 Vectors 提供亚秒级的查询响应时间，向量上传、存储和查询的成本最高可降低 90%。

Amazon S3 Vectors 推出 S3 向量存储桶，您可以使用该存储桶存储、访问和查询向量数据，无需预置任何基础设施。在向量存储桶中，可以在向量索引中组织向量数据。您的向量存储桶可包含多个向量索引，且每个向量索引可存储数百万个向量。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Working with Amazon S3 Vectors and vector buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。

每个向量包括：
+ 唯一键
+ 向量数据
+ 采用 JSON 格式的可选元数据

向量索引支持欧几里得距离和余弦距离函数，用于相似性搜索操作。

**注意**  
向量存储桶的主要优势在于能够以极低的成本存储海量数据集，同时为向量操作提供直接的 API 访问权限。

有关 Amazon S3 向量存储桶的更多信息，包括如何创建的信息，请参阅《Amazon S3 用户指南》**中的 [Working with Amazon S3 Vectors and vector buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。除了本主题所述内容之外，有关与 OpenSearch 服务集成的更多信息，请参阅[将 S3 向量与 OpenSearch 服务配合使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-integrating-opensource.html)

当查询频率较低时，您可以使用 S3 Vector OpenSearch s 和 Amazon Serv OpenSearch ice 来降低矢量存储的成本，然后在需求增加时将这些数据集快速移至该数据集或增强搜索能力。

OpenSearch 该服务与 Amazon S3 矢量存储桶集成，可提供比 Amazon S3 矢量存储桶本身所能提供的更高的性能和功能。如果您需要，请考虑此集成：
+ 更高的查询吞吐量
+ 亚秒级搜索延迟
+ 高级分析功能，例如聚合
+ 结合文本和向量数据的混合搜索

当多个应用程序使用具有不同性能要求的相同向量数据时，这种集成尤为有用。对于成本敏感的用例，您可以让某些应用程序直接与 Amazon S3 矢量存储桶交互，而其他应用程序则利用 OpenSearch 集成来执行性能关键型操作。

## 集成架构
<a name="vector-search-integration-architecture"></a>

该集成使用 Amazon OpenSearch Ingestion (OSI) 作为 Amazon S3 矢量索引和亚马逊 OpenSearch 无服务器矢量集合之间的数据管道。 OpenSearch Ingestion 会自动从您指定的向量索引导出矢量数据，并将其摄取到 OpenSearch 无服务器矢量集合中，以实现高性能搜索操作。

**注意**  
导出后，您的数据仍保留在 S3 向量索引中。您拥有两个数据副本。

每个向量索引都映射到 OpenSearch Serverless 集合中的相应索引。该集成：
+ 保留向量维度
+ 保留元数据
+ 优化向量搜索功能的数据结构 OpenSearch

配置完成后， OpenSearch Ingestion 会使用 Amazon S3 ListVectors API 使用来自指定向量索引的向量，从而开始数据导出过程。该服务并行处理向量以优化摄取速度，同时遵守摄取和 Amazon Serverless 的扩展限制 OpenSearch 。 OpenSearch 

摄取期间，该服务：
+ 转换矢量数据以匹配服务的预期格式 OpenSearch 
+ 保留基本信息，包括向量值、元数据和距离度量
+ 通过智能重试机制处理故障场景
+ 将问题记录存入作为死信队列使用的 Amazon S3 存储桶，以便后续分析

该集成可高效处理海量数据集，其性能取决于向量维度、数据集大小以及配置的扩缩限制。OSI 可以将每个管道最多扩展 16 个工作人员，而 OpenSearch Serverless 则根据摄取需求自动调整容量。默认情况下，将 OpenSearch 无服务器端的`maxSearch` OpenSearch 计算单元 (OCU) OpenSearch 增加到 100。

**注意**  
该集成优先实现成本效益，方式如下：  
导出完成后自动关闭管道
OpenSearch 无服务器集合扩展
Pay-per-use 资源模型

## 所需的 IAM 权限
<a name="vector-search-iam-permissions"></a>

集成需要仔细配置 IAM 权限，以实现服务之间的安全通信。 OpenSearch 摄取需要权限才能读取 Amazon S3 矢量索引、写入 OpenSearch 服务矢量集合以及管理相关安全策略。

当您通过本主题后文所述的步骤启用集成时，可选择以下任一选项进行权限管理：
+ 允许系统自动创建具有所需权限的服务角色
+ 提供符合要求的现有角色

自动创建的角色包含适用于以下内容的策略：
+ 访问亚马逊 S3 向量索引 APIs
+ 管理 OpenSearch 服务收集操作
+ 处理摄取尝试失败的死信队列操作

如果选择指定现有角色，则验证该角色是否具备以下 IAM 权限：

**（必需）**： OpenSearch 摄取和无服务器之间的数据管道权限 OpenSearch 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowAPIs",
            "Effect": "Allow",
            "Action": [ "aoss:APIAccessAll", "aoss:BatchGetCollection" ],
            "Resource": [ "arn:aws:aoss:*:111122223333:collection/collection-id" ]
        },
        {
            "Sid": "allowSecurityPolicy",
            "Effect": "Allow",
            "Action": [
                "aoss:CreateSecurityPolicy",
                "aoss:UpdateSecurityPolicy",
                "aoss:GetSecurityPolicy"
            ],
            "Resource": "*",
            "Condition":{
               "StringLike":{
                  "aoss:collection": [ "collection-name" ]
                },
               "StringEquals": {
                  "aws:ResourceAccount": [ "111122223333" ]
               }
            }
        }
    ]
}
```

------

**（必需）**：Ingestion 和 OpenSearch Amazon S3 死信队列之间的数据提取权限

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "s3Access",
            "Effect": "Allow",
            "Action": [
              "s3:PutObject"
            ],
            "Resource": [ "arn:aws:s3:::bucket/*" ]
        }
    ]
}
```

------

**（必需）**：摄取和 OpenSearch Amazon S3 矢量之间的数据提取权限

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3VectorIndexAccess",
            "Effect": "Allow",
            "Action": [
               "s3vectors:ListVectors",
               "s3vectors:GetVectors"
            ],
            "Resource": [
                "arn:aws:s3vectors:us-east-1:111122223333:bucket/bucket-name/index/index-name"
            ]
        }
    ]
}
```

------

**（如果启用了 AWS KMS 加密，则为必填项）**： OpenSearch Ingestion 和 Amazon S3 矢量之间通信的解密权限

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowS3VectorDecryptionOfCustomManagedKey",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/key-id" ],
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "s3vectors.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:s3vectors:arn": [
                        "arn:aws:s3vectors:us-east-1:111122223333:bucket/example-bucket",
                        "arn:aws:s3vectors:us-east-1:111122223333:bucket/example-bucket/index/example-index"
                        ]
                 }
             }
        }
    ]
}
```

------

## 配置 Amazon S3 矢量集成 OpenSearch
<a name="vector-search-configuring-integration"></a>

使用以下过程将 Amazon S3 矢量与 OpenSearch 无服务器集成。

**注意**  
如果您通过选择 V **ector buckets** 页面中的**导出至 OpenSearch**选项开始从 Amazon S3 控制台配置集成的过程，则以下过程中的某些步骤不适用，如过程中所述。

**配置 Amazon S3 矢量与 OpenSearch 无服务器集成**

1. **在 Amazon OpenSearch 服务控制台中打开 “将 S3 向量索引导入 OpenSearch 矢量引擎**” 页面。如果您在 Amazon S3 控制台 OpenSearch中单击 “**导出到**”，则会自动显示该页面。如果您是从 OpenSearch 控制台开始的，请在左侧导航栏中选择 “**集成**”，然后选择 “**导入 S3 矢量索引**”。

1. 在**源**部分，如果从 Amazon S3 控制台开始，请确认已指定向量索引的名称及其Amazon 资源名称（ARN）。如果您是从 OpenSearch控制台开始的，请在 **S3 向量索引 ARN 字段中输入索引 ARN。**

1. 在**服务访问**部分中，选择一个选项。如果选择现有角色，请验证该角色是否具备集成所需的所有权限，如 [所需的 IAM 权限](#vector-search-iam-permissions) 中所述。

1. （可选）展开**其他设置**。对于**启用冗余（活动副本）**，我们建议在生产环境中保持该选项勾选状态。当你创建第一个集合时， OpenSearch Serverless 会实例化两个 OCUs ——一个用于索引，一个用于搜索。为了确保高可用性，它还会在另一个可用区中启动一组备用节点。出于开发和测试目的，您可以禁用集合的**启用冗余**设置，这将消除两个备用副本，只实例化两个副本。 OCUs默认情况下，冗余活动副本处于启用状态，这意味着账户中的第一个集合总共实例化了四个 OCUs 副本。

   对于为 **Amazon OpenSearch Serverless 向量添加客户管理的 AWS KMS 密钥**，请选择此选项以使用客户管理的密钥对矢量集合中的数据进行加密。默认情况下， OpenSearch 使用 AWS 托管式密钥。

1. 如果您通过单击 Amazon S3 控制台中的 “**导出至**” OpenSearch 选项开始此过程，则**导出详情**部分列出了接下来 OpenSearch 将采取的步骤。准备就绪后，选择**导出**。

   如果您在 OpenSearch 服务控制台中启动了此过程，则**导入详细信息**部分列出了接下来 OpenSearch 将采取的步骤。准备就绪后，选择**导入**。

   OpenSearch 打开历史记录页面以显示 OpenSearch 无服务器索引 exports/imports 的所有 Amazon S3 向量索引。

成功摄取后，OSI 会自动停止管道以避免不必要的成本，同时将导出的数据保留在中。 OpenSearch您可以通过 CloudWatch 指标监控集成进度，并访问详细日志以进行故障排除。

初始摄取完成后，该 OpenSearch 集合将保持活动状态并可供查询。您可以执行以下操作：
+ 相似性搜索
+ 聚合
+ 分析操作