Le modèle d'embeddings multimodaux génère des vecteurs multidimensionnels en fonction de l'entrée que vous fournissez, qui peut inclure une combinaison de données d'image, textuelles et vidéo. Les vecteurs d'embedding peuvent ensuite être utilisés pour des tâches ultérieures, telles que la classification d'images ou la modération de contenus vidéo.
Les vecteurs d'embedding d'image et de texte se trouvent dans le même espace sémantique avec la même dimensionnalité. Par conséquent, ces vecteurs peuvent être utilisés de manière interchangeable pour les cas d'utilisation comme la recherche d'image par texte ou la recherche de vidéo par image.
Pour les cas d'utilisation d'embeddings uniquement basées sur du texte, nous vous recommandons d'utiliser plutôt l'API d'embeddings textuels Gemini Enterprise Agent Platform. Par exemple, l'API d'embeddings textuels peut être plus efficace pour la recherche sémantique basée sur du texte, le clustering, l'analyse de longs documents et d'autres cas d'utilisation, comme la récupération de texte ou les systèmes de questions-réponses. Pour en savoir plus, consultez Obtenir des embeddings textuels.
Modèles compatibles
Vous pouvez obtenir des embeddings multimodaux à l'aide des modèles suivants :
gemini-embedding-2multimodalembedding@001
Bonnes pratiques
Tenez compte des aspects d'entrée suivants lorsque vous utilisez le modèle d'embeddings multimodaux :
- Texte dans les images : le modèle peut distinguer du texte dans les images, comme la reconnaissance optique des caractères (OCR). Si vous devez faire la distinction entre une description du contenu de l'image et le texte présent dans l'image, envisagez d'utiliser le prompt engineering pour spécifier votre contenu cible.
Par exemple, au lieu de simplement indiquer "chat", spécifiez "image d'un chat" ou "le texte 'chat'", selon votre cas d'utilisation.
le texte "chat"
Le mot "chat" rendu dans une grande police en gras.
image d'un chat
Crédit image : Manja Vitolic sur Unsplash. - Similarités des embeddings : le produit scalaire des embeddings n'est pas une probabilité calibrée. Le produit scalaire est une métrique de similarité et peut avoir des distributions de scores différentes pour différents cas d'utilisation. Par conséquent, évitez d'utiliser un seuil de valeur fixe pour mesurer la qualité. Utilisez plutôt des approches de classement pour la récupération ou la fonction sigmoïde pour la classification.
Utiliser gemini-embedding-2
Le modèle gemini-embedding-2 accepte les entrées entrelacées pour les modalités image, texte, document, audio et vidéo.
Spécifier des instructions de tâche pour améliorer les performances
Vous pouvez utiliser des embeddings pour un large éventail de tâches, de la classification à la recherche de documents. En spécifiant la bonne instruction de tâche, vous pouvez optimiser les embeddings pour les relations souhaitées, ce qui maximise la précision et l'efficacité.
Les tableaux suivants montrent des exemples de mise en forme des requêtes et des documents pour les cas d'utilisation symétriques et asymétriques à l'aide du modèle gemini-embedding-2.
Cas d'utilisation de la récupération (format asymétrique)
| Cas d'utilisation | Structure d'une requête | Structure du document |
|---|---|---|
| Requête de recherche | task: search result | query: {content} |
title: {title} | text: {content}Si aucun titre n'est défini, utilisez title: none. |
| Systèmes de questions-réponses | task: question answering | query: {content} |
title: {title} | text: {content} |
| Fact-checking | task: fact checking | query: {content} |
title: {title} | text: {content} |
| Récupération du code | task: code retrieval | query: {content} |
title: {title} | text: {content} |
Cas d'utilisation à entrée unique (format symétrique)
| Cas d'utilisation | Structure d'entrée |
|---|---|
| Classification | task: classification | query: {content} |
| Clustering | task: clustering | query: {content} |
| Similarité sémantique | task: sentence similarity | query: {content}Ne pas utiliser pour la recherche ou la récupération. Elle est destinée à la similarité textuelle sémantique. |
Exemple d'utilisation en 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}"
Utilisation de l'API
Limites d'API
Les limites suivantes s'appliquent lorsque vous utilisez le modèle gemini-embedding-2.
| Limite | Valeur et description |
|---|---|
| Données textuelles, d'image, de document, vidéo et audio | |
| Limite de jetons d'entrée | 8 192 jetons Les entrées de plus de 8 192 jetons sont tronquées en mode silencieux. Toutes les modalités partagent la fenêtre de contexte de 8 192 jetons. Le nombre de jetons est comptabilisé comme suit par modalité :
|
| Dimensionnalité de la sortie | 3 072 (valeur par défaut, configurable à l'aide du paramètre output_dimensionality) |
| Limites concernant les images | 6 images par requête |
| Formats d'image | JPEG, PNG, WebP, BMP, HEIC, HEIF, AVIF |
| Dimensions de l'image | 16 384 x 16 384 pixels maximum par image |
| Limites de documents | Un fichier par demande, jusqu'à six pages Pour une qualité optimale, nous vous recommandons d'utiliser un fichier PDF par page. |
| Formats de documents | |
| Données vidéo et audio | |
| Limites pour les vidéos | Une vidéo par requête, jusqu'à 120 images La limite de 120 secondes est basée sur le paramètre par défaut de 1 FPS. La durée varie lorsque vous définissez différents FPS : durée = 120 / FPS. Par défaut, l'extraction audio est désactivée pour les vidéos. Lorsque l'option d'extraction de la piste audio est activée, la durée est soumise à la durée audio maximale de 180 secondes. La durée totale de la vidéo est limitée à la fois par la limite audio et par la fenêtre de contexte des jetons (8 192 jetons). |
| Formats vidéo | Conteneur : MOV, MP4. Codec : AV1, H264, H265, VP9. |
| Limites audio | 180 secondes par requête La prise en charge audio est optimisée pour la parole. Il est possible que le son ambiant et la musique ne soient pas de la meilleure qualité. |
| Formats audio | MP3, WAV |
Durée de la vidéo avec extraction audio
Étant donné que toutes les modalités partagent la fenêtre de contexte de 8 192 jetons, la durée maximale de la vidéo varie lorsque vous activez audio_track_extraction :
| Modalité | Nombre de jetons |
|---|---|
| Audio | 25 jetons par seconde |
| Image vidéo | 66 jetons par frame |
| Codes temporels | 10 jetons par seconde (deux codes temporels par seconde au format "mm:ss") |
| FPS | Déterminé par le paramètre FPS (1 par défaut) |
La durée totale de la vidéo est limitée à la fois par la durée maximale de l'assistance audio (180 secondes) et par la fenêtre de contexte de 8 192 jetons.
Exemple de calcul :
Si vous traitez une vidéo avec une fréquence d'échantillonnage par défaut de 1 FPS et que vous activez l'extraction audio :
- Taux de consommation : chaque seconde de vidéo consomme 66 jetons (1 image) + 25 jetons (1 seconde d'audio) + 10 jetons (codes temporels) = 101 jetons.
- Durée maximale : avec une limite de 8 192 jetons, la durée maximale est d'environ 8 192 / 101 ≈ 81 secondes.
Si l'entrée dépasse la fenêtre de contexte, la partie excédentaire sera tronquée sans avertissement.
Obtenir des embeddings multimodaux
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)
Emplacements
Un emplacement est une région que vous pouvez spécifier dans une requête pour contrôler l'emplacement de stockage des données au repos. Pour obtenir la liste des régions disponibles, consultez Emplacements Agent Platform.
Quotas
Pour vérifier la limite de quota pour gemini-embedding-2, consultez Quotas et limites système de l'IA générative sur Gemini Enterprise Agent Platform.
Dimensions
Lorsque vous utilisez le modèle gemini-embedding-2, vous pouvez spécifier des dimensions inférieures à l'aide du paramètre output_dimensionality dans EmbedContentConfig.
L'exemple suivant renvoie un vecteur de dimension 128. Pour gemini-embedding-2, les embeddings de sortie sont déjà normalisés L2 pour les dimensions non définies par défaut (contrairement à 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
Paramètres
La fréquence d'échantillonnage vidéo par défaut est d'une image par seconde (FPS). Vous pouvez ajouter des paramètres supplémentaires à l'aide de video_metadata :
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)
Des options supplémentaires sont disponibles dans EmbedContentConfig.
| Option | Type | Description |
|---|---|---|
output_dimensionality |
int |
Réduisez la dimensionnalité de l'embedding de sortie. |
document_ocr |
bool |
Activez l'OCR pour l'entrée de documents. |
audio_track_extraction |
bool |
Extraire l'audio d'une entrée vidéo. |
Utiliser multimodalembedding@001
Les limites suivantes s'appliquent lorsque vous utilisez le modèle multimodalembedding@001 pour les embeddings textuels et d'images :
| Limite | Valeur et description |
|---|---|
| Données textuelles et d'image | |
| Nombre maximal de requêtes API par minute et par projet | 120 à 600, selon la région |
| Longueur de texte maximale | 32 jetons (environ 32 mots) La longueur maximale du texte est de 32 jetons (environ 32 mots). Si l'entrée dépasse 32 jetons, le modèle la raccourcit à cette longueur en interne. |
| Langue | Anglais |
| Formats d'image | BMP, GIF, JPG, PNG |
| Taille d'image | Images encodées en base64 : 20 Mo (lors du transcodage vers PNG) Images Cloud Storage : 20 Mo (format de fichier d'origine) La taille maximale d'image acceptée est de 20 Mo. Pour éviter d'augmenter la latence du réseau, utilisez des images plus petites. En outre, le modèle redimensionne les images au format 512 x 512 pixels. Par conséquent, vous n'avez pas besoin de fournir des images de résolution supérieure. |
| Données vidéo | |
| Compatibilité audio | N/A : le modèle ne prend pas en compte le contenu audio lors de la génération d'embeddings vidéo. |
| Formats vidéo | AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM et WMV |
| Durée maximale de la vidéo (Cloud Storage) | Aucune limite. Toutefois, vous ne pouvez analyser que deux minutes de contenu à la fois. |
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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 Gemini Enterprise Agent Platform 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 Gemini Enterprise Agent Platform 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.-
Configurez l'authentification pour votre environnement.
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Java
Pour utiliser les exemples Java de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Après avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :
gcloud components update gcloud components install beta
-
Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.
Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .
Node.js
Pour utiliser les exemples Node.js de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Après avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :
gcloud components update gcloud components install beta
-
Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.
Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .
Python
Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Après avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :
gcloud components update gcloud components install beta
-
Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.
Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Après avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :
gcloud components update gcloud components install beta
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .
-
- Pour utiliser le SDK Python, suivez les instructions de la page Installer le SDK Agent Platform pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Agent Platform pour Python.
- Facultatif. Consultez les tarifs de cette fonctionnalité. Les tarifs des embeddings dépendent du type de données que vous envoyez (comme des images ou du texte), ainsi que du mode que vous utilisez pour certains types de données (par exemple, Video Plus, Video Standard ou Video Essential).
Emplacements
Un emplacement est une région que vous pouvez spécifier dans une requête pour contrôler l'emplacement de stockage des données au repos. Pour obtenir la liste des régions disponibles, consultez Emplacements Agent Platform.
Messages d'erreur
Cette section décrit les messages d'erreur courants que vous pouvez rencontrer.
Le quota autorisé a été dépassé
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.
Si vous recevez cette erreur pour la première fois, utilisez la console Google Cloud pour demander un ajustement de quota pour votre projet. Utilisez les filtres suivants avant de demander votre ajustement :
Service ID: aiplatform.googleapis.commetric: aiplatform.googleapis.com/online_prediction_requests_per_base_modelbase_model:multimodalembedding
Si vous avez déjà envoyé une demande d'ajustement de quota, attendez avant d'en envoyer une autre. Si vous devez augmenter davantage le quota, répétez la demande d'ajustement de quota en apportant une justification.
Spécifier des embeddings de dimension inférieure
Selon le modèle utilisé, une requête d'embedding renvoie un vecteur de 1 408 ou 3 072 dimensions à virgule flottante. Vous pouvez spécifier des embeddings de dimension inférieure pour les données de texte et d'image afin d'optimiser la latence et le stockage, ou la qualité. Les embeddings de dimension inférieure réduisent les besoins de stockage et la latence pour les tâches d'embedding ultérieures (comme la recherche ou les recommandations). Les embeddings de dimension supérieure offrent une plus grande précision pour ces tâches, mais avec des besoins de stockage et une latence plus élevés.
Le tableau suivant illustre les dimensions inférieures par défaut et disponibles pour chaque modèle :
| Modèle | Dimensions par défaut (priorité la plus élevée) | Dimensions acceptées (plage) | Dimensions inférieures recommandées |
|---|---|---|---|
gemini-embedding-2 |
3 072 | De 128 à 3 072 | 128, 768 ou 1 536 |
multimodalembedding@001 |
1408 | 128 à 1 408 | 128, 256 ou 512 |
Utilisez les exemples suivants pour générer des embeddings avec des dimensions inférieures :
REST
Vous pouvez accéder à un nombre inférieur de dimensions en ajoutant le champ parameters.dimension.
Le paramètre accepte toutes les valeurs de dimension disponibles pour le modèle.
Par exemple, vous pouvez spécifier 128, 256, 512 ou 1408 lorsque vous utilisez le modèle multimodalembedding@001. La réponse inclut l'embedding de la dimension spécifiée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud .
-
IMAGE_URI : URI Cloud Storage de l'image cible pour laquelle obtenir des embeddings. Exemple :
gs://my-bucket/embeddings/supermarket-img.png.Vous pouvez également fournir l'image en tant que chaîne d'octets encodée en base64 :
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
TEXT : texte cible pour lequel obtenir des embeddings. Exemple :
a cat -
EMBEDDING_DIMENSION : nombre de dimensions d'un embedding. Les valeurs inférieures permettent de réduire la latence lors de l'utilisation de ces embeddings pour les tâches ultérieures, tandis que les valeurs plus élevées offrent une meilleure précision. Valeurs disponibles :
128,256,512et1408(par défaut).
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Corps JSON de la requête :
{
"instances": [
{
"image": {
"gcsUri": "IMAGE_URI"
},
"text": "TEXT"
}
],
"parameters": {
"dimension": EMBEDDING_DIMENSION
}
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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 dimensions :
{
"predictions": [
{
"imageEmbedding": [
0.0279239565,
[...128 dimension vector...]
0.00403284049
],
"textEmbedding": [
0.202921599,
[...128 dimension vector...]
-0.0365431122
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}256 dimensions :
{
"predictions": [
{
"imageEmbedding": [
0.248620048,
[...256 dimension vector...]
-0.0646447465
],
"textEmbedding": [
0.0757875815,
[...256 dimension vector...]
-0.02749932
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}512 dimensions :
{
"predictions": [
{
"imageEmbedding": [
-0.0523675755,
[...512 dimension vector...]
-0.0444030389
],
"textEmbedding": [
-0.0592851527,
[...512 dimension vector...]
0.0350437127
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Go
Obtenir des embeddings d'images et de texte (multimodalembedding@001)
Utilisez les exemples de code suivants pour envoyer une requête d'embedding avec des données de type image et texte. Les exemples montrent comment envoyer une requête avec les deux types de données, mais vous pouvez également utiliser le service avec un seul type de données.
Obtenir des embeddings textuels et d'images
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud.
-
TEXT : texte cible pour lequel obtenir des embeddings. Exemple :
a cat - B64_ENCODED_IMG : image cible pour laquelle obtenir des embeddings. L'image doit être spécifiée en tant que chaîne d'octets encodés en base64.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Corps JSON de la requête :
{
"instances": [
{
"text": "TEXT",
"image": {
"bytesBase64Encoded": "B64_ENCODED_IMG"
}
}
]
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de la plate-forme d'agents à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Agent Platform pour Node.js.
Pour vous authentifier auprès de la plate-forme d'agents, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de la plate-forme d'agents à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Agent Platform pour Java.
Pour vous authentifier auprès de la plate-forme d'agents, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de la plate-forme d'agents à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Agent Platform pour Go.
Pour vous authentifier auprès de la plate-forme d'agents, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Obtenir des embeddings de vidéos, d'images ou de texte (multimodalembedding@001)
Lors de l'envoi d'une requête d'embedding, vous pouvez spécifier uniquement une vidéo en entrée ou une combinaison de données vidéo, d'image et textuelles.
Modes d'embedding vidéo
Vous pouvez utiliser trois modes avec les embeddings vidéo : Essential, Standard ou Plus. Le mode correspond à la densité des embeddings générés, qui peut être spécifiée par la configuration interval_sec de la requête. Pour chaque intervalle vidéo d'une durée de interval_sec, un embedding est généré. La durée minimale de l'intervalle vidéo est de quatre secondes. Les intervalles de plus de 120 secondes peuvent avoir un impact négatif sur la qualité des embeddings générés.
Les tarifs de l'embedding vidéo dépendent du mode que vous utilisez. Pour en savoir plus, reportez-vous à la page Tarifs.
Le tableau suivant récapitule les trois modes que vous pouvez utiliser pour les embeddings vidéo :
| Mode | Nombre maximal d'embeddings par minute | Intervalle d'embedding vidéo (valeur minimale) |
|---|---|---|
| Essential | 4 | 15 Cela correspond à intervalSec >= 15. |
| Standard | 8 | 8 Cela correspond à 8 <= intervalSec < 15. |
| Plus | 15 | 4 Cela correspond à 4 <= intervalSec < 8. |
Bonnes pratiques concernant les embeddings vidéo
Tenez compte des points suivants lorsque vous envoyez des requêtes d'embedding vidéo :
Pour générer un seul embedding pour les deux premières minutes d'une vidéo d'entrée de n'importe quelle durée, utilisez le paramètre
videoSegmentConfigsuivant :request.json:// other request body content "videoSegmentConfig": { "intervalSec": 120 } // other request body contentPour générer un embedding pour une vidéo d'une durée supérieure à deux minutes, vous pouvez envoyer plusieurs requêtes spécifiant les heures de début et de fin dans la configuration
videoSegmentConfig: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 contentObtenir des embeddings vidéo
Utilisez l'exemple suivant pour obtenir des embeddings uniquement pour du contenu vidéo.
REST
L'exemple suivant utilise une vidéo située dans Cloud Storage. Vous pouvez également utiliser le champ video.bytesBase64Encoded pour fournir une représentation de la vidéo sous forme de chaîne encodée en base64.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud.
-
VIDEO_URI : URI Cloud Storage de la vidéo cible pour laquelle obtenir des embeddings. Exemple :
gs://my-bucket/embeddings/supermarket-video.mp4.Vous pouvez également fournir la vidéo en tant que chaîne d'octets encodés en base64 :
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Facultatif. Définit les séquences vidéo spécifiques (en secondes) pour lesquelles les embeddings sont générés.Exemple :
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]L'utilisation de cette configuration spécifie la présence de données vidéo de la 10e à la 60e seconde, et génère des embeddings pour les intervalles de 10 secondes suivants : [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Cet intervalle vidéo (
"intervalSec": 10) est défini sur le mode d'embedding vidéo Standard. Vous êtes facturé au tarif en mode Standard.Si vous omettez
videoSegmentConfig, le service utilise les valeurs par défaut suivantes :"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Cet intervalle vidéo ("intervalSec": 16) est défini sur le mode d'embedding vidéo Essential. L'utilisateur est facturé au tarif en mode Essential.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Corps JSON de la requête :
{
"instances": [
{
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Réponse (sept secondes de vidéo, pas d'élément videoSegmentConfig spécifié) :
{
"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"
}Réponse (59 secondes de vidéo, avec la configuration de séquence vidéo suivante : "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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de la plate-forme d'agents à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Agent Platform pour Go.
Pour vous authentifier auprès de la plate-forme d'agents, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Obtenir des embeddings d'images, de texte et de vidéos
L'exemple suivant permet d'obtenir des embeddings pour du contenu vidéo, du texte et des images.
REST
L'exemple ci-dessous utilise des données de type image, texte et vidéo. Vous pouvez utiliser n'importe quelle combinaison de ces types de données dans le corps de votre requête.
En outre, cet exemple utilise une vidéo située dans Cloud Storage. Vous pouvez également utiliser le champ video.bytesBase64Encoded pour fournir une représentation de la vidéo sous forme de chaîne encodée en base64.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID du projet Google Cloud.
-
TEXT : texte cible pour lequel obtenir des embeddings. Exemple :
a cat -
IMAGE_URI : URI Cloud Storage de l'image cible pour laquelle obtenir des embeddings. Exemple :
gs://my-bucket/embeddings/supermarket-img.png.Vous pouvez également fournir l'image en tant que chaîne d'octets encodée en base64 :
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
VIDEO_URI : URI Cloud Storage de la vidéo cible pour laquelle obtenir des embeddings. Exemple :
gs://my-bucket/embeddings/supermarket-video.mp4.Vous pouvez également fournir la vidéo en tant que chaîne d'octets encodés en base64 :
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Facultatif. Définit les séquences vidéo spécifiques (en secondes) pour lesquelles les embeddings sont générés.Exemple :
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]L'utilisation de cette configuration spécifie la présence de données vidéo de la 10e à la 60e seconde, et génère des embeddings pour les intervalles de 10 secondes suivants : [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Cet intervalle vidéo (
"intervalSec": 10) est défini sur le mode d'embedding vidéo Standard. L'utilisateur est facturé au tarif en mode Standard.Si vous omettez
videoSegmentConfig, le service utilise les valeurs par défaut suivantes :"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Cet intervalle vidéo ("intervalSec": 16) est défini sur le mode d'embedding vidéo Essential. L'utilisateur est facturé au tarif en mode Essential.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Corps JSON de la requête :
{
"instances": [
{
"text": "TEXT",
"image": {
"gcsUri": "IMAGE_URI"
},
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de la plate-forme d'agents à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Agent Platform pour Go.
Pour vous authentifier auprès de la plate-forme d'agents, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Étapes suivantes
- Consultez l'article de blog "Qu'est-ce que la recherche multimodale : les LLM avec vision modifient les entreprises".
- Pour plus d'informations sur les cas d'utilisation uniquement basés sur du texte (recherche sémantique basée sur du texte, clustering, analyse de longs documents et autres cas d'utilisation impliquant la récupération de texte ou des systèmes de questions-réponses), consultez Obtenir des embeddings textuels.
- Découvrez d'autres modèles pré-entraînés dans Model Garden.
- Découvrez les bonnes pratiques d'IA responsable et les filtres de sécurité dans Gemini Enterprise Agent Platform.