TwelveLabs Marengo Embed 2.7 - 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 2.7

Le modèle TwelveLabs Marengo Embed 2.7 génère des vectorisations à partir d’entrées vidéo, texte, audio ou image. Ces vectorisation peuvent être utilisées pour la recherche de similarités, le clustering et d’autres tâches de machine learning.

  • Fournisseur — TwelveLabs

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

Le modèle TwelveLabs Marengo Embed 2.7 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

Profils d’inférence

Texte

Image

Intégration

StartAsyncInvoke Modèles de base

Vidéo

Audio

Image

Texte

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 77 jetons
Image 5 Mo
Vidéo (S3) 2 Go
Audio (S3) 2 Go
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 2.7

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", "inputText": "string", "textTruncate": "string }
Inline image
{ "inputType": "image", "mediaSource": { "base64String": "base64-encoded string" } }
S3 image
{ "inputType": "image", "mediaSource": { "s3Location": { "uri": "string", "bucketOwner": "string" } } }
Inline video
{ "inputType": "video", "mediaSource": { "s3Location": { "base64String": "base64-encoded string" } }, "startSec": double, "lengthSec": double, "useFixedLengthSec": double, "embeddingOption": "visual-text" | "visual-image" | "audio" }
S3 video
{ "inputType": "image", "mediaSource": { "s3Location": { "uri": "string", "bucketOwner": "string" } }, "startSec": double, "lengthSec": double, "useFixedLengthSec": double, "minClipSec": int, "embeddingOption": ["string"] }
Inline audio
{ "inputType": "audio", "mediaSource": { "base64String": "base64-encoded string" }, "startSec": double, "lengthSec": double, "useFixedLengthSec": double }
S3 audio
{ "inputType": "audio", "mediaSource": { "s3Location": { "uri": "string", "bucketOwner": "string" } }, "startSec": double, "lengthSec": double, "useFixedLengthSec": double }

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 : video | text | audio | image

Texte à vectoriser.

  • Type : chaîne

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

  • Types d’entrée compatibles : texte

Spécifie la manière dont la plateforme tronque le texte.

  • Type : chaîne

  • Obligatoire : non

  • Valeurs valides:

    • end : tronque la fin du texte.

    • none : renvoie une erreur si le texte dépasse la limite

  • Valeur par défaut : fin

  • 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-text : vectorisations visuelles optimisées pour la recherche de texte.

    • visual-image : vectorisations visuelles optimisées pour la recherche d’images.

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

  • Valeur par défaut : ["visual-text", "visual-image", "audio"]

  • 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

Durée en secondes, à compter du point de départ startSec, au terme duquel le traitement doit s’arrêter.

  • Type : double

  • Obligatoire : non

  • Valeurs valides : 0 - durée du média

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

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

Exemple :

  • startSec : 5

  • lengthSec : 20

  • Résultat : Le clip est traité de 0:05 à 0:25 (5 secondes + 20 secondes).

Durée de chaque clip pour lequel le modèle doit générer une vectorisation.

  • Type : double

  • Obligatoire : non

  • Paramètres de valeur : 2 à 10. Il doit être supérieur ou égal à minClipSec.

  • Valeur par défaut : dépend du type de média :

    • Vidéo : divisée dynamiquement par la détection des limites de prise de vue.

    • Audio : divisé uniformément avec des segments aussi proches que possible de 10 secondes.

      Exemples :

      • Un clip de 50 secondes est divisé en 5 segments de 10 secondes.

      • Un clip de 16 secondes est divisé en 2 segments de 8 secondes.

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

  • Remarque : doit être supérieur ou égal à minClipSec.

Définit une valeur minimale pour chaque clip en secondes.

  • Type : int

  • Obligatoire : non

  • Paramètres de valeur : plage de valeurs : de 1 à 5

  • Valeur par défaut : 4

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

  • Remarques : Doit être inférieur ou égal à useFixedLengthSec.

Réponse de TwelveLabs Marengo Embed 2.7

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 dans les3OutputDataConfig, 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 :

{ "embedding": ["string"], "embeddingOption": "visual-text" | "visual-image" | "audio", "startSec": double, "endsec": double }

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-text : vectorisations visuelles optimisées pour la recherche de texte.

    • visual-image : vectorisations visuelles optimisées pour la recherche d’images.

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

  • Types d’entrées compatibles : Vidéo

Décalage de départ du clip.

  • Type : double

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

Décalage de fin du clip, en secondes.

  • Type : double

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

Exemples de code pour l’TwelveLabs Marengo Embed 2.7

Cette section explique comment utiliser le modèle TwelveLabs Marengo Embed 2.7 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 uniquement en charge la saisie de texte et d'image. 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-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "text", "inputText": "man walking a dog" }
Inline image
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "image", "mediaSource": { "base64String": "example-base64-image" } }
S3 image
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "image", "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my_image.png", "bucketOwner": "123456789012" } } }
Inline video
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "video", "mediaSource": { "base64String": "base_64_encoded_string_of_video" }, "startSec": 0, "lengthSec": 13, "useFixedLengthSec": 5, "embeddingOption": [ "visual-text", "audio" ] }
S3 video
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "video", "mediaSource": { "s3Location": { "uri": "amzn-s3-demo-bucket/my-video.mp4", "bucketOwner": "123456789012" } }, "startSec": 0, "lengthSec": 13, "useFixedLengthSec": 5, "embeddingOption": [ "visual-text", "audio" ] }
Inline audio
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "audio", "mediaSource": { "base64String": "base_64_encoded_string_of_audio" }, "startSec": 0, "lengthSec": 13, "useFixedLengthSec": 10 }
S3 audio
# Create the model-specific input model_id = "twelvelabs.marengo-embed-2-7-v1:0" # Replace the us prefix depending on your region inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0" model_input = { "inputType": "audio", "mediaSource": { "s3Location": { "uri": "s3://amzn-s3-demo-bucket/my-audio.wav", "bucketOwner": "123456789012" } }, "startSec": 0, "lengthSec": 13, "useFixedLengthSec": 10 }
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://&example-s3-destination-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}")