

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo degli incorporamenti Amazon Nova


Amazon Nova Multimodal Embeddings è un modello di incorporamento multimodale per RAG agentici e applicazioni di ricerca semantica. Supporta testo, documenti, immagini, video e audio attraverso un unico modello, che consente il recupero intermodale. Nova Multimodal Embeddings mappa ciascuno di questi tipi di contenuto in uno spazio semantico unificato, consentendovi di condurre operazioni vettoriali unimodali, intermodali e multimodali.

Quando un contenuto viene passato attraverso gli embedding Nova, il modello converte quel contenuto in un formato numerico universale, denominato vettore. Un vettore è un insieme di valori numerici che possono essere utilizzati per varie funzionalità di ricerca. Ai contenuti simili viene assegnato un vettore più ravvicinato rispetto ai contenuti meno simili. 

 Applicazioni:
+ Recupero e raccomandazione di contenuti semantici: genera incorporamenti per i tuoi contenuti, quindi usali per trovare articoli simili o fornire consigli personalizzati. 
+ Ricerca multimodale: combina gli incorporamenti di diversi tipi di contenuto per abilitare funzionalità di ricerca intermodale.
+ RAG: genera embedding da contenuti multimodali, come documenti con testo e immagini interleaved, per potenziare il flusso di lavoro di recupero per le applicazioni GenAI.

## Funzionalità principali


 Queste caratteristiche chiave contraddistinguono Nova Embeddings: 
+ Support per testo, immagini, immagini di documenti, video e audio in uno spazio semantico unificato. La lunghezza massima del contesto è di 8K token o 30 secondi di video e 30 secondi di audio.
+ Sincrono e asincrono APIs: l'API supporta sia l'uso sincrono che asincrono.
+ Segmentazione di file di grandi dimensioni: l’API asincrona semplifica la gestione di input di grandi dimensioni fornendo una segmentazione integrata nell’API per testi lunghi, video e audio, controllata da parametri definiti dall’utente. Il modello genererà un singolo embedding per ogni segmento.
+ Video con audio: elaborazione simultanea di video e audio. Specificate se desiderate un singolo incorporamento che rappresenti entrambe le modalità o due incorporamenti separati. 
+ Scopo dell'incorporamento: ottimizza gli incorporamenti in base all'applicazione downstream prevista (retrieval/RAG/Searchclassificazione, clustering). 
+ Dimensioni: 4 dimensioni per bilanciare la precisione di embedding e il costo di archiviazione dei vettori: 3072; 1024; 384; 256.
+ Metodi di input: trasferisci il contenuto da incorporare specificando un URI S3 o in linea come codifica base64.

## Generazione di incorporamenti


 Completa quanto segue per generare incorporamenti. 

Incorporamento sincrono per il testo: 

```
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))
```

 prova: 

```
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))
```

 Incorporamento asincrono per video: 

```
 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 
            }, 
        }, 
    }, 
}
```

 prova: 

```
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'))
```

**Inferenza in batch**

 Con l'inferenza in batch, puoi inviare più richieste e generare incorporamenti in modo asincrono. L'inferenza in batch ti aiuta a elaborare molte richieste in modo efficiente inviando una singola richiesta e generando risposte in un bucket Amazon S3. 
+  Dopo aver definito gli input del modello nei file creati, i file verranno caricati in un bucket S3. 
+  A questo punto, invia una richiesta di inferenza in batch e specifica il bucket S3. 
+ Al termine del processo, puoi recuperare i file di output da S3. 
+  Puoi utilizzare l'inferenza in batch per migliorare le prestazioni dell'inferenza del modello su set di dati di grandi dimensioni. 

**Formatta e carica i dati di inferenza in batch**

I dati per l’inferenza in batch devono essere aggiunti a una posizione S3 da scegliere o specificare quando invii un processo di invocazione del modello. La sede S3 deve contenere i seguenti elementi: 

 Almeno un file JSONL che definisce gli input del modello. Un JSONL contiene righe di oggetti JSON. Il file JSONL deve terminare con l’estensione .jsonl ed avere il seguente 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"
            }
        }
    }
}
```

**Tipi di file di input supportati**
+ Formati di immagine: PNG, JPEG, WEBP, GIF
+ Formati audio: WAV MP3, OGG
+ Formati video: MOV MP4, MKV, WEBM, FLV, MPEG, MPG, WMV, 3GP