本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Nova 內嵌
Amazon Nova 多模態內嵌是代理程式 RAG 和語意搜尋應用程式的多模態內嵌模型。它透過單一模型支援文字、文件、影像、視訊和音訊,啟用跨模式擷取。Nova Multimodal Embeddings 會將每個內容類型映射至統一的語意空間,讓您能夠執行單模態、跨模態和多模態向量操作。
當一段內容透過 Nova 嵌入傳遞時,模型會將該內容轉換為通用數值格式,也稱為向量。向量是一組數值,可用於各種搜尋功能。為類似內容指定的向量比為非類似內容指定的向量更接近。
應用程式:
-
語意內容擷取和建議:為您的內容產生內嵌,然後使用它們來尋找類似的項目或提供個人化的建議。
-
多模態搜尋:結合來自不同內容類型的內嵌,以啟用跨模態搜尋功能。
-
RAG:從多模態內容,例如具有交錯文字和影像的文件產生嵌入,以強化 GenAI 應用程式的擷取工作流程。
主要功能
這些主要功能區分 Nova Embeddings:
-
支援統一語意空間中的文字、影像、文件影像、影片和音訊。內容長度上限為 8K 個字符或 30 秒的視訊和 30 秒的音訊。
-
同步和非同步 API:該 API 支援同步和非同步使用。
-
大型檔案分割:非同步 API 透過為長文字、影片和音訊提供由使用者定義參數控制的 API 內建分割,讓您輕鬆使用大型輸入。模型會為每個區段產生單一嵌入。
-
含音訊的影片:同時處理影片與音訊。如果您想要同時代表模態或兩個個別內嵌的單一內嵌,請指定 。
-
內嵌目的:根據預期的下游應用程式 (retrieval/RAG/Search、分類、叢集) 最佳化內嵌。
-
維度大小:4 個維度大小,用於權衡嵌入準確度和向量儲存成本:3072;1024;384;256。
-
輸入方法:將 S3 URI 或內嵌指定為 base64 編碼,以傳遞要內嵌的內容。
產生內嵌
完成下列操作以產生內嵌。
文字的同步內嵌:
import boto3 import json # Create the Bedrock Runtime client. bedrock_runtime = boto3.client( service_name='bedrock-runtime', region_name='us-east-1', ) # Define the request body. request_body = { 'taskType': 'SINGLE_EMBEDDING', 'singleEmbeddingParams': { 'embeddingPurpose': 'GENERIC_INDEX', 'embeddingDimension': 3072, 'text': {'truncationMode': 'END', 'value': 'Hello, World!'}, }, } try: # Invoke the Nova Embeddings model. response = bedrock_runtime.invoke_model( body=json.dumps(request_body, indent=2), modelId='amazon.nova-2-multimodal-embeddings-v1:0', accept='application/json', contentType='application/json', ) except Exception as e: # Add your own exception handling here. print(e) # Print the request ID. print('Request ID:', response.get('ResponseMetadata').get('RequestId')) # Print the response body. response_body = json.loads(response.get('body').read()) print(json.dumps(response_body, indent=2))
嘗試:
response = bedrock_runtime.invoke_model( body=json.dumps(request_body, indent=2), modelId='amazon.nova-2-multimodal-embeddings-v1:0', accept='application/json', contentType='application/json', ) except Exception as e: print(e) print('Request ID:', response.get('ResponseMetadata').get('RequestId')) response_body = json.loads(response.get('body').read()) print(json.dumps(response_body, indent=2))
影片的非同步內嵌:
import boto3 bedrock_runtime = boto3.client( service_name='bedrock-runtime', region_name='us-east-1', ) model_input = { 'taskType': 'SEGMENTED_EMBEDDING', 'segmentedEmbeddingParams': { 'embeddingPurpose': 'GENERIC_INDEX', 'embeddingDimension': 3072, 'video': { 'format': 'mp4', 'embeddingMode': 'AUDIO_VIDEO_COMBINED', 'source': { 's3Location': {'uri': 's3://my-bucket/path/to/video.mp4'} }, 'segmentationConfig': { 'durationSeconds': 15 # Segment into 15 second chunks }, }, }, }
嘗試:
response = bedrock_runtime.start_async_invoke( modelId='amazon.nova-2-multimodal-embeddings-v1:0', modelInput=model_input, outputDataConfig={ 's3OutputDataConfig': { 's3Uri': 's3://my-bucket' } }, ) except Exception as e: print(e) print('Request ID:', response.get('ResponseMetadata').get('RequestId')) print('Invocation ARN:', response.get('invocationArn'))
批次推論
使用批次推論,您可以提交多個請求並以非同步方式產生內嵌。批次推論可協助您有效率地處理許多請求,方法是傳送單一請求並在 Amazon S3 儲存貯體中產生回應。
-
在建立的檔案中定義模型輸入後,將檔案上傳到 S3 儲存貯體。
-
然後,您提交批次推論請求並指定 S3 儲存貯體。
-
任務完成後,您可以從 S3 擷取輸出檔案。
-
您可以使用批次推論來改善大型資料集上模型推論的效能。
格式化和上傳批次推論資料
您必須將批次推論資料新增至要在提交模型調用任務時選擇或指定的 S3 位置。S3 位置必須符合下列條件:
至少一個定義模型輸入的 JSONL 檔案。JSONL 包含 JSON 物件的資料列。您的 JSONL 檔案必須以副檔名 .jsonl 結尾,且格式如下:
{ "recordId": "record001", "modelInput": { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": 3072, "text": { "source": { "s3Location": { "uri": "s3://batch-inference-input-bucket/text_001.txt", "bucketOwner": "111122223333" } }, "truncationMode": "END" } } } }
支援的輸入檔案類型
-
影像格式:PNG、JPEG、WEBP、GIF
-
音訊格式:MP3、WAV、OGG
-
影片格式:MP4、MOV、MKV、WEBM、FLV、MPEG、MPG、WMV、3GP