实时向量嵌入蓝图 - 常见问题解答 - Managed Service for Apache Flink
这个蓝图创造了哪些 Amazon 资源? Amazon CloudFormation 堆栈部署完成后我的操作是什么? 源 Amazon MSK 主题中的数据结构应该是什么? 我能否指定要嵌入的部分消息? 我是否可以从多个 Amazon MSK 主题中读取数据? 我能否使用正则表达式来配置 Amazon MSK 主题名称? 可以从 Amazon MSK 主题中读取的消息的最大大小是多少? 支持 OpenSearch 哪种类型? 为什么我需要使用矢量搜索集合、向量索引,并在我的 OpenSearch 无服务器集合中添加向量字段? 我应该将哪些方面设置为向量字段的维度? 配置的 OpenSearch 索引中的输出是什么样子? 我能否指定要添加到存储在 OpenSearch 索引中的文档的元数据字段? 我应该指望 OpenSearch索引中有重复的条目吗? 我可以向多个 OpenSearch 索引发送数据吗? 我能否在单个 Amazon Web Services 账户中部署多个实时向量嵌入应用程序? 多个实时向量嵌入应用程序能否使用相同的数据来源或接收器? 该应用程序是否支持跨账户连接? 该应用程序是否支持跨区域连接? 我的 Amazon MSK 集群和 OpenSearch 集合能否位于不同的 VPCs 或子网中?该应用程序支持哪些嵌入模型?我能否根据自己的工作负载微调应用程序的性能?支持哪些 Amazon MSK 身份验证类型?什么是 sink.os.bulkFlushIntervalMillis,我该如何设置? 当我部署 Managed Service for Apache Flink 应用程序时,它将从 Amazon MSK 主题的哪一点开始读取消息? 如何使用 source.msk.starting.offset?支持哪些分块策略? 如何读取向量数据存储中的记录?可在何处找到源代码的新更新? 我能否更改 Amazon CloudFormation 模板并更新适用于 Apache Flink 的托管服务应用程序? 会代表我 Amazon 监控和维护应用程序吗? 此应用程序是否会将我的数据移出我 Amazon Web Services 账户?
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink(Amazon MSF)之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

实时向量嵌入蓝图 - 常见问题解答

查看以下有关实时向量嵌入蓝图的常见问题解答。有关实时向量嵌入蓝图的更多信息,请参阅实时向量嵌入蓝图

常见问题解答

这个蓝图创造了哪些 Amazon 资源?

要查找部署在您的账户中的资源,请导航到 Amazon CloudFormation 控制台并确定以您为 Apache Flink 托管服务应用程序提供的名称开头的堆栈名称。选择资源选项卡,查看作为堆栈一部分创建的资源。以下是堆栈创建的关键资源:

  • 实时向量嵌入 Managed Service for Apache Flink 应用程序

  • 用于存放实时向量嵌入应用程序源代码的 Amazon S3 存储桶

  • CloudWatch 用于存储日志的日志组和日志流

  • 用于获取和创建资源的 Lambda 函数

  • 适用于 Lambdas、适用于 Apache Flink 应用程序的托管服务以及访问亚马逊 Bedrock 和亚马逊服务的 IAM 角色和策略 OpenSearch

  • Amazon OpenSearch 服务的数据访问政策

  • 用于访问亚马逊 Bedrock 和亚马逊 OpenSearch 服务的 VPC 终端节点

Amazon CloudFormation 堆栈部署完成后我的操作是什么?

Amazon CloudFormation 堆栈部署完成后,访问适用于 Apache Flink 的托管服务控制台,找到您的蓝图 Apache Flink 托管服务应用程序。选择配置选项卡并确认所有运行时属性的设置是否正确。这些设置可能会溢出到下一页。如果您对这些设置放心,请选择运行。该应用程序将开始从您的主题中摄取消息。

要查看新版本,请参阅 https://github.com/awslabs/real-time-vectorization-of-streaming- data/release。

源 Amazon MSK 主题中的数据结构应该是什么?

我们目前支持结构化和非结构化源数据。

  • 非结构化数据以 source.msk.data.type 中的 STRING 表示。从传入的消息中按原样读取数据。

  • 我们目前支持结构化的 JSON 数据(以 source.msk.data.type 中的 JSON 表示)。数据必须始终采用 JSON 格式。如果应用程序收到格式错误的 JSON,则应用程序将失败。

  • 使用 JSON 作为源数据类型时,请确保所有源主题中的每条消息都是有效的 JSON。如果您使用此设置订阅一个或多个不包含 JSON 对象的主题,则应用程序将失败。如果一个或多个主题混合了结构化和非结构化数据,我们建议您在 Managed Service for Apache Flink 应用程序中将源数据配置为非结构化数据。

我能否指定要嵌入的部分消息?

  • 对于非结构化输入数据(如果source.msk.data.type是)STRING,应用程序将始终嵌入整条消息并将整条消息存储在配置的 OpenSearch 索引中。

  • 对于结构化输入数据(其中 source.msk.data.typeJSON),您可以配置 embed.input.config.json.fieldsToEmbed 以指定应选择 JSON 对象中的哪个字段进行嵌入。这仅适用于顶级 JSON 字段,不适用于嵌套 JSONs 和包含 JSON 数组的消息。使用 .* 嵌入整个 JSON。

我是否可以从多个 Amazon MSK 主题中读取数据?

是,您可以使用此应用程序从多个 Amazon MSK 主题中读取数据。来自所有主题的数据均必须是相同的类型(STRING 或 JSON),否则可能会导致应用程序失败。来自所有主题的数据始终存储在单个 OpenSearch索引中。

我能否使用正则表达式来配置 Amazon MSK 主题名称?

source.msk.topic.names 不支持正则表达式列表。我们支持以逗号分隔的主题名称列表或包含所有主题的 .* 正则表达式。

可以从 Amazon MSK 主题中读取的消息的最大大小是多少?

可以处理的消息的最大大小受目前设置为 25,000,000 的 Amazon Bedrock InvokeModel 正文限制的限制。有关更多信息,请参阅 InvokeModel

支持 OpenSearch 哪种类型?

我们同时支持 OpenSearch 域名和集合。如果您使用的是 OpenSearch集合,请确保使用矢量集合并创建用于此应用程序的向量索引。这将允许您使用 OpenSearch 矢量数据库功能来查询数据。要了解更多信息,请参阅 Amazon S OpenSearch ervice 的矢量数据库功能说明

为什么我需要使用矢量搜索集合、向量索引,并在我的 OpenSearch 无服务器集合中添加向量字段?

OpenSearchServerless 中的向量搜索集合类型提供了可扩展且性能高的相似度搜索功能。它简化了现代机器学习(ML)增强搜索体验和生成式人工智能(AI)应用程序的构建。有关更多信息,请参阅使用向量搜索集合

我应该将哪些方面设置为向量字段的维度?

根据要使用的嵌入模型设置向量字段的维度。请参阅下表,并确认相应文档中的这些值。

向量字段维度
Amazon Bedrock 向量嵌入模型名称 模型提供的输出维度支持

Amazon Titan 文本嵌入 V1

1,536

Amazon Titan 文本嵌入 V2

1,024(默认)、384、256

Amazon Titan Multimodal Embeddings G1

1,024(默认)、384、256

Cohere Embed(英文版)

1024

Cohere Embed(多语版)

1024

配置的 OpenSearch 索引中的输出是什么样子?

OpenSearch 索引中的每个文档都包含以下字段:

  • original_data:用于生成嵌入的数据。对于 STRING 类型,它是整条消息。对于 JSON 对象,它是用于嵌入的 JSON 对象。它可以是消息中的整个 JSON,也可以是 JSON 中的指定字段。例如,如果选择从传入的消息中嵌入名称,则输出将如下所示:

    "original_data": "{\"name\":\"John Doe\"}"
  • embedded_data:由 Amazon Bedrock 生成的向量浮动嵌入数组

  • 日期:存储文档的 UTC 时间戳 OpenSearch

我能否指定要添加到存储在 OpenSearch 索引中的文档的元数据字段?

不,目前,我们不支持向存储在 OpenSearch 索引中的最终文档中添加其他字段。

我应该指望 OpenSearch索引中有重复的条目吗?

根据您配置应用程序的方式,您可能会在索引中看到重复的消息。一种常见的原因是应用程序重新启动。默认情况下,应用程序配置为从源主题中最早的消息开始读取。当您更改配置时,应用程序会重新启动并再次处理主题中的所有消息。为避免重新处理,请参阅有关如何使用 source.msk.starting.offset 并正确设置应用程序的起始偏移量的文档。

我可以向多个 OpenSearch 索引发送数据吗?

不是,该应用程序支持将数据存储到单个 OpenSearch 索引中。要将向量化输出设置为多个索引,必须部署单独的 Managed Service for Apache Flink 应用程序。

我能否在单个 Amazon Web Services 账户中部署多个实时向量嵌入应用程序?

可以,如果每个应用程序都有唯一的名称,则可以在单个 Amazon Web Services 账户 中部署多个实时向量嵌入 Managed Service for Apache Flink 应用程序。

多个实时向量嵌入应用程序能否使用相同的数据来源或接收器?

可以,您可以创建多个实时向量嵌入 Managed Service for Apache Flink 应用程序,这些应用程序从同一主题读取数据或将数据存储在同一个索引中。

该应用程序是否支持跨账户连接?

不,要使应用程序成功运行,Amazon MSK 集群和集 OpenSearch合必须与您尝试设置 Apache Flink 托管服务应用程序的 Amazon Web Services 账户 位置相同。

该应用程序是否支持跨区域连接?

不可以,该应用程序仅允许您在Apache Flink托管服务应用程序的同一区域部署带有 Amazon MSK 集群和集 OpenSearch 合的托管服务 Flink 应用程序。

我的 Amazon MSK 集群和 OpenSearch 集合能否位于不同的 VPCs 或子网中?

是的,我们支持 Amazon MSK 集群 VPCs 和不同子网中的集 OpenSearch 合,前提是它们位于同一子网中。 Amazon Web Services 账户请参阅(一般 MSF 故障排除),以确保您的设置正确。

该应用程序支持哪些嵌入模型?

目前,该应用程序支持 Bedrock 支持的所有模型。这些方法包括:

  • Amazon Titan Embeddings G1 - Text

  • Amazon Titan 文本嵌入 V2

  • Amazon Titan Multimodal Embeddings G1

  • Cohere Embed(英文版)

  • Cohere Embed(多语版)

我能否根据自己的工作负载微调应用程序的性能?

可以。应用程序的吞吐量取决于许多因素,所有这些因素都可以由客户控制:

  1. Amazon MSF KPUs:应用程序采用默认并行度系数 2 和每 KPU 1 的并行度进行部署,并行度已开启自动缩放。但是,建议您根据工作负载配置 Managed Service for Apache Flink 应用程序的扩展。有关更多信息,请参阅审核 Managed Service for Apache Flink 应用程序资源

  2. Amazon Bedrock:根据所选的 Amazon Bedrock 按需模式,可能适用不同的配额。在 Bedrock 中查看服务配额,以了解该服务能够处理的工作负载。有关更多信息,请参阅 Amazon Bedrock 的配额

  3. Amazon S OpenSearch ervic e:此外,在某些情况下,您可能会注意到 OpenSearch 这是您的管道中的瓶颈。有关扩展的信息,请参见 OpenSearch 缩放 Amazon OpenSearch 服务域的大小。

支持哪些 Amazon MSK 身份验证类型?

我们仅支持 IAM MSK 身份验证类型。

什么是 sink.os.bulkFlushIntervalMillis,我该如何设置?

向 Amazon Serv OpenSearch ice 发送数据时,批量刷新间隔是批量请求的运行间隔,无论操作的数量或请求的大小如何。默认值设置为 1 毫秒。

虽然设置刷新间隔有助于确保及时为数据编制索引,但如果将该值设置得过低,也会导致开销增加。在选择刷新间隔时,请考虑您的使用案例以及及时编制索引的重要性。

当我部署 Managed Service for Apache Flink 应用程序时,它将从 Amazon MSK 主题的哪一点开始读取消息?

应用程序将开始读取 Amazon MSK 主题中的消息,偏移量由应用程序运行时配置中设置的 source.msk.starting.offset 配置指定。如果未明确设置 source.msk.starting.offset,则应用程序的默认行为是从主题中最早的可用消息开始读取。

如何使用 source.msk.starting.offset

根据所需的行为,将 ource.msk.starting.offset 显式设置为以下值之一:

  • 最早:默认设置,即从分区中最早的偏移量读取。这是合适的选项,尤其是在以下情况下:

    • 您已经新创建 Amazon MSK 主题和使用者应用程序。

    • 您需要重播数据,这样才能构建或重建状态。在实现事件来源模式或初始化需要完整数据历史记录视图的新服务时,这一点很重要。

  • 最新:Managed Service for Apache Flink 应用程序将从分区末尾读取消息。如果您只关心生成新消息,并且不需要处理历史数据,我们建议您使用此选项。在此设置中,使用者将忽略现有消息,只读取上游创建者发布的新消息。

  • 已提交:Managed Service for Apache Flink 应用程序将开始使用来自使用组已提交偏移量的消息。如果提交的偏移量不存在,则将使用最早的重置策略。

支持哪些分块策略?

我们正在使用 langchain 库对输入进行分块。只有当输入的长度大于所选的 maxSegmentSizeInChars 时,才会应用分块。我们支持以下五种分块类型:

  • SPLIT_BY_CHARACTER: 将尽可能多的字符放入每个区块中,其中每个区块的长度不大于。 maxSegmentSize InChars不关心空格,因此它可以截断单词。

  • SPLIT_BY_WORD: 将查找作为分块依据的空格字符。任何单词都不会被截断。

  • SPLIT_BY_SENTENCE: 使用带有英语语句模型的 Apache OpenNLP 库来检测语句边界。

  • SPLIT_BY_LINE: 将查找作为分块依据的换行字符。

  • SPLIT_BY_PARAGRAPH: 将查找作为分块依据的连续换行字符。

拆分策略会根据前面的顺序回退,其中较大的分块策略(例如 SPLIT_BY_PARAGRAPH)回退到 SPLIT_BY_CHARACTER。例如,在使用 SPLIT_BY_LINE 时,如果一行太长,则该行将按语句进行子分块,其中每个分块将尽可能多地放入语句。如果有任何语句太长,那么它将在单词层面上进行分块。如果一个单词太长,那么它将按字符拆分。

如何读取向量数据存储中的记录?

  1. source.msk.data.typeSTRING

    • original_data:Amazon MSK 消息中的完整原始字符串。

    • embedded_data:如果嵌入向量不为空(已应用分块),则从 chunk_data 中创建该向量;如果未应用分块,则从 original_data 中创建该向量。

    • chunk_data:仅在对原始数据进行分块时才会出现。包含用于在 embedded_data 中创建嵌入的原始消息块。

  2. source.msk.data.typeJSON

    • original_data:应用 JSON 密钥筛选来自 Amazon MSK 消息的完整原始 JSON。

    • embedded_data:如果嵌入向量不为空(已应用分块),则从 chunk_data 中创建该向量;如果未应用分块,则从 original_data 中创建该向量。

    • chunk_key:仅在对原始数据进行分块时才会出现。包含 original_data 中区块所属的 JSON 键。例如,在 original_data 的示例中,它可能看起来类似于嵌套键的 jsonKey1.nestedJsonKeyA元数据

    • chunk_data:仅在对原始数据进行分块时才会出现。包含用于在 embedded_data 中创建嵌入的原始消息块。

是,您可以使用此应用程序从多个 Amazon MSK 主题中读取数据。来自所有主题的数据均必须是相同的类型(STRING 或 JSON),否则可能会导致应用程序失败。来自所有主题的数据始终存储在单个 OpenSearch索引中。

可在何处找到源代码的新更新?

前往 https://github.com/awslabs/real-time-vectorization-of-streaming-data/release 查看新版本

我能否更改 Amazon CloudFormation 模板并更新适用于 Apache Flink 的托管服务应用程序?

不,更改 Amazon CloudFormation 模板不会更新适用于 Apache Flink 的托管服务应用程序。中的任何新变化都 Amazon CloudFormation 意味着需要部署新的堆栈。

会代表我 Amazon 监控和维护应用程序吗?

不, Amazon 不会代表您监控、扩展、更新或修补此应用程序。

此应用程序是否会将我的数据移出我 Amazon Web Services 账户?

Apache Flink 托管服务应用程序读取和存储的所有数据都保留在您的 Amazon Web Services 账户 账户中,永远不会离开您的帐户。