Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
查看以下有关实时矢量嵌入蓝图的常见问题解答。有关实时矢量嵌入蓝图的更多信息,请参阅实时矢量嵌入蓝图。
这个蓝图创造了哪些 AWS 资源?
要查找部署在您的账户中的资源,请导航到 AWS CloudFormation 控制台并确定以您为 Apache Flink 托管服务应用程序提供的名称开头的堆栈名称。选择 “资源” 选项卡,查看作为堆栈一部分创建的资源。以下是堆栈创建的关键资源:
-
适用于 Apache Flink 应用程序的实时矢量嵌入托管服务
-
用于存放实时矢量嵌入应用程序源代码的 Amazon S3 存储桶
-
CloudWatch 用于存储日志的日志组和日志流
-
用于获取和创建资源的 Lambda 函数
-
适用于 Lambdas、适用于 Apache Flink 应用程序的托管服务以及访问亚马逊 Bedrock 和亚马逊服务的 IAM 角色和策略 OpenSearch
-
Amazon OpenSearch 服务的数据访问政策
-
用于访问亚马逊 Bedrock 和亚马逊 OpenSearch 服务的 VPC 终端节点
AWS CloudFormation 堆栈部署完成后我的操作是什么?
AWS CloudFormation 堆栈部署完成后,访问适用于 Apache Flink 的托管服务控制台,找到您的蓝图 Apache Flink 托管服务应用程序。选择 “配置” 选项卡并确认所有运行时属性的设置是否正确。它们可能会溢出到下一页。如果您对设置有信心,请选择 “运行”。该应用程序将开始从您的主题中提取消息。
要查看新版本,请参阅 https://github.com/awslabs/real-time-vectorization-of-streaming-
来源 Amazon MSK 主题中的数据结构应该是什么?
我们目前支持结构化和非结构化源数据。
-
非结构化数据用 in 表示。
STRING
source.msk.data.type
从传入的消息中按原样读取数据。 -
我们目前支持结构化的 JSON 数据,用
JSON
insource.msk.data.type
表示。数据必须始终采用 JSON 格式。如果应用程序收到格式错误的 JSON,则应用程序将失败。 -
使用 JSON 作为源数据类型时,请确保所有源主题中的每条消息都是有效的 JSON。如果您使用此设置订阅一个或多个不包含 JSON 对象的主题,则应用程序将失败。如果一个或多个主题混合了结构化和非结构化数据,我们建议您在适用于 Apache Flink 的托管服务应用程序中将源数据配置为非结构化数据。
我能否指定要嵌入的消息的一部分?
-
对于非结构化输入数据(如果
source.msk.data.type
是)STRING
,应用程序将始终嵌入整条消息并将整条消息存储在配置的 OpenSearch 索引中。 -
对于结构化输入数据(其中
source.msk.data.type
为)JSON
,您可以配置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_dat a:用于生成嵌入的数据。对于 STRING 类型,它是整条消息。对于 JSON 对象,它是用于嵌入的 JSON 对象。它可以是消息中的整个 JSON,也可以是 JSON 中的指定字段。例如,如果选择从传入的消息中嵌入姓名,则输出将如下所示:
"original_data": "{\"name\":\"John Doe\"}"
-
embedded_dat a:由亚马逊 Bedrock 生成的向量浮动嵌入数组
-
日期:存储文档的 UTC 时间戳 OpenSearch
我能否指定要添加到存储在 OpenSearch 索引中的文档的元数据字段?
不,目前,我们不支持向存储在 OpenSearch 索引中的最终文档中添加其他字段。
我应该指望 OpenSearch索引中有重复的条目吗?
根据您配置应用程序的方式,您可能会在索引中看到重复的消息。一个常见的原因是应用程序重启。默认情况下,应用程序配置为从源主题中最早的消息开始读取。当您更改配置时,应用程序会重新启动并再次处理主题中的所有消息。为避免重新处理,请参阅如何使用 source.msk.starting.
我可以向多个 OpenSearch 索引发送数据吗?
不是,该应用程序支持将数据存储到单个 OpenSearch 索引中。要将矢量化输出设置为多个索引,必须为 Apache Flink 应用程序部署单独的托管服务。
我能否在单个应用程序中部署多个实时矢量嵌入应用程序 AWS 账户?
是的, AWS 账户 如果每个应用程序都有唯一的名称,则可以在一个应用程序中部署多个适用于 Apache Flink 应用程序的实时矢量嵌入托管服务。
多个实时矢量嵌入应用程序能否使用相同的数据源或接收器?
是的,您可以为 Apache Flink 应用程序创建多个实时矢量嵌入托管服务,这些应用程序从同一主题读取数据或将数据存储在同一个索引中。
该应用程序是否支持跨账户连接?
不,要使应用程序成功运行,Amazon MSK 集群和集 OpenSearch合必须与您尝试设置 Apache Flink 托管服务应用程序的 AWS 账户 位置相同。
该应用程序是否支持跨区域连接?
不可以,该应用程序仅允许您在Apache Flink托管服务应用程序的同一区域部署带有 Amazon MSK 集群和集 OpenSearch 合的托管服务 Flink 应用程序。
我的 Amazon MSK 集群和 OpenSearch 集合能否位于不同的 VPCs 或子网中?
是的,我们支持 Amazon MSK 集群 VPCs 和不同子网中的集 OpenSearch 合,前提是它们位于同一子网中。 AWS 账户请参阅(常规 MSF 疑难解答),以确保您的设置正确。
该应用程序支持哪些嵌入模型?
目前,该应用程序支持 Bedrock 支持的所有型号。这些指令包括:
-
Amazon Titan Embeddings G1 - Text
-
Amazon Titan 文本嵌入 V2
-
Amazon Titan Multimodal Embeddings G1
-
Cohere Embed(英文版)
-
Cohere Embed(多语版)
我能否根据我的工作负载微调应用程序的性能?
是。应用程序的吞吐量取决于许多因素,所有这些因素都可以由客户控制:
-
AWS MSF KPUs:应用程序采用默认并行度系数 2 和每 KPU 1 的并行度进行部署,并行度已开启自动缩放。但是,我们建议您根据自己的工作负载为适用于 Apache Flink 的托管服务应用程序配置扩展。有关更多信息,请参阅查看 Apache Flink 应用程序资源的托管服务。
-
Amazon Bedrock:根据所选的 Amazon Bedrock 按需模式,可能适用不同的配额。在 Bedrock 中查看服务配额,以查看该服务能够处理的工作负载。有关更多信息,请参阅 Amazon Bedrock 配额。
-
Amazon S OpenSearch ervic e:此外,在某些情况下,您可能会注意到 OpenSearch 这是您的管道中的瓶颈。有关扩展的信息,请参见 OpenSearch 缩放 Amazon OpenSearch 服务域的大小。
支持哪些 Amazon MSK 身份验证类型?
我们仅支持 IAM MSK 身份验证类型。
什么是sink.os.bulkFlushIntervalMillis
,我该如何设置?
向 Amazon Serv OpenSearch ice 发送数据时,批量刷新间隔是批量请求的运行间隔,无论操作的数量或请求的大小如何。默认值设置为 1 毫秒。
虽然设置刷新间隔有助于确保及时为数据编制索引,但如果设置得过低,也会导致开销增加。在选择刷新间隔时,请考虑您的用例以及及时编制索引的重要性。
当我部署适用于 Apache Flink 的托管服务应用程序时,它将从 Amazon MSK 主题的哪一点开始读取消息?
应用程序将开始读取 Amazon MSK 主题中的消息,偏移量由应用程序运行时source.msk.starting.offset
配置中设置的配置指定。如果source.msk.starting.offset
未明确设置,则应用程序的默认行为是从主题中最早的可用消息开始读取。
我该怎么用source.msk.starting.offset
?
根据所需的行为ource.msk.starting.offset
,将 s 显式设置为以下值之一:
-
最早:默认设置,从分区中最旧的偏移量读取。这是一个不错的选择,尤其是在以下情况下:
-
您已经新创建了 Amazon MSK 主题和消费者应用程序。
-
你需要重播数据,这样你才能构建或重建状态。在实现事件来源模式或初始化需要完整数据历史记录视图的新服务时,这很重要。
-
-
最新:适用于 Apache Flink 的托管服务应用程序将从分区末端读取消息。如果您只关心生成新消息并且不需要处理历史数据,我们建议您使用此选项。在此设置中,消费者将忽略现有消息,只读取上游生产者发布的新消息。
-
已提交:适用于 Apache Flink 的托管服务应用程序将开始使用来自消费组已提交偏移量的消息。如果提交的偏移量不存在,则将使用最早的重置策略。
支持哪些分块策略?
我们正在使用语言链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
,如果一行太长,则该行将按句子分块,其中每个块将尽可能多地放入句子中。如果有任何句子太长,那么它将在单词层面上进行分块。如果一个单词太长,那么它将按字符分割。
如何读取矢量数据存储中的记录?
-
什么时候
source.msk.data.type
是STRING
-
original_data:亚马逊 MSK 消息中的完整原始字符串。
-
embedded_data:
chunk_data
如果嵌入向量不为空(应用分块),则从中创建,original_data
如果未应用分块,则从中创建。 -
chunk_data:仅在对原始数据进行分块时才会出现。包含用于在中创建嵌入的原始消息块。
embedded_data
-
-
什么时候
source.msk.data.type
是JSON
-
original_data:应用 JSON 密钥筛选后来自亚马逊 MSK 消息的完整原始 JSON。
-
embedded_data:
chunk_data
如果嵌入向量不为空(应用分块),则从中创建,original_data
如果未应用分块,则从中创建。 -
chunk_key:仅在对原始数据进行分块时才会出现。包含区块来自的 JSON 密钥。
original_data
例如,在的示例中,它可能看起来像jsonKey1.nestedJsonKeyA
嵌套键或元数据original_data
。 -
chunk_data:仅在对原始数据进行分块时才会出现。包含用于在中创建嵌入的原始消息块。
embedded_data
-
是的,您可以使用此应用程序从多个 Amazon MSK 主题中读取数据。来自所有主题的数据必须是相同的类型(STRING 或 JSON),否则可能会导致应用程序失败。来自所有主题的数据始终存储在单个 OpenSearch索引中。
在哪里可以找到源代码的新更新?
前往 https://github.com/awslabs/real-time-vectorization-of-streaming-data/release 查看新版本
我能否更改 AWS CloudFormation 模板并更新适用于 Apache Flink 的托管服务应用程序?
不,更改 AWS CloudFormation 模板不会更新适用于 Apache Flink 的托管服务应用程序。中的任何新变化都 AWS CloudFormation 意味着需要部署新的堆栈。
会代表我 AWS 监控和维护应用程序吗?
不, AWS 不会代表您监控、扩展、更新或修补此应用程序。
此应用程序是否会将我的数据移出我的数据 AWS 账户?
Apache Flink 托管服务应用程序读取和存储的所有数据都保留在您的 AWS 账户 账户中,永远不会离开您的帐户。