完整的嵌入请求和响应架构
完整的同步架构
{ "schemaVersion": "nova-multimodal-embed-v1", "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX" | "GENERIC_RETRIEVAL" | "TEXT_RETRIEVAL" | "IMAGE_RETRIEVAL" | "VIDEO_RETRIEVAL" | "DOCUMENT_RETRIEVAL" | "AUDIO_RETRIEVAL" | "CLASSIFICATION" | "CLUSTERING", "embeddingDimension": 256 | 384 | 1024 | 3072, "text": { "truncationMode": "START" | "END" | "NONE", "value": string, "source": SourceObject, }, "image": { "detailLevel": "STANDARD_IMAGE" | "DOCUMENT_IMAGE", "format": "png" | "jpeg" | "gif" | "webp", "source": SourceObject }, "audio": { "format": "mp3" | "wav" | "ogg", "source": SourceObject }, "video": { "format": "mp4" | "mov" | "mkv" | "webm" | "flv" | "mpeg" | "mpg" | "wmv" | "3gp", "source": SourceObject, "embeddingMode": "AUDIO_VIDEO_COMBINED" | "AUDIO_VIDEO_SEPARATE" } } }
以下列表包含了该请求的所有参数:
-
schemaVersion(可选):多模态嵌入模型请求的架构版本类型:字符串
允许值:"nova-multimodal-embed-v1"
默认值:"nova-multimodal-embed-v1"
-
taskType(必填):指定要对输入内容执行的嵌入操作类型。single_embedding指为每个模型输入生成一个嵌入。segmented_embedding指首先根据用户规格对模型输入进行分段,然后为每个分段生成一个嵌入。类型:字符串
允许值:对于同步调用,必须为 "SINGLE_EMBEDDING"。
-
singleEmbeddingParams(必填)-
embeddingPurpose(必填):Nova Multimodal Embeddings 使您能够根据预期应用优化嵌入。示例包括 MM-RAG、用于图像和视频搜索的数字资产管理、多模态内容的相似度比较或用于智能文档处理的文档分类。您可以通过embeddingPurpose来指定嵌入使用案例。根据以下使用案例选择正确的值。-
搜索和检索:诸如 RAG 和搜索之类的嵌入使用案例涉及两个主要步骤:第一,通过为内容生成嵌入来创建索引;第二,在搜索期间从索引中检索最相关的内容。对于搜索和检索使用案例,请使用以下值:
-
创建索引:
"GENERIC_INDEX":创建经优化的嵌入,用于在向量数据存储中作为索引使用。无论您要为哪种模态创建索引,都应使用此值。
-
搜索/检索:根据要检索的内容类型优化嵌入:
"TEXT_RETREIVEAL":创建经优化的嵌入,用于搜索仅含文本嵌入的存储库。
"IMAGE_RETEIVEL":创建经优化的嵌入,用于搜索仅含使用 "STANDARD_IMAGE" detailLevel 创建的图像嵌入的存储库。
"VIDEO_RETEIVEO_COMBINED":创建经优化的嵌入,用于搜索仅含视频嵌入的存储库,或使用 "AUDIO_VIDEO_COMBINED" 嵌入模式创建的嵌入的存储库。
"DOCUMENT_RETREIVEL":创建经优化的嵌入,用于搜索仅含使用 "DOCUMENT_IMAGE" DetailLevel 创建的文档图像嵌入的存储库。
"AUDIO_RETREIVEAL":创建经优化的嵌入,用于搜索仅含音频嵌入的存储库。
"GENERIC_RETREIVEAL":创建经优化的嵌入,用于搜索包含混合模态嵌入的存储库。
-
示例:在用户使用文本查询来检索图像的图像搜索应用程序中,在基于图像创建嵌入索引时使用
embeddingPurpose = generic_index,而在创建用于检索图像的查询的嵌入时使用embeddingPurpose = image_retrieval。
-
"CLASSIFICATION":创建为执行分类而优化的嵌入。
"CLUSTERING":创建针对聚类进行优化的嵌入。
-
-
embeddingDimension(可选):要生成的向量的大小。类型:int
允许值:256 | 384 | 1024 | 3072
默认值:3072
-
text(可选):表示文本内容。必须存在文本、图像、视频和音频之一。-
truncationMode(必填):指定当文本的令牌化版本超过模型支持的最大值时,将从文本中截断的部分。类型:字符串
允许的值:
"START":必要时省略文本开头的字符。
"END":必要时省略文本末尾的字符。
"NONE":文本长度超过模型的最大令牌限制时操作将会失败。
-
value(可选;必须提供值或来源):要为其创建嵌入的文本值。类型:字符串
长度上限:8192 个字符。
-
source(可选;必须提供值或来源):对存储在 S3 中的文本文件的引用。请注意,SourceObject 的字节选项不适用于文本输入。要以内联方式在请求中传递文本,请改用 value 参数。类型:SourceObject(请参阅“常用对象”部分)
-
-
image(可选):表示图像内容。必须存在文本、图像、视频和音频之一。-
detailLevel(可选):指定处理图像的分辨率,"STANDARD_IMAGE" 使用较低的图像分辨率,"DOCUMENT_IMAGE" 使用更高分辨率的图像来更好地解释文本。类型:字符串
允许值:"STANDARD_IMAGE" | "DOCUMENT_IMAGE"
默认值:"STANDARD_IMAGE"
-
format(必填)类型:字符串
允许值:"png" | "jpeg" | "gif" | "webp"
-
source(必填):图像内容来源。类型:SourceObject(请参阅“常用对象”部分)
-
-
audio(可选):表示音频内容。必须存在文本、图像、视频和音频之一。-
format(必填)类型:字符串
允许值:"mp3" | "wav" | "ogg"
-
source(必填):音频内容来源。类型:SourceObject(请参阅“常用对象”部分)
最大音频长度:30 秒
-
-
video(可选):表示视频内容。必须存在文本、图像、视频和音频之一。-
format(必填)类型:字符串
允许值:"mp4" | "mov" | "mkv" | "webm" | "flv" | "mpeg" | "mpg" | "wmv" | "3gp"
-
source(必填):视频内容来源。类型:SourceObject(请参阅“常用对象”部分)
最大视频长度:30 秒
-
embeddingMode(必填)类型:字符串
值:"AUDIO_VIDEO_COMBINED" | "AUDIO_VIDEO_SEPARATE"
"AUDIO_VIDEO_COMBINED":将生成一个组合听觉和视觉内容的嵌入。
"AUDIO_VIDEO_SEPARATE":将生成两个嵌入,一个用于听觉内容,另一个用于视觉内容。
-
-
InvokeModel 响应正文
当 invokeModel 返回“成功”结果时,响应正文将具有以下结构:
{ "embeddings": [ { "embeddingType": "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "AUDIO_VIDEO_COMBINED", "embedding": number[], "truncatedCharLength": int // Only included if text input was truncated } ] }
以下列表包含了该响应的所有参数:
-
embeddings(必填):对于大多数请求,此数组将包含单个嵌入。对于选择了 "AUDIO_VIDEO_SEPARATE" embeddingMode 模式的视频请求,此数组将包含两个嵌入,一个用于视频内容,另一个用于音频内容。-
类型:具有下列属性的嵌入数组
-
embeddingType(必填):报告创建的嵌入类型。类型:字符串
允许值:"TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "AUDIO_VIDEO_COMBINED"
-
embedding(必填):嵌入向量。类型:数值[]
-
truncatedCharLength(可选):仅适用于文本嵌入请求。输入文本的令牌化版本超出模型的限制时将会返回此响应。该值表示在生成嵌入之前会将其之后的文本截断的字符。类型:int
-
-
完整的异步架构
您可以使用 Amazon Bedrock 运行时 API 函数 StartAsyncInvoke, GetAsyncInvoke 和 ListAsyncInvokes 异步生成嵌入。如果要使用 Nova Embeddings 对长内容(例如长篇文本或长度超过 30 秒的视频和音频)进行分段,则必须使用异步 API。
调用 StartAsyncInvoke 时,必须提供 modelId、outputDataConfig 和 modelInput 参数。
response = bedrock_runtime.start_async_invoke( modelId="amazon.nova-2-multimodal-embeddings-v1:0", outputDataConfig=Data Config, modelInput=Model Input)
outputDataConfig 指定要将生成的输出保存到的 S3 存储桶。它具有以下结构:
{ "s3OutputDataConfig": { "s3Uri": "s3://your-s3-bucket" } }
s3Uri 是目标存储桶的 S3 URI。有关其他可选参数,请参阅 StartAsyncInvoke 文档。
modelInput 参数使用以下结构。
{ "schemaVersion": "nova-multimodal-embed-v1", "taskType": "SEGMENTED_EMBEDDING", "segmentedEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX" | "GENERIC_RETRIEVAL" | "TEXT_RETRIEVAL" | "IMAGE_RETRIEVAL" | "VIDEO_RETRIEVAL" | "DOCUMENT_RETRIEVAL" | "AUDIO_RETRIEVAL" | "CLASSIFICATION" | "CLUSTERING", "embeddingDimension": 256 | 384 | 1024 | 3072, "text": { "truncationMode": "START" | "END" | "NONE", "value": string, "source": { "s3Location": { "uri": "s3://Your S3 Object" } }, "segmentationConfig": { "maxLengthChars": int } }, "image": { "format": "png" | "jpeg" | "gif" | "webp", "source": SourceObject, "detailLevel": "STANDARD_IMAGE" | "DOCUMENT_IMAGE" }, "audio": { "format": "mp3" | "wav" | "ogg", "source": SourceObject, "segmentationConfig": { "durationSeconds": int } }, "video": { "format": "mp4" | "mov" | "mkv" | "webm" | "flv" | "mpeg" | "mpg" | "wmv" | "3gp", "source": SourceObject, "embeddingMode": "AUDIO_VIDEO_COMBINED" | "AUDIO_VIDEO_SEPARATE", "segmentationConfig": { "durationSeconds": int } } } }
以下列表包含了该请求的所有参数:
-
schemaVersion(可选):多模态嵌入模型请求的架构版本类型:字符串
允许值:"nova-multimodal-embed-v1"
默认值:"nova-multimodal-embed-v1"
-
taskType(必填):指定要对输入内容执行的嵌入操作类型。single_embedding指为每个模型输入生成一个嵌入。segmented_embedding指首先根据用户规格对模型输入进行分段,然后为每个分段生成一个嵌入。类型:字符串
允许值:对于异步调用必须为 "SEGMENTED_EMBEDDING"。
-
segmentedEmbeddingParams(必填)-
embeddingPurpose(必填):Nova Multimodal Embeddings 使您能够根据预期应用优化嵌入。示例包括 MM-RAG、用于图像和视频搜索的数字资产管理、多模态内容的相似度比较或用于智能文档处理的文档分类。您可以通过embeddingPurpose来指定嵌入使用案例。根据以下使用案例选择正确的值。-
搜索和检索:诸如 RAG 和搜索之类的嵌入使用案例涉及两个主要步骤:第一,通过为内容生成嵌入来创建索引;第二,在搜索期间从索引中检索最相关的内容。对于搜索和检索使用案例,请使用以下值:
-
创建索引:
"GENERIC_INDEX":创建经优化的嵌入,用于在向量数据存储中作为索引使用。无论您要为哪种模态创建索引,都应使用此值。
-
搜索/检索:根据要检索的内容类型优化嵌入:
"TEXT_RETREIVEAL":创建经优化的嵌入,用于搜索仅含文本嵌入的存储库。
"IMAGE_RETEIVEL":创建经优化的嵌入,用于搜索仅含使用 "STANDARD_IMAGE" detailLevel 创建的图像嵌入的存储库。
"VIDEO_RETEIVEO_COMBINED":创建经优化的嵌入,用于搜索仅含视频嵌入的存储库,或使用 "AUDIO_VIDEO_COMBINED" 嵌入模式创建的嵌入的存储库。
"DOCUMENT_RETREIVEL":创建经优化的嵌入,用于搜索仅含使用 "DOCUMENT_IMAGE" DetailLevel 创建的文档图像嵌入的存储库。
"AUDIO_RETREIVEAL":创建经优化的嵌入,用于搜索仅含音频嵌入的存储库。
"GENERIC_RETREIVEAL":创建经优化的嵌入,用于搜索包含混合模态嵌入的存储库。
-
示例:在用户使用文本查询来检索图像的图像搜索应用程序中,在基于图像创建嵌入索引时使用
embeddingPurpose = generic_index,而在创建用于检索图像的查询的嵌入时使用embeddingPurpose = image_retrieval。
-
"CLASSIFICATION":创建为执行分类而优化的嵌入。
"CLUSTERING":创建针对聚类进行优化的嵌入。
-
-
embeddingDimension(可选):要生成的向量的大小。类型:int
允许值:256 | 384 | 1024 | 3072
默认值:3072
-
text(可选):表示文本内容。必须存在文本、图像、视频和音频之一。-
truncationMode(必填):指定当文本的令牌化版本超过模型支持的最大值时,将从文本中截断的部分。类型:字符串
允许的值:
"START":必要时省略文本开头的字符。
"END":必要时省略文本末尾的字符。
"NONE":文本长度超过模型的最大令牌限制时操作将会失败。
-
value(可选;必须提供值或来源):要为其创建嵌入的文本值。类型:字符串
长度上限:8192 个字符。
-
source(可选;必须提供值或来源):对存储在 S3 中的文本文件的引用。请注意,SourceObject 的字节选项不适用于文本输入。要以内联方式在请求中传递文本,请改用 value 参数。 -
segmentationConfig(必填):控制如何将文本内容分段为多个嵌入。-
maxLengthChars(可选):每个分段允许的最大长度。模型将尝试仅在单词边界处进行分段。类型:int
有效范围:800-50,000
默认值:32000
-
-
-
image(可选):表示图像内容。必须存在文本、图像、视频和音频之一。-
format(必填)类型:字符串
允许值:"png" | "jpeg" | "gif" | "webp"
-
source(必填):图像内容来源。类型:SourceObject(请参阅“常用对象”部分)
-
detailLevel(可选):指定处理图像的分辨率,"STANDARD_IMAGE" 使用较低的图像分辨率,"DOCUMENT_IMAGE" 使用更高分辨率的图像来更好地解释文本。类型:字符串
允许值:"STANDARD_IMAGE" | "DOCUMENT_IMAGE"
默认值:"STANDARD_IMAGE"
-
-
audio(可选):表示音频内容。必须存在文本、图像、视频和音频之一。-
format(必填)类型:字符串
允许值:"mp3" | "wav" | "ogg"
-
source(必填):音频内容来源。类型:SourceObject(请参阅“常用对象”部分)
-
segmentationConfig(必填):控制如何将音频内容分段为多个嵌入。-
durationSeconds(可选):用于每个分段的最大音频时长(以秒为单位)。类型:int
有效范围:1-30
默认:5
-
-
-
video(可选):表示视频内容。必须存在文本、图像、视频和音频之一。-
format(必填)类型:字符串
允许值:"mp4" | "mov" | "mkv" | "webm" | "flv" | "mpeg" | "mpg" | "wmv" | "3gp"
-
source(必填):视频内容来源。类型:SourceObject(请参阅“常用对象”部分)
-
embeddingMode(必填)类型:字符串
值:"AUDIO_VIDEO_COMBINED" | "AUDIO_VIDEO_SEPARATE"
"AUDIO_VIDEO_COMBINED":将为每个分段生成一个组合听觉和视觉内容的嵌入。
"AUDIO_VIDEO_SEPARATE":将为每个分段生成两个嵌入,一个用于音频内容,另一个用于视频内容。
-
segmentationConfig(必填):控制如何将视频内容分段为多个嵌入。-
durationSeconds(可选):用于每个分段的最大视频时长(以秒为单位)。类型:int
有效范围:1-30
默认:5
-
-
-
StartAsyncInvoke 响应
调用 StartAsyncInvoke 时的响应将具有以下结构。invocationArn 可用于通过 GetAsyncInvoke 函数查询异步作业的状态。
{ "invocationArn": "arn:aws:bedrock:us-east-1:xxxxxxxxxxxx:async-invoke/lvmxrnjf5mo3", }
异步输出
异步嵌入生成完成后,输出构件将会写入您指定为输出目标的 S3 存储桶。文件的结构如下:
amzn-s3-demo-bucket/job-id/ segmented-embedding-result.json embedding-audio.jsonl embedding-image.json embedding-text.jsonl embedding-video.jsonl manifest.json
segmented-embedding-result.json 将包含总体作业结果以及对相应 jsonl 文件的引用,后者包含每种模态的实际嵌入。以下是对文件进行截断对示例:
{ "sourceFileUri": string, "embeddingDimension": 256 | 384 | 1024 | 3072, "embeddingResults": [ { "embeddingType": "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "AUDIO_VIDEO_COMBINED", "status": "SUCCESS" | "FAILURE" | "PARTIAL_SUCCESS", "failureReason": string, // Granular error codes "message": string, // Human-readbale failure message "outputFileUri": string // S3 URI to a "embedding-modality.jsonl" file } ... ] }
embedding- 将是包含每种模态的嵌入输出的 jsonl 文件。该 jsonl 文件中的每一行都将遵循以下架构:modality.json
{ "embedding": number[], // The generated embedding vector "segmentMetadata": { "segmentIndex": number, "segmentStartCharPosition": number, // Included for text only "segmentEndCharPosition": number, // Included for text only "truncatedCharLength": number, // Included only when text gets truncated "segmentStartSeconds": number, // Included for audio/video only "segmentEndSeconds": number // Included for audio/video only }, "status": "SUCCESS" | "FAILURE", "failureReason": string, // Granular error codes "message": string // Human-readable failure message }
以下列表包含了该响应的所有参数。对于文本字符或音频/视频时间,所有开始和结束时间均从零开始计算。此外,所有结束文本位置或音频/视频时间值都包括本数。
-
embedding(必填):嵌入向量。-
类型:数字
-
-
segmentMetadata:分段的元数据。-
segmentIndex:请求中所提供数组中分段的索引。 -
segmentStartCharPosition:仅限文本。分段中嵌入内容的起始字符位置(含本数)。 -
segmentEndCharPosition:仅限文本。分段中嵌入内容的结束字符位置(不含本数)。 -
truncatedCharLength(可选):输入文本的令牌化版本超出模型的限制时将会返回此响应。该值表示在生成嵌入之前会将其之后的文本截断的字符。-
类型:整数
-
-
segmentStartSeconds:仅限音频/视频。分段中嵌入内容的开始时间位置。 -
segmentEndSeconds:仅限音频/视频。分段中嵌入内容的结束时间位置。
-
-
status:分段的状态。 -
failureReason:分段失败的详细原因。-
RAI_VIOLATION_INPUT_TEXT_DEFLECTION:输入文本违反了 RAI 政策。 -
RAI_VIOLATION_INPUT_IMAGE_DEFLECTION:输入图像违反了 RAI 政策。 -
INVALID_CONTENT:输入无效。 -
RATE_LIMIT_EXCEEDED:由于服务不可用,嵌入请求被节流。 -
INTERNAL_SERVER_EXCEPTION:出现问题。
-
-
message:相关失败消息。
Nova Embeddings 的文件限制
同步操作既可以接受 S3 输入,也可以接受内联块。异步操作只能接受 S3 输入。
异步生成嵌入时,您需要确保将文件分成适当数量的分段。对于文本嵌入,分段不能超过 1900 个。对于音频和视频嵌入,分段不能超过 1434 个。
|
文件类型 |
大小限制 |
|---|---|
|
(内联)所有文件类型 |
25MB |
|
(S3)文本 |
1 MB;50000 个字符 |
|
(S3)图像 |
50 MB |
|
(S3)视频 |
30 秒;100 MB |
|
(S3)音频 |
30 秒;100 MB |
注意
25 MB 的内联文件限制在嵌入 Base64 之后适用。这导致文件大小膨胀了大约 33%
|
文件类型 |
大小限制 |
|---|---|
|
(S3)文本 |
634MB |
|
(S3)图像 |
50 MB |
|
(S3)视频 |
2 GB;2 小时 |
|
(S3)音频 |
1 GB;2 小时 |
|
模式 |
文件类型 |
|---|---|
|
映像格式 |
PNG、JPEG、WEBP、GIF |
|
音频格式 |
MP3、WAV、OGG |
|
视频格式 |
MP4、MOV、MKV、WEBM、FLV、MPEG、MPG、WMV、3GP |