L'obtention de réponses par lot permet d'envoyer efficacement un grand nombre de requêtes d'embeddings non sensibles à la latence. Contrairement aux réponses en ligne, pour lesquelles vous êtes limité à une requête d'entrée à la fois, vous pouvez envoyer plusieurs requêtes d'embedding dans une seule requête par lot. Comme pour l'inférence par lot de données tabulaires dans Gemini Enterprise Agent Platform, vous déterminez votre emplacement de sortie, vous ajoutez vos entrées, et vos réponses sont renseignées de manière asynchrone dans votre emplacement de sortie.
Prédiction par lot d'embedding Gemini
La prédiction par lots des embeddings Gemini est basée sur l'inférence par lots Gemini et utilise un schéma mis à jour pour les entrées et les sorties :
- Stockage des entrées et des sorties : les entrées et les sorties doivent être mises en forme sous forme de fichiers JSON Lines (JSONL) stockés dans Cloud Storage. (Les tables BigQuery ne sont pas compatibles avec les modèles d'embedding Gemini.)
- Limites de jobs : chaque job par lot accepte jusqu'à 1 000 000 de lignes et une taille de fichier d'entrée maximale de 1 Go.
- Quotas et mise en file d'attente : il n'existe pas de quotas de simultanéité prédéfinis. Les jobs par lot sont planifiés de manière dynamique en fonction de la disponibilité des ressources et peuvent rester en file d'attente jusqu'à 72 heures, avec un délai de traitement cible de moins de 24 heures.
Modèles et zones géographiques compatibles
Le tableau suivant répertorie les modèles d'embedding Gemini et les emplacements compatibles pour l'inférence par lot :
| Modèle | ID du modèle | Pays acceptés |
|---|---|---|
| Gemini Embedding 001 | gemini-embedding-001 |
us-central1, us-east1, us-east4, us-west1, us-west4, europe-west1, europe-west4
|
| Gemini Embedding 2 | gemini-embedding-2 |
Monde (global), multirégional États-Unis (us),
multirégional UE (eu)
|
Pour en savoir plus sur les points de terminaison régionaux et mondiaux, consultez Emplacements.
Préparer les entrées
Importez vos données d'entrée par lot sous forme de fichier JSONL dans Cloud Storage, où chaque ligne est un objet JSON unique contenant un champ "request".
Gemini Embedding 001
Le modèle gemini-embedding-001 accepte une configuration task_type et title dans embed_content_config pour chaque ligne.
{"key": "id_1", "request": {"content": {"parts": [{"text": "Hello World"}]}, "embed_content_config": {"output_dimensionality": 768, "title": "some_title", "task_type": "RETRIEVAL_DOCUMENT"}}}
{"key": "id_2", "request": {"content": {"parts": [{"text": "Hello World again"}]}, "embed_content_config": {"output_dimensionality": 768, "title": "some_title_2", "task_type": "RETRIEVAL_DOCUMENT"}}}
Gemini Embedding 2
Le modèle gemini-embedding-2 accepte les entrées textuelles, visuelles, vidéo et audio. Contrairement à gemini-embedding-001, gemini-embedding-2 s'attend à ce que le type et le titre de la tâche soient insérés directement dans le texte de la requête. Si task_type ou title sont transmis dans embed_content_config, ils sont ignorés silencieusement (conformément au comportement de l'API en ligne).
Pour connaître les contraintes d'entrée multimodales, ainsi que les limites de jetons et de fichiers, consultez Limites de l'API Multimodal Embeddings.
{"key": "id_1", "request": {"content": {"parts": [{"text": "title: sample | text: Hello World"}]}, "embed_content_config": {"output_dimensionality": 768}}}
{"key": "id_2", "request": {"content": {"parts": [{"fileData": {"fileUri": "gs://cloud-samples-data/generative-ai/image/benchmark.jpeg", "mimeType": "image/jpeg"}}]}, "embed_content_config": {"output_dimensionality": 768}}}
Demander une réponse par lot
Selon le nombre d'éléments d'entrée que vous envoyez, un job par lot peut prendre un certain temps. Vous pouvez envoyer un job d'embedding par lot à l'aide de l'API REST ou du SDK Google Gen AI.
REST
Vous pouvez utiliser l'API REST pour créer un job d'embedding par lot en envoyant une requête POST au point de terminaison batchPredictionJobs.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- ENDPOINT_PREFIX : préfixe de la région ou de la région multiple suivi de
-(par exemple,us-central1-,us-oueu-). Si vous utilisez le point de terminaisonglobal, laissez ce champ vide (aiplatform.googleapis.com). - PROJECT_ID : ID de votre projet Cloud de Confiance by S3NS .
- LOCATION : emplacement compatible avec le modèle (par exemple,
us-central1pourgemini-embedding-001, ouglobal,usoueupourgemini-embedding-2). - BP_JOB_NAME : nom à afficher de votre job par lot.
- MODEL_ID : ID du modèle d'éditeur (
gemini-embedding-001ougemini-embedding-2). - INPUT_URI : URI Cloud Storage de votre fichier JSONL d'entrée (par exemple,
gs://my-bucket/path/to/input.jsonl). - OUTPUT_URI_PREFIX : bucket Cloud Storage et préfixe de répertoire dans lesquels les fichiers JSONL de sortie seront écrits (par exemple,
gs://my-bucket/path/to/output/).
Méthode HTTP et URL :
POST https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Corps JSON de la requête :
{
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
}
}
}
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.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
cat > request.json << 'EOF'
{
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
}
}
}
EOFExécutez ensuite la commande suivante pour envoyer votre requête REST :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
@'
{
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
}
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Exécutez ensuite la commande suivante pour envoyer votre requête REST :
$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://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{
"name": "projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID",
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2026-09-15T19:33:59.153782Z",
"updateTime": "2026-09-15T19:33:59.153782Z",
"modelVersionId": "1"
}
Exemples de commandes curl
La réponse inclut un identifiant unique pour le job par lot (BATCH_JOB_ID). Vous pouvez envoyer un job par lot et interroger son état à l'aide de curl :
Créez un job par lot :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"
État du job d'interrogation :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID"
Python
Installer
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
Découvrez comment installer ou mettre à jour le Go.
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
Installer
npm install @google/genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
Découvrez comment installer ou mettre à jour le Java.
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_ENTERPRISE=True
Récupérer une sortie par lot
Lorsqu'une tâche d'inférence par lots est terminée, les fichiers JSONL de sortie sont stockés dans le répertoire de sortie Cloud Storage que vous avez spécifié dans votre requête.
{"key": "id_1", "request": {...}, "response": {"tokenCount": "2", "embedding": {"values": [-0.015, 0.024, ...]}}}
{"key": "id_2", "request": {...}, "response": {"tokenCount": "3", "embedding": {"values": [-0.075, 0.031, ...]}}}
Autres ressources
- Pour connaître les options de configuration disponibles sur
gemini-embedding-001, consultez le Guide sur les embeddings de texte. - Pour connaître les options de configuration disponibles sur
gemini-embedding-2, consultez le Guide sur les embeddings multimodaux. - Pour en savoir plus sur les fonctionnalités et les quotas d'inférence par lot de Gemini, consultez Inférence par lot avec Gemini.
Ancienne prédiction par lot d'embeddings
Cette section décrit les workflows d'inférence par lot pour les anciens modèles d'embedding textuel (text-embedding-004, text-embedding-005 et text-multilingual-embedding-002), qui sont basés sur une architecture différente de celle des modèles d'embedding Gemini.
Modèles d'embeddings textuels compatibles avec les inférences par lot
Toutes les versions stables des anciens modèles d'embeddings textuels sont compatibles avec les inférences par lot et entièrement compatibles avec les environnements de production. Pour consulter la liste complète des modèles d'embedding, consultez Modèles et versions d'embedding.
Préparer vos entrées pour les anciens modèles
L'entrée des anciennes requêtes par lot est une liste de requêtes qui peuvent être stockées dans une table BigQuery ou sous forme de fichier JSON Lines (JSONL) dans Cloud Storage. Chaque requête peut inclure jusqu'à 30 000 requêtes.
Exemple JSONL
Cette section présente des exemples de mise en forme d'entrée et de sortie JSONL pour les anciens modèles.
Exemple d'entrée JSONL
{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}
Exemple de sortie JSONL
{"instance":{"content":"Give..."},"predictions": [{"embeddings":{"statistics":{"token_count":8,"truncated":false},"values":[0.2,....]}}],"status":""}
{"instance":{"content":"Best..."},"predictions": [{"embeddings":{"statistics":{"token_count":3,"truncated":false},"values":[0.1,....]}}],"status":""}
Exemple BigQuery
Cette section présente des exemples de mise en forme d'entrée et de sortie BigQuery pour les anciens modèles.
Exemple d'entrée BigQuery
Cet exemple montre une table BigQuery à une seule colonne.
| contenu |
|---|
| "Donner une brève description d'un modèle de machine learning :" |
| "Meilleure recette de pain à la banane :" |
Exemple de sortie BigQuery
| contenu | prédictions | état |
|---|---|---|
| "Donner une brève description d'un modèle de machine learning :" |
[ { "embeddings": { "statistics": { "token_count": 8, "truncated": false }, "values": [0.1, ...] } } ] |
|
| "Meilleure recette de pain à la banane :" |
[ { "embeddings": { "statistics": { "token_count": 3, "truncated": false }, "values": [0.2, ...] } } ] |
Demander une réponse par lot pour les anciens modèles
Selon le nombre d'éléments d'entrée envoyés, la tâche de génération par lot peut prendre un certain temps.
REST
Vous pouvez utiliser l'API REST pour obtenir des embeddings de texte par lot pour les anciens modèles en envoyant une requête POST au point de terminaison du modèle de l'éditeur.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- LOCATION : emplacement auquel envoyer votre demande (par exemple,
us-central1). - PROJECT_ID : ID de votre projet Cloud de Confiance by S3NS .
- BP_JOB_NAME : nom du projet.
- MODEL_ID : ID du modèle d'embedding hérité (par exemple,
text-embedding-005). - INPUT_URI : URI source d'entrée. Il s'agit d'un URI de table BigQuery ou d'un URI de fichier JSONL dans Cloud Storage.
- OUTPUT_URI : URI cible de sortie.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Corps JSON de la requête :
{
"name": "BP_JOB_NAME",
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/text-embedding-005",
"inputConfig": {
"instancesFormat":"bigquery",
"bigquerySource":{
"inputUri" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "OUTPUT_URI"
}
}
}
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.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
cat > request.json << 'EOF'
{
"name": "BP_JOB_NAME",
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/text-embedding-005",
"inputConfig": {
"instancesFormat":"bigquery",
"bigquerySource":{
"inputUri" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "OUTPUT_URI"
}
}
}
EOFExécutez ensuite la commande suivante pour envoyer votre requête REST :
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/batchPredictionJobs"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
@'
{
"name": "BP_JOB_NAME",
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/text-embedding-005",
"inputConfig": {
"instancesFormat":"bigquery",
"bigquerySource":{
"inputUri" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "OUTPUT_URI"
}
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Exécutez ensuite la commande suivante pour envoyer votre requête REST :
$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/batchPredictionJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{
"name": "projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/123456789",
"displayName": "BP_JOB_NAME",
"model": "projects/PROJECT_ID/locations/LOCATION/models/text-embedding-005",
"inputConfig": {
"instancesFormat": "bigquery",
"bigquerySource": {
"inputUri": "INPUT_URI"
}
},
"modelParameters": {},
"outputConfig": {
"predictionsFormat": "bigquery",
"bigqueryDestination": {
"outputUri": "OUTPUT_URI"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2023-07-12T20:46:52.148717Z",
"updateTime": "2023-07-12T20:46:52.148717Z",
"labels": {
"owner": "sample_owner",
"product": "llm"
},
"modelVersionId": "1",
"modelMonitoringStatus": {}
}
Exemple de commande curl
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/batchPredictionJobs"
Récupérer une sortie par lot pour les anciens modèles
Lorsqu'une ancienne tâche d'inférence par lot est terminée, le résultat est stocké dans le bucket Cloud Storage ou la table BigQuery que vous avez spécifié dans votre requête.
Étapes suivantes
- Découvrez comment obtenir des embeddings textuels.
- Découvrez comment obtenir des embeddings multimodaux.