Das Modell für multimodale Einbettungen generiert mehrdimensionale Vektoren basierend auf der von Ihnen bereitgestellten Eingabe, die eine Kombination aus Bild-, Text- und Videodaten enthalten kann. Die Einbettungsvektoren können dann für nachfolgende Aufgaben wie die Bildklassifizierung oder Video-Inhaltsmoderation verwendet werden.
Der Bild- und der Texteinbettungsvektor befinden sich im selben semantischen Bereich mit derselben Dimensionalität. Daher können diese Vektoren austauschbar für Anwendungsfälle wie die Bildsuche nach Text oder die Videosuche nach Bild verwendet werden.
Für Anwendungsfälle mit Nur-Text-Einbettungen empfehlen wir stattdessen die Vertex AI text-embeddings API. Beispielsweise ist die text-embeddings API möglicherweise für textbasierte semantische Suche, Clustering, ausführliche Dokumentanalyse und andere Anwendungsfälle für das Abrufen von Text oder Question Answering besser geeignet. Weitere Informationen finden Sie unter Texteinbettungen abrufen.
Unterstützte Modelle
Sie können multimodale Einbettungen mit den folgenden Modellen abrufen:
gemini-embedding-2multimodalembedding@001
Best Practices
Beachten Sie bei der Verwendung des Modells für multimodale Einbettungen die folgenden Eingabeaspekte:
- Text in Bildern: Das Modell kann Text in Bildern unterscheiden, ähnlich wie die optische Zeichenerkennung (Optical Character Recognition, OCR). Wenn Sie zwischen einer Beschreibung des Bildinhalts und dem Text in einem Bild unterscheiden müssen, können Sie die Zielinhalte mithilfe von Prompt Engineering angeben.
Geben Sie beispielsweise je nach Anwendungsfall statt „Katze“ „Bild einer Katze“ oder „Text ‚Katze‘“ an.
der Text "Katze"
Bild einer Katze
Bildnachweis: Manja Vitolic auf Unsplash - Ähnlichkeiten von Einbettungen: Das Skalarprodukt von Einbettungen ist keine kalibrierte Wahrscheinlichkeit. Das Skalarprodukt ist ein Messwert für die Ähnlichkeit und kann unterschiedliche Punktzahlverteilungen für verschiedene Anwendungsfälle haben. Verwenden Sie daher keinen festen Wert als Grenzwert zur Messung der Qualität. Verwenden Sie stattdessen Ranking-Ansätze für die Suche oder sigmoide Funktionen für die Klassifizierung.
gemini-embedding-2 verwenden
Das gemini-embedding-2-Modell akzeptiert verschachtelte Eingaben für Bild-, Text-, Dokument-, Audio- und Videomodalitäten.
Aufgabenanweisungen angeben, um die Leistung zu verbessern
Sie können Einbettungen für eine Vielzahl von Aufgaben verwenden, von der Klassifizierung bis zur Dokumentsuche. Wenn Sie die richtige Aufgabenanweisung angeben, können Sie die Einbettungen für die beabsichtigten Beziehungen optimieren und so die Genauigkeit und Effizienz maximieren.
In den folgenden Tabellen finden Sie Beispiele für die Formatierung von Anfragen und Dokumenten für symmetrische und asymmetrische Anwendungsfälle mit dem Modell gemini-embedding-2.
Abrufanwendungsfälle (asymmetrisches Format)
| Anwendungsfall | Abfragestruktur | Dokumentstruktur |
|---|---|---|
| Suchanfrage | task: search result | query: {content} |
title: {title} | text: {content}Wenn kein Titel vorhanden ist, verwenden Sie title: none. |
| Question Answering | task: question answering | query: {content} |
title: {title} | text: {content} |
| Faktenchecks | task: fact checking | query: {content} |
title: {title} | text: {content} |
| Codeabruf | task: code retrieval | query: {content} |
title: {title} | text: {content} |
Anwendungsfälle mit einer Eingabe (symmetrisches Format)
| Anwendungsfall | Eingabestruktur |
|---|---|
| Klassifizierung | task: classification | query: {content} |
| Clustering | task: clustering | query: {content} |
| Semantische Ähnlichkeit | task: sentence similarity | query: {content}Nicht für die Suche oder den Abruf verwenden. Sie ist für die semantische Textähnlichkeit vorgesehen. |
Beispiel für die Verwendung in Python
Python
# Generate embedding for a search query def prepare_query(query): return f"task: search result | query: {query}" # Generate embedding for a search document def prepare_document(content, title=None): if title is None: title = "none" return f"title: {title} | text: {content}" # Generate embedding for classification def prepare_classification_input(content): return f"task: classification | query: {content}"
API-Nutzung
API-Limits
Die folgenden Limits gelten, wenn Sie das gemini-embedding-2-Modell verwenden.
| Limit | Wert und Beschreibung |
|---|---|
| Text-, Bild-, Dokument-, Video- und Audiodaten | |
| Eingabetokenlimit | 8.192 Tokens Eingaben, die länger als 8.192 Tokens sind, werden automatisch abgeschnitten. Alle Modalitäten teilen sich das Kontextfenster mit insgesamt 8.192 Tokens. Tokens werden je nach Modalität so gezählt:
|
| Ausgabedimensionalität | 3.072 (Standardwert, kann mit dem Parameter output_dimensionality konfiguriert werden) |
| Bildlimits | 6 Bilder pro Anfrage |
| Bildformate | JPEG, PNG, WebP, BMP, HEIC, HEIF, AVIF |
| Bildabmessungen | Maximal 16.384 × 16.384 Pixel pro Bild |
| Dokumentlimits | 1 Datei pro Anfrage, bis zu 6 Seiten Für die beste Qualität empfehlen wir 1 Seite pro PDF. |
| Dokumentformate | |
| Video- und Audiodaten | |
| Videobegrenzungen | 1 Video pro Anfrage, bis zu 120 Frames Das 120-Sekunden-Limit basiert auf der Standardeinstellung von 1 FPS. Die Dauer variiert, wenn Sie unterschiedliche fps-Werte festlegen: Dauer = 120 / fps. Die Audioextraktion ist für Videos standardmäßig deaktiviert. Wenn die Option zum Extrahieren des Audiotracks aktiviert ist, unterliegt die Dauer der maximalen Audiodauer von 180 Sekunden. Die Gesamtdauer des Videos wird sowohl durch das Audio- als auch durch das Token-Kontextfenster (8.192 Tokens) begrenzt. |
| Videoformate | Container: MOV, MP4. Codec: AV1, H264, H265, VP9. |
| Audio-Limits | 180 Sekunden pro Anfrage Die Audio-Unterstützung ist für Sprache optimiert. Umgebungsgeräusche und Musik werden möglicherweise nicht in höchster Qualität wiedergegeben. |
| Audioformate | MP3, WAV |
Videodauer bei Audioextraktion
Da sich alle Modalitäten das Kontextfenster mit insgesamt 8.192 Tokens teilen, variiert die maximale Videolänge, wenn Sie audio_track_extraction aktivieren:
| Modalität | Tokenanzahl |
|---|---|
| Audio | 25 Tokens pro Sekunde |
| Video frame | 66 Tokens pro Frame |
| Zeitstempel | 10 Tokens pro Sekunde (zwei Zeitstempel pro Sekunde im Format „mm:ss“) |
| FPS | Wird durch die FPS-Einstellung bestimmt (Standard ist 1). |
Die Gesamtdauer des Videos ist sowohl durch die maximale Audiounterstützung von 180 Sekunden als auch durch das Kontextfenster von 8.192 Tokens begrenzt.
Beispielrechnung:
Wenn Sie ein Video mit einer Standardabtastrate von 1 FPS verarbeiten und die Audioextraktion aktivieren, gilt Folgendes:
- Verbrauchsrate: Jede Sekunde Video verbraucht 66 Tokens (1 Frame) + 25 Tokens (1 Sekunde Audio) + 10 Tokens (Zeitstempel) = 101 Tokens.
- Maximale Dauer: Bei einem Tokenlimit von 8.192 beträgt die maximale Dauer etwa 8.192 / 101 ≈ 81 Sekunden.
Wenn die Eingabe das Kontextfenster überschreitet, wird der überschrittene Teil ohne Rückmeldung abgeschnitten.
Multimodale Einbettungen abrufen
REST
PROJECT_ID="YOUR_PROJECT_ID" LOCATION="us" curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://aiplatform.${LOCATION}.rep.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/gemini-embedding-2:embedContent" \ -d '{ "content": { "parts": [ { "text": "Whats this" }, { "file_data": { "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4" } } ] } }'
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_text(text="Audio AI"), types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
Standorte
Ein Standort ist eine Region, die Sie in einer Anfrage angeben können, um zu steuern, wo Daten im Ruhezustand gespeichert werden. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten.
Dimensionen
Wenn Sie das Modell gemini-embedding-2 verwenden, können Sie mit dem Parameter output_dimensionality in EmbedContentConfig niedrigere Dimensionen angeben.
Im folgenden Beispiel wird ein 128-dimensionaler Vektor zurückgegeben. Bei gemini-embedding-2 sind die Ausgabeeinbettungen für nicht standardmäßige Dimensionen bereits L2-normalisiert (im Gegensatz zu gemini-embedding-001).
Python
import numpy as np from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content], config=types.EmbedContentConfig(output_dimensionality=128), ) embedding_values_np = np.array(response.embeddings[0].values) print(f"Embedding length: {len(embedding_values_np)}") print(f"Norm of embedding: {np.linalg.norm(embedding_values_np):.6f}") # Should be very close to 1
Parameter
Die standardmäßige Video-Abtastrate beträgt 1 Bild pro Sekunde (FPS). Mit video_metadata können zusätzliche Parameter hinzugefügt werden:
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part( file_data=types.FileData( file_uri="gs://cloud-samples-data/generative-ai/video/pixel8.mp4", mime_type="video/mp4", ), video_metadata=types.VideoMetadata( fps=0.5, start_offset="10s", end_offset="20s", ), ), ] ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
In EmbedContentConfig gibt es zusätzliche Optionen.
| Option | Typ | Beschreibung |
|---|---|---|
output_dimensionality |
int |
Reduzieren Sie die Dimensionalität für die Ausgabe-Einbettung. |
document_ocr |
bool |
OCR für die Dokumenteingabe aktivieren. |
audio_track_extraction |
bool |
Audio aus Videoeingabe extrahieren |
multimodalembedding@001 verwenden
Die folgenden Limits gelten, wenn Sie das multimodalembedding@001-Modell für Text- und Bildeinbettungen verwenden:
| Limit | Wert und Beschreibung |
|---|---|
| Text- und Bilddaten | |
| Maximale Anzahl an API-Anfragen pro Minute und Projekt | 120–600 €, je nach Region |
| Maximale Textlänge | 32 Tokens (ca. 32 Wörter) Die maximale Textlänge beträgt 32 Tokens (ca. 32 Wörter). Wenn die Eingabe 32 Tokens überschreitet, kürzt das Modell die Eingabe intern auf diese Länge. |
| Sprache | Englisch |
| Bildformate | BMP, GIF, JPG, PNG |
| Bildgröße | Base64-codierte Bilder: 20 MB (bei der Transcodierung in PNG) Cloud Storage-Bilder: 20 MB (Originaldateiformat) Die maximal akzeptierte Bildgröße beträgt 20 MB. Verwenden Sie kleinere Bilder, um eine höhere Netzwerklatenz zu vermeiden. Außerdem ändert das Modell Bilder auf die Auflösung 512 x 512 Pixel. Daher müssen Sie keine Bilder mit höherer Auflösung bereitstellen. |
| Videodaten | |
| Audio-Unterstützung | Nicht verfügbar: Das Modell berücksichtigt beim Generieren von Videoeinbettungen keinen Audioinhalt. |
| Videoformate | AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM, und WMV |
| Maximale Videolänge (Cloud Storage) | Kein Limit. Es können jedoch nur zwei Minuten an Inhalt gleichzeitig analysiert werden. |
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Richten Sie die Authentifizierung für Ihre Umgebung ein.
Wählen Sie den Tab aus, der Ihrer geplanten Verwendung der Beispiele auf dieser Seite entspricht:
Java
Wenn Sie die Java-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:
gcloud components update gcloud components install beta
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten.
Node.js
Wenn Sie die Node.js-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:
gcloud components update gcloud components install beta
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten.
Python
Wenn Sie die Python-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:
gcloud components update gcloud components install beta
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:
gcloud components update gcloud components install beta
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
-
- Folgen Sie der Anleitung unter Vertex AI SDK für Python installieren, um das Python SDK zu verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.
- Optional. Preise Die Preise für Einbettungen hängen vom Typ der gesendeten Daten (z. B. Bild oder Text) und vom Modus ab, den Sie für bestimmte Datentypen verwenden (z. B. Video Plus, Video Standard oder Video Essential). “
Standorte
Ein Standort ist eine Region, die Sie in einer Anfrage angeben können, um zu steuern, wo Daten im Ruhezustand gespeichert werden. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten.
Fehlermeldungen
Fehler „Kontingent überschritten“
google.api_core.exceptions.ResourceExhausted: 429 Quota exceeded for
aiplatform.googleapis.com/online_prediction_requests_per_base_model with base
model: multimodalembedding. Please submit a quota increase request.
Wenn Sie diesen Fehler zum ersten Mal erhalten, können Sie in der Google Cloud Console eine Kontingentanpassung für Ihr Projekt beantragen. Verwenden Sie die folgenden Filter, bevor Sie eine Anpassung beantragen:
Service ID: aiplatform.googleapis.commetric: aiplatform.googleapis.com/online_prediction_requests_per_base_modelbase_model:multimodalembedding
Wenn Sie bereits eine Anfrage zur Kontingentanpassung gesendet haben, warten Sie, bevor Sie eine weitere Anfrage senden. Wenn Sie das Kontingent weiter erhöhen möchten, wiederholen Sie die Kontingentanpassung mit einer Begründung für eine weitere Kontingentanpassung.
Einbettungen mit niedrigeren Dimensionen angeben
Je nach verwendetem Modell wird bei einer Einbettungsanfrage entweder ein Float-Vektor vom Typ 1408 oder ein Float-Vektor vom Typ 3072 zurückgegeben. Sie können Einbettungen mit niedrigeren Dimensionen für Text- und Bilddaten angeben, um die Latenz und den Speicherplatz oder die Qualität zu optimieren. Einbettungen mit niedriger Dimension bieten einen geringeren Speicherbedarf und eine geringere Latenz für nachfolgende Einbettungsaufgaben (z. B. Suche oder Empfehlung). Einbettungen mit höheren Dimensionen bieten eine höhere Genauigkeit für diese Aufgaben, erfordern aber mehr Speicherplatz und haben eine höhere Latenz.
In der folgenden Tabelle sind die Standard- und verfügbaren niedrigeren Dimensionen für jedes Modell aufgeführt:
| Modell | Standarddimensionen (höchste Priorität) | Unterstützte Dimensionen (Bereich) | Empfohlene niedrigere Dimensionen |
|---|---|---|---|
gemini-embedding-2 |
3.072 | 128 bis 3.072 | 128, 768 oder 1536 |
multimodalembedding@001 |
1408 | 128 bis 1.408 | 128, 256 oder 512 |
Verwenden Sie die folgenden Beispiele, um Einbettungen mit niedrigeren Dimensionen zu generieren:
REST
Sie können auf Dimensionen mit niedriger Dimension zugreifen, indem Sie das Feld parameters.dimension hinzufügen.
Für den Parameter können alle für das Modell verfügbaren Dimensionswerte verwendet werden.
Wenn Sie das multimodalembedding@001-Modell verwenden, können Sie beispielsweise 128, 256, 512 oder 1408 angeben. Die Antwort enthält die Einbettung der angegebenen Dimension.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION: Die Region Ihres Projekts. Beispiel:
us-central1,europe-west2oderasia-northeast3. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten. Wenn ein regionaler API-Endpunkt verwendet wird, wird die Region, in der die Anfrage verarbeitet wird, durch die Region in der URL des Endpunkts bestimmt. DasLOCATIONim Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt. - PROJECT_ID: Ihre Google Cloud Projekt-ID.
- IMAGE_URI: Der Cloud Storage-URI des Zielbildes, für das Einbettungen abgerufen werden sollen.
Beispiel:
gs://my-bucket/embeddings/supermarket-img.png.Sie können das Bild auch als Base64-codierten Bytestring bereitstellen:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] - TEXT: Der Zieltext, für den Einbettungen abgerufen werden sollen. Beispiel:
a cat - EMBEDDING_DIMENSION: Die Anzahl der Einbettungsdimensionen. Niedrigere Werte bieten eine geringere Latenz bei Verwendung dieser Einbettungen für nachfolgende Aufgaben, während höhere Werte eine höhere Genauigkeit bieten. Verfügbare Werte:
128,256,512und1408(Standard).
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
JSON-Text der Anfrage:
{
"instances": [
{
"image": {
"gcsUri": "IMAGE_URI"
},
"text": "TEXT"
}
],
"parameters": {
"dimension": EMBEDDING_DIMENSION
}
}
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
128 Dimensionen:
{
"predictions": [
{
"imageEmbedding": [
0.0279239565,
[...128 dimension vector...]
0.00403284049
],
"textEmbedding": [
0.202921599,
[...128 dimension vector...]
-0.0365431122
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}256 Dimensionen:
{
"predictions": [
{
"imageEmbedding": [
0.248620048,
[...256 dimension vector...]
-0.0646447465
],
"textEmbedding": [
0.0757875815,
[...256 dimension vector...]
-0.02749932
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}512 Dimensionen:
{
"predictions": [
{
"imageEmbedding": [
-0.0523675755,
[...512 dimension vector...]
-0.0444030389
],
"textEmbedding": [
-0.0592851527,
[...512 dimension vector...]
0.0350437127
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Go
Bild- und Texteinbettungen abrufen (multimodalembedding@001)
Mit den folgenden Codebeispielen können Sie eine Einbettungsanfrage mit Bild- und Textdaten senden. In den Beispielen wird gezeigt, wie eine Anfrage mit beiden Datentypen gesendet wird. Sie können den Dienst aber auch mit einem einzelnen Datentyp verwenden.
Text- und Bildeinbettungen abrufen
REST
Weitere Informationen zu multimodalembedding@001-Modellanfragen finden Sie in der API-Referenz des multimodalembedding@001-Modells.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION: Die Region Ihres Projekts. Beispiel:
us-central1,europe-west2oderasia-northeast3. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten. Wenn ein regionaler API-Endpunkt verwendet wird, wird die Region, in der die Anfrage verarbeitet wird, durch die Region in der URL des Endpunkts bestimmt. DasLOCATIONim Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt. - PROJECT_ID: Ihre Google Cloud Projekt-ID.
- TEXT: Der Zieltext, für den Einbettungen abgerufen werden sollen. Beispiel:
a cat - B64_ENCODED_IMG: Das Zielbild, für das Einbettungen abgerufen werden sollen. Das Bild muss als base64-codierter Bytestring angegeben werden.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
JSON-Text der Anfrage:
{
"instances": [
{
"text": "TEXT",
"image": {
"bytesBase64Encoded": "B64_ENCODED_IMG"
}
}
]
}
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.010477379,
-0.00399621,
0.00576670747,
[...]
-0.00823613815,
-0.0169572588,
-0.00472954148
],
"imageEmbedding": [
0.00262696808,
-0.00198890246,
0.0152047109,
-0.0103145819,
[...]
0.0324628279,
0.0284924973,
0.011650892,
-0.00452344026
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Go-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Go API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Video-, Bild- oder Texteinbettungen abrufen (multimodalembedding@001)
Wenn Sie eine Einbettungsanfrage senden, können Sie nur ein Eingabevideo oder eine Kombination aus Video-, Bild- und Textdaten angeben.
Videoeinbettungsmodi
Sie können für Videoeinbettungen drei Modi verwenden: Essential, Standard oder Plus. Der Modus entspricht der Dichte der generierten Einbettungen, die durch die interval_sec-Konfiguration in der Anfrage angegeben werden kann. Für jedes Videointervall mit der Länge interval_sec wird eine Einbettung erstellt. Das Videointervall beträgt mindestens 4 Sekunden. Intervalllängen von mehr als 120 Sekunden können sich negativ auf die Qualität der generierten Einbettungen auswirken.
Die Preise für die Videoeinbettung hängen vom verwendeten Modus ab. Weitere Informationen finden Sie unter Preise.
In der folgenden Tabelle finden Sie eine Übersicht über die drei Modi, die Sie für die Videoeinbettung verwenden können:
| Modus | Maximale Anzahl an Einbettungen pro Minute | Videoeinbettungsintervall (Mindestwert) |
|---|---|---|
| Unverzichtbar | 4 | 15 Dies entspricht: intervalSec >= 15 |
| Standard | 8 | 8 Dies entspricht: 8 <= intervalSec < 15 |
| Plus | 15 | 4 Dies entspricht: 4 <= intervalSec < 8 |
Best Practices für Videoeinbettungen
Beachten Sie beim Senden von Anfragen zur Videoeinbettung Folgendes:
Mit der folgenden
videoSegmentConfig-Einstellung können Sie eine einzelne Einbettung für die ersten zwei Minuten eines Eingabevideos einer beliebigen Länge erstellen:request.json:// other request body content "videoSegmentConfig": { "intervalSec": 120 } // other request body contentWenn Sie eine Einbettung für ein Video mit einer Länge von mehr als zwei Minuten generieren möchten, können Sie mehrere Anfragen senden, die die Start- und Endzeiten in
videoSegmentConfigangeben:request1.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120 } // other request body contentrequest2.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 120, "endOffsetSec": 240 } // other request body content
Videoeinbettungen abrufen
Im folgenden Beispiel werden Einbettungen nur für Videoinhalte verwendet.
REST
Weitere Informationen zu multimodalembedding@001-Modellanfragen finden Sie in der API-Referenz des multimodalembedding@001-Modells.
Im folgenden Beispiel wird ein Video verwendet, das sich in Cloud Storage befindet. Sie können das Feld video.bytesBase64Encoded auch verwenden, um eine base64-codierte Stringdarstellung des Videos anzugeben.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION: Die Region Ihres Projekts. Beispiel:
us-central1,europe-west2oderasia-northeast3. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten. Wenn ein regionaler API-Endpunkt verwendet wird, wird die Region, in der die Anfrage verarbeitet wird, durch die Region in der URL des Endpunkts bestimmt. DasLOCATIONim Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt. - PROJECT_ID: Ihre Google Cloud Projekt-ID.
- VIDEO_URI: Der Cloud Storage-URI des Zielvideos, für das Einbettungen abgerufen werden sollen.
Beispiel:
gs://my-bucket/embeddings/supermarket-video.mp4.Sie können das Video auch als Base64-codierten Bytestring bereitstellen:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Optional. Die spezifischen Videosegmente (in Sekunden), für die die Einbettungen generiert werden.Beispiele:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]Mit dieser Konfiguration werden Videodaten von 10 bis 60 Sekunden angegeben und Einbettungen für die folgenden 10-Sekunden-Videointervalle generiert: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Dieses Videointervall (
"intervalSec": 10) fällt in den Standardmodus zum Einbetten von Videos und dem Nutzer wird der Standardpreis für den Standardmodus in Rechnung gestellt.Wenn Sie
videoSegmentConfigweglassen, verwendet der Dienst die folgenden Standardwerte:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Dieses Videointervall ("intervalSec": 16) fällt in den Einbettungsmodus für wichtige Videos und dem Nutzer wird der Preis für den wichtigen Modus in Rechnung gestellt.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
JSON-Text der Anfrage:
{
"instances": [
{
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
Antwort (7 Sekunden langes Video, keine videoSegmentConfig angegeben):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 7,
"embedding": [
-0.0045467657,
0.0258095954,
0.0146885719,
0.00945400633,
[...]
-0.0023291884,
-0.00493789,
0.00975185353,
0.0168156829
],
"startOffsetSec": 0
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}Antwort (59 Sekunden langes Video mit der folgenden Videosegmentkonfiguration: "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 60, "intervalSec": 10 }):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 10,
"startOffsetSec": 0,
"embedding": [
-0.00683252793,
0.0390476175,
[...]
0.00657121744,
0.013023301
]
},
{
"startOffsetSec": 10,
"endOffsetSec": 20,
"embedding": [
-0.0104404651,
0.0357737206,
[...]
0.00509833824,
0.0131902946
]
},
{
"startOffsetSec": 20,
"embedding": [
-0.0113538112,
0.0305239167,
[...]
-0.00195809244,
0.00941874553
],
"endOffsetSec": 30
},
{
"embedding": [
-0.00299320649,
0.0322436653,
[...]
-0.00993082579,
0.00968887936
],
"startOffsetSec": 30,
"endOffsetSec": 40
},
{
"endOffsetSec": 50,
"startOffsetSec": 40,
"embedding": [
-0.00591270532,
0.0368893594,
[...]
-0.00219071587,
0.0042470959
]
},
{
"embedding": [
-0.00458270218,
0.0368121453,
[...]
-0.00317760976,
0.00595594104
],
"endOffsetSec": 59,
"startOffsetSec": 50
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Go-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Go API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Bild-, Text- und Videoeinbettungen abrufen
Im folgenden Beispiel werden Einbettungen für Video-, Text- und Bildinhalte verwendet.
REST
Weitere Informationen zu multimodalembedding@001-Modellanfragen finden Sie in der API-Referenz des multimodalembedding@001-Modells.
Im folgenden Beispiel werden Bild-, Text- und Videodaten verwendet. Sie können diese Datentypen beliebig in Ihrem Anfragetext kombinieren.
Außerdem wird in diesem Beispiel ein Video verwendet, das sich in Cloud Storage befindet. Sie können das Feld video.bytesBase64Encoded auch verwenden, um eine base64-codierte Stringdarstellung des Videos anzugeben.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION: Die Region Ihres Projekts. Beispiel:
us-central1,europe-west2oderasia-northeast3. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten. Wenn ein regionaler API-Endpunkt verwendet wird, wird die Region, in der die Anfrage verarbeitet wird, durch die Region in der URL des Endpunkts bestimmt. DasLOCATIONim Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt. - PROJECT_ID: Ihre Google Cloud Projekt-ID.
- TEXT: Der Zieltext, für den Einbettungen abgerufen werden sollen. Beispiel:
a cat - IMAGE_URI: Der Cloud Storage-URI des Zielbildes, für das Einbettungen abgerufen werden sollen.
Beispiel:
gs://my-bucket/embeddings/supermarket-img.png.Sie können das Bild auch als Base64-codierten Bytestring bereitstellen:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] - VIDEO_URI: Der Cloud Storage-URI des Zielvideos, für das Einbettungen abgerufen werden sollen.
Beispiel:
gs://my-bucket/embeddings/supermarket-video.mp4.Sie können das Video auch als Base64-codierten Bytestring bereitstellen:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Optional. Die spezifischen Videosegmente (in Sekunden), für die die Einbettungen generiert werden.Beispiele:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]Mit dieser Konfiguration werden Videodaten von 10 bis 60 Sekunden angegeben und Einbettungen für die folgenden 10-Sekunden-Videointervalle generiert: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Dieses Videointervall (
"intervalSec": 10) fällt in den Standardmodus zum Einbetten von Videos und dem Nutzer wird der Standardpreis für den Standardmodus in Rechnung gestellt.Wenn Sie
videoSegmentConfigweglassen, verwendet der Dienst die folgenden Standardwerte:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Dieses Videointervall ("intervalSec": 16) fällt in den Einbettungsmodus für wichtige Videos und dem Nutzer wird der Preis für den wichtigen Modus in Rechnung gestellt.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
JSON-Text der Anfrage:
{
"instances": [
{
"text": "TEXT",
"image": {
"gcsUri": "IMAGE_URI"
},
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.0105433334,
-0.00302835181,
0.00656806398,
0.00603460241,
[...]
0.00445805816,
0.0139605571,
-0.00170318608,
-0.00490092579
],
"videoEmbeddings": [
{
"startOffsetSec": 0,
"endOffsetSec": 7,
"embedding": [
-0.00673126569,
0.0248149596,
0.0128901172,
0.0107588246,
[...]
-0.00180952181,
-0.0054573305,
0.0117037306,
0.0169312079
]
}
],
"imageEmbedding": [
-0.00728622358,
0.031021487,
-0.00206603738,
0.0273937676,
[...]
-0.00204976718,
0.00321615417,
0.0121978866,
0.0193375275
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Go-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Go API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Nächste Schritte
- Blog "What is Multimodal Search: 'LLMs with vision' change businesses" lesen.
- Informationen zu Anwendungsfällen für Nur-Text-Einbettungen (textbasierte semantische Suche, Clustering, ausführliche Dokumentanalyse und andere Anwendungsfälle für das Abrufen von Text oder Question Answering) finden Sie unter Texteinbettungen abrufen.
- Alle Angebote für die generative KI von Vertex AI für Bilder finden Sie in der Übersicht zu Imagen in Vertex AI.
- Weitere vortrainierte Modelle in Model Garden untersuchen.
- Best Practices für die verantwortungsbewusste Anwendung von KI und Sicherheitsfilter in Vertex AI