TwelveLabs Marengo Embed 3.0 - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

TwelveLabs Marengo Embed 3.0

Le TwelveLabs Marengo Embed 3.0 modèle génère des intégrations améliorées à partir d'entrées vidéo, texte, audio ou image. Cette dernière version offre des performances et une précision améliorées pour la recherche de similarités, le clustering et d'autres tâches d'apprentissage automatique.

  • Fournisseur — TwelveLabs

  • ID du modèle : twelvelabs.marengo-embed-3-0-v1:0

Marengo Embed 3.0 apporte plusieurs améliorations clés :

  • Capacité de traitement vidéo étendue : traitez jusqu'à 4 heures de contenu vidéo et audio. Les fichiers peuvent atteindre 6 Go, soit le double de la capacité des versions précédentes. Il est donc idéal pour analyser des événements sportifs complets, des vidéos de formation étendues et des productions cinématographiques complètes.

  • Analyse sportive améliorée — Le modèle apporte des améliorations significatives. Il permet de mieux comprendre la dynamique du jeu, les mouvements des joueurs et la détection des événements.

  • Support multilingue mondial — Capacités linguistiques étendues de 12 à 36 langues. Cela permet aux organisations internationales de créer des systèmes de recherche et de récupération unifiés qui fonctionnent parfaitement dans divers marchés et régions.

  • Précision de recherche multimodale : combinez des images et du texte descriptif dans une seule demande d'intégration. Cela combine similarité visuelle et compréhension sémantique pour fournir des résultats de recherche plus précis et contextuellement pertinents.

  • Dimension d'intégration réduite : réduction de 1024 à 512, ce qui peut contribuer à réduire les coûts de stockage.

Le modèle TwelveLabs Marengo Embed 3.0 prend en charge les opérations d’exécution d’Amazon Bedrock décrites dans le tableau suivant.

Opération API Types de nœuds pris en charge Modalités d’entrée Modalités de sortie

InvokeModel

USA Est (Virginie du Nord) — Modèles de base et profils d'inférence

Europe (Irlande) — Profils d'inférence

Asie-Pacifique (Séoul) - Modèles de base

Texte

Image

Remarque : Le texte et l'image entrelacés sont également pris en charge.

Vectorisation

StartAsyncInvoke Modèles de base

Vidéo

Audio

Image

Texte

Remarque : Le texte et l'image entrelacés sont également pris en charge.

Vectorisation

Note

Utilisez InvokeModel pour générer des vectorisations pour une requête de recherche. Utilisez StartAsyncInvoke pour générer des vectorisations pour des actifs à grande échelle.

Les quotas suivants s’appliquent à l’entrée :

Modalité d’entrée Maximum
Texte 500 jetons
Image 5 Mo par image
Vidéo (S3) 6 Go, durée de 4 heures
Audio (S3) 6 Go, durée de 4 heures
Note

Si vous définissez l’audio ou la vidéo en ligne à l’aide du codage Base64, assurez-vous que les données utiles du corps de la demande ne dépassent pas le quota d’invocation du modèle Amazon Bedrock de 25 Mo.

Paramètres de demande TwelveLabs Marengo Embed 3.0

Lorsque vous faites une demande, le champ dans lequel l’entrée spécifique au modèle est spécifiée dépend du fonctionnement de l’API :

Le format de l’entrée du modèle dépend de la modalité d’entrée :

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" }

Développez les sections suivantes pour obtenir des détails sur les paramètres d’entrée :

Modalité de la vectorisation.

  • Type : chaîne

  • Obligatoire : oui

  • Valeurs valides : text | image | text_image | audio | video

Texte à vectoriser.

  • Type : chaîne

  • Obligatoire : oui (pour les types d’entrée compatibles)

  • Types d’entrée compatibles : texte

Contient des informations concernant la source du média.

  • Type : objet

  • Obligatoire : oui (si le type est compatible)

  • Types d’entrées compatibles : image, vidéo, audio

Le format de l’objet mediaSource dans le corps de la demande varie selon que le média est défini comme une chaîne codée en Base64 ou comme un emplacement S3.

  • Chaîne codée en Base64

    { "mediaSource": { "base64String": "base64-encoded string" } }
    • base64String : chaîne codée en Base64 pour le média.

  • Emplacement S3 — Spécifiez l'URI S3 et le propriétaire du compartiment.

    { "s3Location": { "uri": "string", "bucketOwner": "string" } }
    • uri : URI S3 contenant le média.

    • bucketOwner— L'ID de AWS compte du propriétaire du compartiment S3.

Spécifie les types de vectorisations à extraire.

  • Type : liste

  • Obligatoire : non

  • Valeurs valides pour les membres de la liste :

    • visual— Intégrations visuelles issues de la vidéo.

    • audio : vectorisation de l’audio dans la vidéo.

    • transcription— Insertions du texte transcrit.

  • Valeur par défaut :

    • Vidéo : ["visuel », « audio », « transcription"]

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

  • Types d’entrées compatibles : vidéo, audio

Spécifie l'étendue des intégrations à récupérer.

  • Type : liste

  • Obligatoire : non

  • Valeurs valides pour les membres de la liste :

    • clip— Renvoie les intégrations pour chaque clip.

    • asset— Renvoie les intégrations pour l'ensemble de l'actif.

  • Types d’entrées compatibles : vidéo, audio

Point temporel du clip, en secondes, auquel le traitement doit commencer.

  • Type : double

  • Obligatoire : non

  • Valeur minimale : 0

  • Valeur par défaut : 0

  • Types d’entrées compatibles : vidéo, audio

Moment en secondes auquel le traitement doit prendre fin.

  • Type : double

  • Obligatoire : non

  • Valeur minimale : StartSec + longueur du segment

  • Valeur maximale : Durée du média

  • Valeur par défaut : durée du média

  • Types d’entrées compatibles : vidéo, audio

Définit la manière dont le média est divisé en segments pour l'intégration de la génération.

  • Type : objet

  • Obligatoire : non

  • Types d’entrées compatibles : vidéo, audio

L'objet de segmentation contient un method champ et des paramètres spécifiques à la méthode :

  • method— La méthode de segmentation à utiliser. Valeurs valides : dynamic | fixed

  • dynamic— Pour les vidéos, utilise la détection des limites de prise de vue pour diviser le contenu de manière dynamique. Contient :

    • minDurationSec— Durée minimale de chaque segment en secondes. Type : entier. Gamme : 1 à 5. Par défaut : 4.

  • fixed— Divise le contenu en segments de durée égale. Contient :

    • durationSec— Durée de chaque segment en secondes. Type : entier. Gamme : 1 à 10. Par défaut : 6.

Comportement par défaut :

  • Vidéo : utilise la segmentation dynamique avec détection des limites de prise de vue.

  • Audio : utilise une segmentation fixe. Le contenu est divisé le plus équitablement possible avec des segments de près de 10 secondes.

Identifiant unique pour la demande d'inférence.

  • Type : chaîne

  • Obligatoire : non

Réponse de TwelveLabs Marengo Embed 3.0

L’emplacement des vectorisations de sortie et des métadonnées associées dépend de la méthode d’invocation :

  • InvokeModel — Dans le corps de réponse.

  • StartAsyncInvoke — Dans le compartiment S3 défini danss3OutputDataConfig, une fois la tâche d'invocation asynchrone terminée.

S’il existe plusieurs vecteurs, le résultat est une liste d’objets, chacun contenant un vecteur et les métadonnées associées.

Le format du vecteur de vectorisation en sortie est le suivant :

{ "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 } }

Les intégrations sont renvoyées sous forme de tableau de flottants.

L'endroit où cette réponse s'affiche dépend de la méthode d'API que vous avez utilisée :

  • InvokeModel — Apparaît dans le corps de la réponse.

  • StartAsyncInvoke — Apparaît à l'emplacement S3 que vous avez spécifié dans la demande. La réponse renvoie uninvocationArn. Vous pouvez l'utiliser pour obtenir des métadonnées relatives à l'appel asynchrone. Cela inclut le statut et l'emplacement S3 où les résultats sont écrits.

Développez les sections suivantes pour obtenir des détails sur les paramètres de réponse :

Vectorisation : représentation vectorielle de l’entrée.

  • Type : liste de doubles

Type des vectorisations.

  • Type : chaîne

  • Valeurs possibles :

    • visual — Intégrations visuelles issues de la vidéo.

    • audio — Incorporation de l'audio dans la vidéo.

    • transcription — Incorporation du texte transcrit.

  • Types d’entrées compatibles : vidéo, audio

Spécifie l'étendue des intégrations à récupérer.

  • Type : chaîne

Vous pouvez inclure une ou plusieurs des valeurs suivantes :

  • clip : renvoie les intégrations pour chaque clip.

  • actif : renvoie les intégrations pour l'ensemble de l'actif.

Décalage de départ du clip.

  • Type : double

  • Types d’entrées compatibles : vidéo, audio

Le décalage final du clip. Non applicable aux intégrations de texte, d'image et de text_image.

  • Type : double

  • Types d’entrées compatibles : vidéo, audio

Exemples de code pour l’TwelveLabs Marengo Embed 3.0

Cette section explique comment utiliser le modèle TwelveLabs Marengo Embed 3.0 avec différents types d’entrées à l’aide de Python. Les exemples montrent comment définir une entrée spécifique au modèle et exécuter des invocations de modèle.

Note

InvokeModel prend en charge le texte, l'image et le texte avec entrée d'image entrelacée. Pour les entrées vidéo et audio, utilisez StartAsyncInvoke.

Composez votre code en procédant comme suit :

1. Définir une entrée spécifique au modèle

Définissez l’entrée spécifique au modèle en fonction de votre type d’entrée :

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. Exécuter l’invocation du modèle à l’aide de l’entrée du modèle

Ajoutez ensuite le fragment de code correspondant à la méthode d’invocation du modèle que vous avez choisie.

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}")