Uso de incorporações do Amazon Nova
O Incorporador Multimodal do Amazon Nova é um modelo de incorporação multimodal para aplicações agênticas de RAG e pesquisa semântica. Ele é compatível com texto, documentos, imagens, vídeo e áudio por meio de um único modelo, permitindo a recuperação intermodal. O Incorporador Multimodal do Nova mapeia cada um desses tipos de conteúdo em um espaço semântico unificado, permitindo que os desenvolvedores conduzam operações vetoriais unimodais, intermodais e multimodais.
Quando um conteúdo é processado pelas incorporações do Nova, o modelo converte esse conteúdo em um formato numérico universal, conhecido como vetor. Um vetor é um conjunto de valores numéricos que podem ser usados para várias funcionalidades de pesquisa. Conteúdos semelhantes recebem um vetor mais próximo do que conteúdos menos semelhantes.
Aplicações:
-
Recuperação e recomendação de conteúdo semântico: gere incorporações para seu conteúdo e use-as para encontrar itens semelhantes ou fornecer recomendações personalizadas.
-
Pesquisa multimodal: combine incorporações de diferentes tipos de conteúdo para habilitar recursos de pesquisa intermodal.
-
RAG: gere incorporações a partir de conteúdo multimodal, como documentos com texto e imagens intercalados, para potencializar seu fluxo de trabalho de recuperação para aplicativos GenAI.
Atributos principais
Esses recursos principais se distinguem do Incorporador do Nova:
-
Suporte para texto, imagem, imagem de documento, vídeo e áudio em um espaço semântico unificado. A extensão máxima do contexto é de 8 mil tokens ou 30 segundos de vídeo e 30 segundos de áudio.
-
APIs síncronas e assíncronas: a API suporta o uso síncrono e assíncrono.
-
Segmentação de arquivos grandes: a API assíncrona facilita o trabalho com entradas grandes, fornecendo segmentação criada pela API para texto, vídeo e áudio longos, controlada por parâmetros definidos pelo usuário. O modelo gerará uma única incorporação para cada segmento.
-
Vídeo com áudio: processe vídeo com áudio simultaneamente. Especifique se você deseja uma única incorporação representando as duas modalidades ou duas incorporações separadas.
-
Propósito da incorporação: otimize suas incorporações dependendo da aplicação downstream pretendida (recuperação/RAG/pesquisa, classificação, clustering).
-
Tamanhos das dimensões: 4 tamanhos de dimensão para equilibrar a precisão da incorporação e o custo de armazenamento do vetor: 3072; 1024; 384; 256.
-
Métodos de entrada: transmita o conteúdo a ser incorporado especificando um URI do S3 ou em linha como uma codificação base64.
Geração de incorporações
Conclua as ações abaixo para gerar incorporações.
Incorporação síncrona para texto:
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))
tente:
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))
Incorporação assíncrona para vídeo:
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 }, }, }, }
tente:
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'))
Inferência em lote
Com a inferência em lote, é possível enviar várias solicitações e gerar incorporações de forma assíncrona. A inferência em lote ajuda você a processar muitas solicitações de forma eficaz, enviando uma única solicitação e gerando as respostas em um bucket do Amazon S3.
-
Depois de definir as entradas do modelo em arquivos que você cria, carregue os arquivos em um bucket do S3.
-
Envie uma solicitação de inferência em lote e especifique o bucket do S3.
-
Quando o trabalho for concluído, será possível recuperar os arquivos de saída do S3.
-
É possível usar a inferência em lote para melhorar a performance da inferência de modelos em grandes conjuntos de dados.
Formatar e carregar os dados de inferência
Você deve adicionar seus dados de inferência em lote a um local do S3 que você escolherá ou especificará ao enviar um trabalho de invocação de modelo. O local do S3 deve conter os seguintes itens:
Pelo menos um arquivo JSONL que define as entradas do modelo. Um JSONL que contém linhas de objetos JSON. Seu arquivo JSONL deve terminar com a extensão .jsonl e estar no seguinte formato:
{ "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" } } } }
Tipos de arquivos de entrada compatíveis
-
Formatos de imagem: PNG, JPEG, WEBP, GIF
-
Formatos de áudio: MP3, WAV, OGG
-
Formato de vídeo: MP4, MOV, MKV, WEBM, FLV, MPEG, MPG, WMV, 3GP