TwelveLabs Marengo Embed 3.0 - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

TwelveLabs Marengo Embed 3.0

Das TwelveLabs Marengo Embed 3.0 Modell generiert verbesserte Einbettungen aus Video-, Text-, Audio- oder Bildeingaben. Diese neueste Version bietet verbesserte Leistung und Genauigkeit für Ähnlichkeitssuche, Clustering und andere Aufgaben des maschinellen Lernens.

  • Anbieter – TwelveLabs

  • Model ID: – twelvelabs.marengo-embed-3-0-v1:0

Marengo Embed 3.0 bietet mehrere wichtige Verbesserungen:

  • Erweiterte Videoverarbeitungskapazität — Verarbeiten Sie bis zu 4 Stunden Video- und Audioinhalte. Dateien können bis zu 6 GB groß sein, was der doppelten Kapazität früherer Versionen entspricht. Dadurch eignet es sich ideal für die Analyse kompletter Sportveranstaltungen, umfangreicher Trainingsvideos und kompletter Filmproduktionen.

  • Verbesserte Sportanalyse — Das Modell bietet erhebliche Verbesserungen. Es ermöglicht ein besseres Verständnis der Spieldynamik, der Spielerbewegungen und der Erkennung von Ereignissen.

  • Weltweiter mehrsprachiger Support — Erweiterte Sprachfunktionen von 12 auf 36 Sprachen. Dies ermöglicht es globalen Unternehmen, einheitliche Such- und Abrufsysteme aufzubauen, die in verschiedenen Regionen und Märkten reibungslos funktionieren.

  • Multimodale Suchgenauigkeit — Kombinieren Sie Bilder und beschreibenden Text in einer einzigen Einbettungsanfrage. Dadurch wird visuelle Ähnlichkeit mit semantischem Verständnis kombiniert, um genauere und kontextrelevantere Suchergebnisse zu erzielen.

  • Reduzierte Einbettungsgröße — Von 1024 auf 512 reduziert, was zur Senkung der Speicherkosten beitragen kann.

Das Modell TwelveLabs Marengo Embed 3.0 unterstützt die Laufzeitoperationen von Amazon Bedrock in der folgenden Tabelle.

API-Operation Unterstützte Modelltypen Eingabemodalitäten Ausgabemodalitäten

InvokeModel

USA Ost (Nord-Virginia) — Basismodelle und Inferenzprofile

Europa (Irland) — Inferenzprofile

Asien-Pazifik (Seoul) - Basismodelle

Text

Image

Hinweis: Die Verschachtelung von Text und Bild wird ebenfalls unterstützt.

Einbettung

StartAsyncInvoke Basismodelle

Video

Audio

Image

Text

Hinweis: Die Verschachtelung von Text und Bild wird ebenfalls unterstützt.

Einbettung

Anmerkung

Verwenden Sie InvokeModel, um Einbettungen für Suchabfragen zu generieren. Verwenden Sie StartAsyncInvoke, um Einbettungen für Assets in großem Umfang zu generieren.

Die folgenden Kontingente gelten für die Eingabe:

Eingabemodalität Maximum
Text 500 Tokens
Image 5 MB pro Bild
Video (S3) 6 GB, Länge 4 Stunden
Audio (S3) 6 GB, Länge 4 Stunden
Anmerkung

Wenn Sie Audio oder Video inline mithilfe der base64-Kodierung definieren, stellen Sie sicher, dass die Nutzdaten des Anforderungstexts das Amazon-Bedrock-Modellaufrufkontingent von 25 MB nicht überschreitet.

Anforderungsparameter von TwelveLabs Marengo Embed 3.0

Wenn Sie eine Anforderung stellen, hängt das Feld, in dem die modellspezifische Eingabe angegeben wird, von der API-Operation ab:

Das Format der Modelleingabe hängt von der Eingabemodalität ab:

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

Erweitern Sie die folgenden Abschnitte, um ausführliche Informationen zu den Eingabeparametern zu erhalten:

Modalität für die Einbettung

  • Typ: Zeichenfolge

  • Erforderlich: Ja

  • Zulässige Werte: text | image | text_image | audio | video

Text, der eingebettet werden soll

  • Typ: Zeichenfolge

  • Erforderlich: Ja (für kompatible Eingabetypen)

  • Kompatible Eingabetypen: Text

Enthält Informationen zur Medienquelle

  • Typ: Objekt

  • Erforderlich: Ja (falls kompatibler Typ)

  • Kompatible Eingabetypen: Bild, Video, Audio

Das Format des mediaSource-Objekts im Anforderungstext hängt davon ab, ob das Medium als Base64-kodierte Zeichenfolge oder als S3-Speicherort definiert ist.

  • Base64-kodierte Zeichenfolge

    { "mediaSource": { "base64String": "base64-encoded string" } }
    • base64String – Die Base64-kodierte Zeichenfolge für das Medium

  • S3-Standort — Geben Sie den S3-URI und den Bucket-Besitzer an.

    { "s3Location": { "uri": "string", "bucketOwner": "string" } }
    • uri – Der S3-URI, der das Medium enthält

    • bucketOwner— Die AWS Konto-ID des S3-Bucket-Besitzers.

Gibt an, welche Arten von Einbettungen abgerufen werden sollen.

  • Typ: Liste

  • Required: No

  • Gültige Werte für Listenmitglieder:

    • visual— Visuelle Einbettungen aus dem Video.

    • audio – Einbettungen des Audios in das Video

    • transcription— Einbettungen des transkribierten Textes.

  • Vorgabewert:

    • Video: ["visuell“, „Audio“, „Transkription"]

    • Audio: ["Audio“, „Transkription"]

  • Kompatible Eingabetypen: Video, Audio

Gibt den Bereich der abzurufenden Einbettungen an.

  • Typ: Liste

  • Required: No

  • Gültige Werte für Listenmitglieder:

    • clip— Gibt Einbettungen für jeden Clip zurück.

    • asset— Gibt Einbettungen für das gesamte Asset zurück.

  • Kompatible Eingabetypen: Video, Audio

Der Zeitpunkt in Sekunden des Clips, zu dem die Verarbeitung beginnen soll

  • Type: Double

  • Required: No

  • Mindestwert 0

  • Standardwert: 0

  • Kompatible Eingabetypen: Video, Audio

Der Zeitpunkt in Sekunden, zu dem die Verarbeitung enden soll.

  • Type: Double

  • Required: No

  • Mindestwert: StartSec + Segmentlänge

  • Höchstwert: Dauer des Mediums

  • Standardwert: Dauer des Mediums

  • Kompatible Eingabetypen: Video, Audio

Definiert, wie die Medien für die Generierung der Einbettung in Segmente unterteilt werden.

  • Typ: Objekt

  • Required: No

  • Kompatible Eingabetypen: Video, Audio

Das Segmentierungsobjekt enthält ein method Feld und methodenspezifische Parameter:

  • method— Die zu verwendende Segmentierungsmethode. Zulässige Werte: dynamic | fixed

  • dynamic— Nutzt bei Videos die Erkennung von Aufnahmegrenzen, um Inhalte dynamisch zu unterteilen. Enthält:

    • minDurationSec— Mindestdauer für jedes Segment in Sekunden. Typ: Ganzzahl. Bereich: 1-5. Standard: 4.

  • fixed— Unterteilt den Inhalt in Segmente gleicher Dauer. Enthält:

    • durationSec— Dauer jedes Segments in Sekunden. Typ: Ganzzahl. Bereich: 1-10. Standard: 6.

Standardverhalten:

  • Video: Verwendet dynamische Segmentierung mit Erkennung von Schussgrenzen.

  • Audio: Verwendet eine feste Segmentierung. Der Inhalt wird so gleichmäßig wie möglich mit Segmenten von fast 10 Sekunden aufgeteilt.

Eindeutiger Bezeichner für die Inferenzanforderung.

  • Typ: Zeichenfolge

  • Required: No

TwelveLabs Marengo Embed 3.0-Antwort

Der Speicherort der Ausgabeeinbettungen und der zugehörigen Metadaten hängt von der Aufrufmethode ab:

  • InvokeModel — Im Antworttext.

  • StartAsyncInvoke — In dem in definierten S3-Buckets3OutputDataConfig, nachdem der asynchrone Aufruf-Job abgeschlossen wurde.

Wenn es mehrere Einbettungsvektoren gibt, besteht die Ausgabe aus einer Liste von Objekten, die jeweils einen Vektor und die zugehörigen Metadaten enthalten.

Das Format des Einbettungsvektors der Ausgabe lautet wie folgt:

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

Die Einbettungen werden als Array von Floats zurückgegeben.

Wo Sie diese Antwort sehen, hängt von der verwendeten API-Methode ab:

  • InvokeModel — Erscheint im Antworttext.

  • StartAsyncInvoke — Erscheint an dem S3-Standort, den Sie in der Anfrage angegeben haben. Die Antwort gibt eine zurückinvocationArn. Sie können dies verwenden, um Metadaten über den asynchronen Aufruf abzurufen. Dazu gehören der Status und der S3-Speicherort, an den die Ergebnisse geschrieben werden.

Erweitern Sie die folgenden Abschnitte, um ausführliche Informationen zu den Antwortparametern zu erhalten:

Darstellung des Einbettungsvektors der Eingabe

  • Typ: Liste von Double-Werten

Die Art der Einbettungen

  • Typ: Zeichenfolge

  • Mögliche Werte:

    • visuell — Visuelle Einbettungen aus dem Video.

    • Audio — Einbettungen des Audios in das Video.

    • Transkription — Einbettungen des transkribierten Textes.

  • Kompatible Eingabetypen: Video, Audio

Gibt den Bereich der abzurufenden Einbettungen an.

  • Typ: Zeichenfolge

Sie können einen oder mehrere der folgenden Werte angeben:

  • Clip: Gibt Einbettungen für jeden Clip zurück.

  • Asset: Gibt Einbettungen für das gesamte Asset zurück.

Der Startversatz des Clips

  • Type: Double

  • Kompatible Eingabetypen: Video, Audio

Der Endversatz des Clips. Gilt nicht für Text-, Bild- und Text_Image-Einbettungen.

  • Type: Double

  • Kompatible Eingabetypen: Video, Audio

TwelveLabs Marengo Embed 3.0-Codebeispiele

In diesem Abschnitt wird gezeigt, wie Sie das Modell TwelveLabs Marengo Embed 3.0 mit verschiedenen Eingabetypen mithilfe von Python verwenden. Die Beispiele zeigen, wie modellspezifische Eingaben definiert und Modellaufrufe ausgeführt werden.

Anmerkung

InvokeModel unterstützt Text, Bild und Text mit verschachtelter Bildeingabe. Verwenden Sie für die Video- und Audioeingabe. StartAsyncInvoke

Stellen Sie Ihren Code in den folgenden Schritten zusammen:

1. Definieren der modellspezifische Eingabe

Definieren Sie die modellspezifische Eingabe abhängig von Ihrem Eingabetyp:

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. Ausführen des Modellaufrufs mithilfe der Modelleingabe

Fügen Sie dann den Codeausschnitt hinzu, der der Methode Ihrer Wahl für den Modellaufruf entspricht.

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