View a markdown version of this page

Uso de incorporações do Amazon Nova - Amazon Nova

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