(预览版)从 Amazon S3 Vectors 导入至 OpenSearch 无服务器
重要
Amazon S3 Vectors 与 OpenSearch Service 的集成目前为预览版,可能随时发生变化。
Amazon S3 Vectors 推出首个支持存储和查询向量的云对象存储。S3 Vectors 提供经济高效、弹性且持久的向量存储,可根据语义含义和相似性进行查询。S3 Vectors 提供亚秒级的查询响应时间,向量上传、存储和查询的成本最高可降低 90%。
Amazon S3 Vectors 推出 S3 向量存储桶,您可以使用该存储桶存储、访问和查询向量数据,无需预置任何基础设施。在向量存储桶中,可以在向量索引中组织向量数据。您的向量存储桶可包含多个向量索引,且每个向量索引可存储数百万个向量。有关更多信息,请参阅《Amazon S3 用户指南》中的 Working with Amazon S3 Vectors and vector buckets。
每个向量包括:
-
唯一键
-
向量数据
-
采用 JSON 格式的可选元数据
向量索引支持欧几里得距离和余弦距离函数,用于相似性搜索操作。
注意
向量存储桶的主要优势在于能够以极低的成本存储海量数据集,同时为向量操作提供直接的 API 访问权限。
有关 Amazon S3 向量存储桶的更多信息,包括如何创建的信息,请参阅《Amazon S3 用户指南》中的 Working with Amazon S3 Vectors and vector buckets。除本主题所述内容之外,有关与 OpenSearch Service 集成的更多信息,请参阅 Using S3 Vectors with OpenSearch Service
您可以将 S3 Vectors 和 Amazon OpenSearch Service 结合使用,在查询频率较低时降低向量存储成本,随后在需求增加或需要增强搜索能力时,将这些数据集快速迁移至 OpenSearch。
OpenSearch Service 与 Amazon S3 Vectors 集成,提供超越 Amazon S3 向量存储桶本身所能提供的增强性能和功能。如果您需要,请考虑此集成:
-
更高的查询吞吐量
-
亚秒级搜索延迟
-
高级分析功能,例如聚合
-
结合文本和向量数据的混合搜索
当多个应用程序使用具有不同性能要求的相同向量数据时,这种集成尤为有用。对于成本敏感型用例,您可以让某些应用程序直接与 Amazon S3 向量存储桶进行交互;而对于性能关键型操作,其他应用程序则可利用 OpenSearch 集成实现高效处理。
集成架构
该集成使用 Amazon OpenSearch Ingestion(OSI)作为 Amazon S3向量索引与 Amazon OpenSearch 无服务器向量集合之间的数据管道。OpenSearch Ingestion 会自动从您指定的向量索引中导出向量数据,并将其导入 OpenSearch 无服务器 向量集合,以实现高性能搜索操作
注意
导出后,您的数据仍保留在 S3 向量索引中。您拥有两个数据副本。
每个向量索引均映射到 OpenSearch Service 集合中的对应索引。该集成:
-
保留向量维度
-
保留元数据
-
针对 OpenSearch 的向量搜索功能优化数据结构
配置完成后,OpenSearch Ingestion 将通过调用 Amazon S3 ListVectors API 从指定向量索引中读取向量,从而启动数据导出流程。该服务并行处理向量以优化摄取速度,同时兼顾 OpenSearch Ingestion 和 Amazon OpenSearch 无服务器的扩展限制。
摄取期间,该服务:
-
转换向量数据,以匹配 OpenSearch Service 预期格式
-
保留基本信息,包括向量值、元数据和距离度量
-
通过智能重试机制处理故障场景
-
将问题记录存入作为死信队列使用的 Amazon S3 存储桶,以便后续分析
该集成可高效处理海量数据集,其性能取决于向量维度、数据集大小以及配置的扩缩限制。OSI 每条管道最多可扩展至 16 个工作进程,而 OpenSearch 无服务器 则会根据数据摄取需求自动调整容量。默认情况下,OpenSearch 将 maxSearch OpenSearch 无服务器端的 OpenSearch 计算单位(OCU)增加至 100。
注意
该集成优先实现成本效益,方式如下:
-
导出完成后自动关闭管道
-
OpenSearch 无服务器集合扩展
-
按需付费资源模型
所需的 IAM 权限
该集成需谨慎配置 IAM 权限,以确保服务间通信的安全性。OpenSearch Ingestion 需要权限才能读取 Amazon S3 向量索引、写入 OpenSearch Service 向量集合以及管理相关的安全策略。
当您通过本主题后文所述的步骤启用集成时,可选择以下任一选项进行权限管理:
-
允许系统自动创建具有所需权限的服务角色
-
提供符合要求的现有角色
自动创建的角色包含适用于以下内容的策略:
-
访问 Amazon S3 向量索引 API
-
管理 OpenSearch Service 集合操作
-
处理摄取尝试失败的死信队列操作
如果选择指定现有角色,则验证该角色是否具备以下 IAM 权限:
(必填):OpenSearch Ingestion 与 OpenSearch 无服务器之间的数据管道权限
(必填):OpenSearch Ingestion 与 Amazon S3 死信队列之间的数据摄取权限
(必填):OpenSearch Ingestion 与 Amazon S3 Vectors 之间的数据摄取权限
(如果已启用 AWS KMS 加密,则为必填):OpenSearch Ingestion 与 Amazon S3 Vectors 之间通信的解密权限
配置 Amazon S3 Vectors 与 OpenSearch 的集成
按照以下步骤配置 Amazon S3 Vectors 与 OpenSearch 无服务器的集成。
注意
如果通过选择向量存储桶页面中的导出到 OpenSearch 选项,开始从 Amazon S3 控制台配置集成,则如下所述,后续步骤中的某些操作将不适用。
配置 Amazon S3 Vectors 与 OpenSearch 无服务器的集成
-
打开 Amazon OpenSearch Service 控制台中的导入 S3 向量索引到 OpenSearch 向量引擎页面。如果在 Amazon S3 控制台中点击导出到 OpenSearch,该页面将自动显示。如果从 OpenSearch 控制台开始,请在左侧导航栏中选择集成,然后选择导入 S3 向量索引。
-
在源部分,如果从 Amazon S3 控制台开始,请确认已指定向量索引的名称及其Amazon 资源名称(ARN)。如果从 OpenSearch 控制台开始,请在 S3 向量索引 ARN 字段中输入索引 ARN。
-
在服务访问部分中,选择一个选项。如果选择现有角色,请验证该角色是否具备集成所需的所有权限,如 所需的 IAM 权限 中所述。
-
(可选)展开其他设置。对于启用冗余(活动副本),我们建议在生产环境中保持该选项勾选状态。当您创建第一个集合时,OpenSearch 无服务器会实例化两个 OCU,一个用于索引,一个用于搜索。为了确保高可用性,它还会在另一个可用区中启动一组备用节点。对于开发和测试目的,您可以禁用集合的启用冗余设置,这将消除两个备用副本,并且仅实例化两个 OCU。默认情况下,冗余活动副本已启用,这意味着总共为账户中的第一个集合实例化了四个 OCU。
对于为 Amazon OpenSearch 无服务器向量添加客户自行管理的 AWS KMS 密钥,请选择此选项,以使用客户自行管理的密钥加密向量集合中的数据。默认情况下,OpenSearch 使用 AWS 托管式密钥。
-
如果通过点击 Amazon S3 控制台中的导出到 OpenSearch 选项开始此流程,则导出详细信息部分会列出 OpenSearch 后续执行的步骤。准备就绪后,选择导出。
如果在 OpenSearch Service 控制台中开始此过程,则导入详细信息部分会列出 OpenSearch 后续执行的步骤。准备就绪后,选择导入。
OpenSearch 会打开历史记录页面,显示 Amazon S3 向量索引向 OpenSearch 无服务器索引进行的所有导出/导入操作。
成功摄取后,OSI 会自动停止管道运行,以避免不必要的成本,同时将导出数据保留在 OpenSearch 中。您可以通过 CloudWatch 指标监控集成进度,并访问详细日志进行故障排除。
初始数据摄取完成后,OpenSearch 集合仍处于活动状态,可供查询。您可以执行以下操作:
-
相似性搜索
-
聚合
-
分析操作