(预览)从 Amazon S3 矢量导入到 OpenSearch 无服务器 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

(预览)从 Amazon S3 矢量导入到 OpenSearch 无服务器

重要

Amazon S3 Vectors 与 OpenSearch 服务的集成处于预览版,可能会发生变化。

Amazon S3 Vectors 提供了第一个具有原生支持的云对象存储,用于存储和查询向量。S3 Vectors 提供经济实惠、弹性且持久的矢量存储,可根据语义含义和相似性进行查询。它提供亚秒级的查询响应时间,上传、存储和查询向量的成本最多可降低 90%。

Amazon S3 Vectors 推出了 S3 矢量存储桶,您无需预置任何基础设施即可使用这些存储桶来存储、访问和查询矢量数据。在矢量存储桶中,可以在向量索引中组织矢量数据。您的向量桶可以有多个向量索引,每个向量索引可以容纳数百万个向量。有关更多信息,请参阅 Amazon S3 用户指南中的使用 Amazon S 3 向量和矢量存储桶

每个向量包括:

  • 独一无二的钥匙

  • 矢量数据

  • JSON 格式的可选元数据

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

注意

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

有关 Amazon S3 矢量存储桶的更多信息,包括如何创建矢量存储桶,请参阅 Amazon S3 用户指南中的使用 Amazon S3 矢量存储桶和矢量存储桶。除了本主题所述内容之外,有关与 OpenSearch 服务集成的更多信息,请参阅将 S3 向量与 OpenSearch 服务配合使用

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

OpenSearch 该服务与 Amazon S3 矢量存储桶集成,可提供比 Amazon S3 矢量存储桶本身所能提供的更高的性能和功能。当你需要时,可以考虑这种集成:

  • 更高的查询吞吐量

  • 亚秒级搜索延迟

  • 高级分析功能,例如聚合

  • 结合文本和矢量数据的混合搜索

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

集成架构

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

注意

导出后,您的数据仍存在于 S3 向量索引中。您有两个数据副本。

每个向量索引都映射到 S OpenSearch ervice 集合中的相应索引。集成:

  • 保留向量尺寸

  • 保留元数据

  • 优化向量搜索功能的数据结构 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 权限

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

当您使用本主题后面的步骤启用集成时,可以选择以下选项之一进行权限管理:

  • 允许系统自动创建具有必要权限的服务角色

  • 提供符合要求的现有角色

自动创建的角色包括以下方面的策略:

  • 访问亚马逊 S3 向量索引 APIs

  • 管理 OpenSearch 服务收集操作

  • 处理失败的摄取尝试的死信队列操作

如果您选择指定现有角色,请验证该角色是否具有以下 IAM 权限:

(必需): OpenSearch 摄取和无服务器之间的数据管道权限 OpenSearch

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

(必需):Ingestion 和 OpenSearch Amazon S3 死信队列之间的数据提取权限

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

(必需):摄取和 OpenSearch Amazon S3 矢量之间的数据提取权限

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3VectorIndexAccess", "Effect": "Allow", "Action": [ "s3vectors:ListVectors", "s3vectors:GetVectors" ], "Resource": [ "arn:aws:s3vectors:region:account-id:bucket/bucket-name/index/index-name" ] } ] }

(如果启用了 Amazon KMS 加密,则为必填项): OpenSearch Ingestion 和 Amazon S3 矢量之间通信的解密权限

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowS3VectorDecryptionOfCustomManagedKey", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3vectors.region.amazonaws.com", "kms:EncryptionContext:aws:s3vectors:arn": "arn:aws:s3vectors:region:account-id:bucket/bucket-name" } } } ] }

配置 Amazon S3 矢量集成 OpenSearch

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

注意

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

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

  2. 在 “来源” 部分,如果您是从 Amazon S3 控制台开始的,请确认已指定向量索引的名称及其亚马逊资源名称 (ARN)。如果您是从 OpenSearch控制台开始的,请在 S3 向量索引 ARN 字段中输入索引 ARN。

  3. 在 “服务访问权限” 部分,选择一个选项。如果您选择现有角色,请验证其是否具有集成所需的所有权限,如中所述所需的 IAM 权限

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

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

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

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

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

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

初始摄取完成后,该 OpenSearch 集合将保持活动状态并可供查询。你可以执行:

  • 相似度搜索

  • 聚合

  • 分析操作