TwelveLabs Marengo Embed 3.0 - Amazon Bedrock

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à.

TwelveLabs Marengo Embed 3.0

Il TwelveLabs Marengo Embed 3.0 modello genera incorporamenti avanzati da input di video, testo, audio o immagini. Quest'ultima versione offre prestazioni e precisione migliorate per la ricerca di similarità, il clustering e altre attività di apprendimento automatico.

  • Fornitore: TwelveLabs

  • ID modello: twelvelabs.marengo-embed-3-0-v1:0

Marengo Embed 3.0 offre diversi miglioramenti chiave:

  • Capacità di elaborazione video estesa: elabora fino a 4 ore di contenuti video e audio. I file possono pesare fino a 6 GB, ovvero il doppio della capacità delle versioni precedenti. Ciò lo rende ideale per analizzare eventi sportivi completi, video di allenamento prolungati e produzioni cinematografiche complete.

  • Analisi sportiva avanzata: il modello offre miglioramenti significativi. Fornisce una migliore comprensione delle dinamiche di gioco, dei movimenti dei giocatori e del rilevamento degli eventi.

  • Supporto multilingue globale: funzionalità linguistiche estese da 12 a 36 lingue. Ciò consente alle organizzazioni globali di creare sistemi di ricerca e recupero unificati che funzionano perfettamente in diverse regioni e mercati.

  • Precisione della ricerca multimodale: combina immagini e testo descrittivo in un'unica richiesta di incorporamento. Ciò unisce la somiglianza visiva con la comprensione semantica per fornire risultati di ricerca più accurati e contestualmente pertinenti.

  • Dimensione di incorporamento ridotta: ridotta da 1024 a 512, il che può aiutare a ridurre i costi di archiviazione.

Il modello TwelveLabs Marengo Embed 3.0 supporta le operazioni di runtime per Amazon Bedrock riportate nella tabella seguente.

Operazione API Tipi di modelli supportati Modalità di input Modalità di output

InvokeModel

Stati Uniti orientali (Virginia settentrionale): modelli di base e profili di inferenza

Europa (Irlanda) — Profili di inferenza

Asia Pacifico (Seoul) - Modelli base

Testo

Immagine

Nota: sono supportati anche testo e immagini interlacciati.

Embedding

StartAsyncInvoke Modelli base

Video

Audio

Immagine

Testo

Nota: sono supportati anche testo e immagini interlacciati.

Embedding

Nota

Utilizzare InvokeModel per generare embedding per la query di ricerca. Utilizzare StartAsyncInvoke per generare embedding per risorse su larga scala.

All’input si applicano i seguenti limiti:

Modalità di input Massimo
Testo 500 gettoni
Immagine 5 MB per immagine
Video (S3) 6 GB, durata 4 ore
Audio (S3) 6 GB, durata 4 ore
Nota

Se si definiscono audio o video inline utilizzando la codifica base64, assicurarsi che il payload del corpo della richiesta non superi la quota di invocazione del modello Amazon Bedrock di 25 MB.

Parametri delle richieste di TwelveLabs Marengo Embed 3.0

Quando si effettua una richiesta, il campo in cui viene specificato l’input specifico del modello dipende dall’operazione dell’API:

Il formato dell’input del modello dipende dalla modalità di input:

Text
{ "inputType": "text", "text": { "inputText": "string" } }
Image
{ "inputType": "image", "image": { "mediaSource": { "base64String": "base64-encoded string", // base64String OR s3Location, exactly one "s3Location": { "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg", "bucketOwner": "123456789012" } } } }
Text & image
{ "inputType": "text_image", "text_image": { "inputText": "man walking a dog", "mediaSource": { "base64String": "base64-encoded string", // base64String OR s3Location, exactly one "s3Location": { "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg", "bucketOwner": "123456789012" } } } }
Audio
{ "inputType": "audio", "audio": { "mediaSource": { "base64String": "base64-encoded string", // base64String OR s3Location, exactly one "s3Location": { "uri": "s3://amzn-s3-demo-bucket/audio/a.wav", "bucketOwner": "123456789012" } }, "startSec": 0, "endSec": 6, "segmentation": { "method": "fixed", "fixed": { "durationSec": 6 } }, "embeddingOption": [ "audio", "transcription" ], // optional, default=both "embeddingScope": [ "clip", "asset" ] // optional, one or both } }
Video
{ "inputType": "video", "video": { "mediaSource": { "base64String": "base64-encoded string", // base64String OR s3Location, exactly one "s3Location": { "uri": "s3://amzn-s3-demo-bucket/video/clip.mp4", "bucketOwner": "123456789012" } }, "startSec": 0, "endSec": 6, "segmentation": { "method": "dynamic", // dynamic OR fixed, exactly one "dynamic": { "minDurationSec": 4 } "method": "fixed", "fixed": { "durationSec": 6 } }, "embeddingOption": [ "visual", "audio", "transcription" ], // optional, default=all "embeddingScope": [ "clip", "asset" ] // optional, one or both }, "inferenceId": "some inference id" }

Espandi le seguenti sezioni per ulteriori informazioni sui parametri di input:

Modalità per l’embedding.

  • Tipo: stringa

  • Obbligatorio:

  • Valori validi: text | image | text_image | audio | video

Testo da incorporare.

  • Tipo: stringa

  • Obbligatorio: sì (per i tipi di input compatibili)

  • Tipi di input compatibili: testo

Contiene informazioni sull’origine multimediale.

  • Tipo: oggetto

  • Obbligatorio: sì (se il tipo è compatibile)

  • Tipi di input compatibili: immagine, video, audio

Il formato dell’oggetto mediaSource nel corpo della richiesta dipende se il file multimediale è definito come stringa codificata in Base64 o come posizione S3.

  • Stringa con codifica Base64

    { "mediaSource": { "base64String": "base64-encoded string" } }
    • base64String: stringa con codifica Base64 per il file multimediale.

  • Posizione S3: specifica l'URI S3 e il proprietario del bucket.

    { "s3Location": { "uri": "string", "bucketOwner": "string" } }
    • uri: URI S3 contenente il file multimediale.

    • bucketOwner— L'ID dell'AWSaccount del proprietario del bucket S3.

Specifica i tipi di embedding da recuperare.

  • Tipo: elenco

  • Obbligatorio: no

  • Valori validi per i membri dell’elenco:

    • visual— Incorporamenti visivi tratti dal video.

    • audio: embedding dell’audio nel video.

    • transcription— Incorporamenti del testo trascritto.

  • Valore predefinito:

    • Video: ["visivo», «audio», «trascrizione"]

    • Audio: ["audio», «trascrizione"]

  • Tipi di input compatibili: video, audio

Specifica l'ambito degli incorporamenti da recuperare.

  • Tipo: elenco

  • Obbligatorio: no

  • Valori validi per i membri dell’elenco:

    • clip— Restituisce gli incorporamenti per ogni clip.

    • asset— Restituisce gli incorporamenti per l'intera risorsa.

  • Tipi di input compatibili: video, audio

Punto temporale in secondi del clip in cui deve iniziare l’elaborazione.

  • Tipo: numero a doppia precisione

  • Obbligatorio: no

  • Valore minimo: 0

  • Valore predefinito: 0

  • Tipi di input compatibili: video, audio

Il punto temporale in secondi in cui deve terminare l'elaborazione.

  • Tipo: numero a doppia precisione

  • Obbligatorio: no

  • Valore minimo: StartSec + lunghezza del segmento

  • Valore massimo: durata del file multimediale

  • Valore predefinito: durata del file multimediale

  • Tipi di input compatibili: video, audio

Definisce il modo in cui i file multimediali vengono suddivisi in segmenti per la generazione di incorporamenti.

  • Tipo: oggetto

  • Obbligatorio: no

  • Tipi di input compatibili: video, audio

L'oggetto di segmentazione contiene un method campo e parametri specifici del metodo:

  • method— Il metodo di segmentazione da utilizzare. Valori validi: dynamic | fixed

  • dynamic— Per i video, utilizza il rilevamento dei limiti delle riprese per dividere i contenuti in modo dinamico. Contiene:

    • minDurationSec— Durata minima per ogni segmento in secondi. Tipo: Integer. Intervallo: 1-5. Valore predefinito: 4.

  • fixed— Divide il contenuto in segmenti di uguale durata. Contiene:

    • durationSec— Durata di ogni segmento in secondi. Tipo: Integer. Intervallo: 1-10. Valore predefinito: 6.

Comportamento predefinito:

  • Video: utilizza la segmentazione dinamica con il rilevamento dei limiti delle riprese.

  • Audio: utilizza la segmentazione fissa. Il contenuto viene suddiviso nel modo più uniforme possibile con segmenti di durata prossima ai 10 secondi.

Identificatore univoco per la richiesta di inferenza.

  • Tipo: stringa

  • Obbligatorio: no

Risposta di TwelveLabs Marengo Embed 3.0

La posizione degli embedding di output e dei metadati associati dipende dal metodo di invocazione:

  • InvokeModel — Nel corpo della risposta.

  • StartAsyncInvoke — Nel bucket S3 definito ins3OutputDataConfig, dopo il completamento del processo di invocazione asincrona.

Se sono presenti più vettori di embedding, l’output è un elenco di oggetti, ciascuno contenente un vettore e i relativi metadati associati.

Il formato del vettore degli embedding di output è il seguente:

{ "data": { "embedding": [ 0.111, 0.234, ... ], "embeddingOption": ["visual", "audio", "transcription" (for video input) | "audio", "transcription" (for audio input)], "embeddingScope": ["asset" | "clip"], "startSec": 0, "endSec": 4.2 } }

Gli incorporamenti vengono restituiti come una matrice di float.

La posizione in cui vedi questa risposta dipende dal metodo API che hai utilizzato:

  • InvokeModel — Viene visualizzato nel corpo della risposta.

  • StartAsyncInvoke — Viene visualizzato nella posizione S3 specificata nella richiesta. La risposta restituisce uninvocationArn. Puoi usarlo per ottenere metadati sulla chiamata asincrona. Ciò include lo stato e la posizione S3 in cui vengono scritti i risultati.

Espandere le seguenti sezioni per ulteriori informazioni sui parametri della risposta:

Rappresentazione dei vettori di embedding dell’input.

  • Tipo: elenco di numeri a doppia precisione

Tipo di embedding.

  • Tipo: stringa

  • Valori possibili:

    • visivo: incorporamenti visivi del video.

    • audio: incorporamenti dell'audio nel video.

    • trascrizione — Incorporamenti del testo trascritto.

  • Tipi di input compatibili: video, audio

Specifica l'ambito degli incorporamenti da recuperare.

  • Tipo: stringa

È possibile includere uno o più dei seguenti valori:

  • clip: restituisce gli incorporamenti per ogni clip.

  • asset: restituisce gli incorporamenti per l'intera risorsa.

Offset iniziale del clip.

  • Tipo: numero a doppia precisione

  • Tipi di input compatibili: video, audio

L'offset finale della clip. Non applicabile per gli incorporamenti di testo, immagini e text_image.

  • Tipo: numero a doppia precisione

  • Tipi di input compatibili: video, audio

Esempi di codice di TwelveLabs Marengo Embed 3.0

Questa sezione mostra come utilizzare il modello TwelveLabs Marengo Embed 3.0 con diversi tipi di input utilizzando Python. Gli esempi mostrano come definire l'input specifico del modello ed eseguire le chiamate del modello.

Nota

InvokeModel supporta testo, immagini e testo con input interlacciato da immagini. Per l'input video e audio, usa. StartAsyncInvoke

Assemblare il codice seguendo questa procedura:

1. Definisci l’input specifico del modello

Definire l’input specifico del modello in base al tipo di input:

Text
# Create the model-specific input model_id = "twelvelabs.marengo-embed-3-0-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0" model_input = { "inputType": "text", "text": { "inputText": "man walking a dog" } }
Image
# Create the model-specific input model_id = "twelvelabs.marengo-embed-3-0-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0" model_input = { "inputType": "image", "image": { "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my_image.png", "bucketOwner": "123456789012" } } } }
Text & image
# Create the model-specific input model_id = "twelvelabs.marengo-embed-3-0-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0" model_input = { "inputType": "text_image", "text_image": { "inputText": "man walking a dog", "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my_image.jpg", "bucketOwner": "123456789012" } } } }
Audio
# Create the model-specific input model_id = "twelvelabs.marengo-embed-3-0-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0" model_input = { "inputType": "audio", "audio": { "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my-audio.wav", "bucketOwner": "123456789012" } }, "startSec": 0, "endSec": 5, "segmentation": { "method": "fixed", "fixed": { "durationSec": 5 } }, "embeddingScope": ["clip", "asset"], "embeddingOption": ["audio"] } }
Video
# Create the model-specific input model_id = "twelvelabs.marengo-embed-3-0-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0" model_input = { "inputType": "video", "video": { "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my-video.mp4", "bucketOwner": "123456789012" } }, "startSec": 10, "endSec": 20, "segmentation": { "method": "fixed", "fixed": { "durationSec": 5 } }, "embeddingOption": [ "visual", "audio" ], "embeddingScope": [ "clip", "asset" ] } }
2. Eseguire l’invocazione del modello utilizzando l’input del modello

Poi aggiungere il frammento di codice che corrisponde al metodo di invocazione del modello scelto.

InvokeModel
# Run model invocation with InvokeModel import boto3 import json # Initialize the Bedrock Runtime client client = boto3.client('bedrock-runtime') # Make the request response = client.invoke_model( modelId=inference_profile_id, body=json.dumps(model_input) ) # Print the response body response_body = json.loads(response['body'].read().decode('utf-8')) print(response_body)
StartAsyncInvoke
# Run model invocation asynchronously import boto3 import json # Initalize the Bedrock Runtime client. client = boto3.client("bedrock-runtime") try: # Start the asynchronous job invocation = client.start_async_invoke( modelId=model_id, modelInput=model_input, outputDataConfig={ "s3OutputDataConfig": { "s3Uri": "s3://amzn-s3-demo-bucket" } } ) # Print the response JSON print("Response:") print(json.dumps(invocation, indent=2, default=str)) except Exception as e: # Implement error handling here. message = e.response["Error"]["Message"] print(f"Error: {message}")