La API Embeddings multimodales genera vectores basados en la entrada que proporciones, que puede incluir una combinación de datos de imagen, texto y vídeo. Los vectores de inserción se pueden usar para tareas posteriores, como la clasificación de imágenes o la moderación de contenido de vídeo.
Para obtener más información conceptual, consulta Inserciones multimodales.
Modelos admitidos:
Modelo | Código |
---|---|
Incrustaciones para multimodal | multimodalembedding@001 |
Sintaxis de ejemplo
Sintaxis para enviar una solicitud a la API Embeddings multimodal.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:predict \ -d '{ "instances": [ ... ], }'
Python
from vertexai.vision_models import MultiModalEmbeddingModel model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding") model.get_embeddings(...)
Lista de parámetros
Consulta los ejemplos para obtener más información sobre la implementación.
Cuerpo de la solicitud
{
"instances": [
{
"text": string,
"image": {
// Union field can be only one of the following:
"bytesBase64Encoded": string,
"gcsUri": string,
// End of list of possible types for union field.
"mimeType": string
},
"video": {
// Union field can be only one of the following:
"bytesBase64Encoded": string,
"gcsUri": string,
// End of list of possible types for union field.
"videoSegmentConfig": {
"startOffsetSec": integer,
"endOffsetSec": integer,
"intervalSec": integer
}
},
"parameters": {
"dimension": integer
}
}
]
}
Parámetros | |
---|---|
|
Opcional: La imagen para la que se van a generar las inserciones. |
|
Opcional: Texto para generar las inserciones. |
|
Opcional: El segmento de vídeo para generar incrustaciones. |
|
Opcional: La dimensión de la inserción, incluida en la respuesta. Solo se aplica a las entradas de texto e imagen. Valores aceptados: |
Imagen
Parámetros | |
---|---|
|
Opcional: Bytes de imagen codificados en una cadena Base64. Debe ser |
|
Opcional. Ubicación de Cloud Storage de la imagen en la que se va a realizar la inserción. Debe ser |
|
Opcional. Tipo MIME del contenido de la imagen. Valores admitidos: |
Vídeo
Parámetros | |
---|---|
|
Opcional: Bytes de vídeo codificados en una cadena base64. Debe ser |
|
Opcional: Ubicación de Cloud Storage del vídeo en el que se va a insertar. Debe ser |
|
Opcional: Configuración del segmento de vídeo. |
VideoSegmentConfig
Parámetros | |
---|---|
|
Opcional: Desplazamiento inicial del segmento de vídeo en segundos. Si no se especifica ningún valor, se calcula con |
|
Opcional: El desplazamiento final del segmento de vídeo en segundos. Si no se especifica ningún valor, se calcula con |
|
Opcional. Intervalo del vídeo en el que se generará la inserción. El valor mínimo de |
Cuerpo de la respuesta
{
"predictions": [
{
"textEmbedding": [
float,
// array of 128, 256, 512, or 1408 float values
float
],
"imageEmbedding": [
float,
// array of 128, 256, 512, or 1408 float values
float
],
"videoEmbeddings": [
{
"startOffsetSec": integer,
"endOffsetSec": integer,
"embedding": [
float,
// array of 1408 float values
float
]
}
]
}
],
"deployedModelId": string
}
Elemento de respuesta | Descripción |
---|---|
imageEmbedding |
Lista de 128, 256, 512 o 1408 dimensiones de flotantes. |
textEmbedding |
Lista de 128, 256, 512 o 1408 dimensiones de flotantes. |
videoEmbeddings |
Lista de 1408 dimensiones de números de coma flotante con la hora de inicio y de finalización (en segundos) del segmento de vídeo para el que se generan las inserciones. |
Ejemplos
Caso práctico básico
Generar embeddings a partir de una imagen
Usa el siguiente ejemplo para generar las inserciones de una imagen.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la región de tu proyecto. Por ejemplo,
us-central1
,europe-west2
oasia-northeast3
. Para ver una lista de las regiones disponibles, consulta Ubicaciones de la IA generativa en Vertex AI. - PROJECT_ID: tu Google Cloud ID de proyecto.
- TEXT: el texto de destino del que se obtendrán las inserciones. Por ejemplo,
a cat
. - B64_ENCODED_IMG: la imagen de destino de la que se obtendrán las inserciones. La imagen debe especificarse como una cadena de bytes codificada en Base64.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Cuerpo JSON de la solicitud:
{ "instances": [ { "text": "TEXT", "image": { "bytesBase64Encoded": "B64_ENCODED_IMG" } } ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Antes de probar este ejemplo, sigue las Go instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Generar embeddings a partir de vídeos
Usa el siguiente ejemplo para generar inserciones de contenido de vídeo.
REST
En el ejemplo siguiente se usa un vídeo ubicado en Cloud Storage. También puedes usar el campo video.bytesBase64Encoded
para proporcionar una representación de cadena codificada en Base64 del vídeo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la región de tu proyecto. Por ejemplo,
us-central1
,europe-west2
oasia-northeast3
. Para ver una lista de las regiones disponibles, consulta Ubicaciones de la IA generativa en Vertex AI. - PROJECT_ID: tu Google Cloud ID de proyecto.
- VIDEO_URI: el URI de Cloud Storage del vídeo de destino para obtener las inserciones.
Por ejemplo,
gs://my-bucket/embeddings/supermarket-video.mp4
.También puedes proporcionar el vídeo como una cadena de bytes codificada en Base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...]
videoSegmentConfig
(START_SECOND, END_SECOND, INTERVAL_SECONDS). Opcional. Los segmentos de vídeo específicos (en segundos) para los que se generan las inserciones.Por ejemplo:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]
Con esta configuración, se especifican datos de vídeo de 10 a 60 segundos y se generan inserciones para los siguientes intervalos de vídeo de 10 segundos: [10, 20), [20, 30), [30, 40), [40, 50) y [50, 60). Este intervalo de vídeo (
"intervalSec": 10
) se incluye en el modo de inserción de vídeo estándar y se cobra al usuario la tarifa del modo estándar.Si omite
videoSegmentConfig
, el servicio usará los siguientes valores predeterminados:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }
. Este intervalo de vídeo ("intervalSec": 16
) se incluye en el modo de inserción de vídeo esencial y se cobra al usuario según la tarifa del modo esencial.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Cuerpo JSON de la solicitud:
{ "instances": [ { "video": { "gcsUri": "VIDEO_URI", "videoSegmentConfig": { "startOffsetSec": START_SECOND, "endOffsetSec": END_SECOND, "intervalSec": INTERVAL_SECONDS } } } ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Respuesta (vídeo de 7 segundos, sin videoSegmentConfig
especificado):
{ "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" }
Respuesta (vídeo de 59 segundos, con la siguiente configuración de segmento de vídeo: "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
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Go
Antes de probar este ejemplo, sigue las Go instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Caso práctico avanzado
Usa el siguiente ejemplo para obtener incrustaciones de contenido de vídeo, texto e imagen.
En el caso de la inserción de vídeos, puede especificar el segmento de vídeo y la densidad de inserción.
REST
En el siguiente ejemplo se usan datos de imagen, texto y vídeo. Puedes usar cualquier combinación de estos tipos de datos en el cuerpo de tu solicitud.
En este ejemplo se usa un vídeo ubicado en Cloud Storage. También puedes usar el campo video.bytesBase64Encoded
para proporcionar una representación de cadena codificada en Base64 del vídeo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la región de tu proyecto. Por ejemplo,
us-central1
,europe-west2
oasia-northeast3
. Para ver una lista de las regiones disponibles, consulta Ubicaciones de la IA generativa en Vertex AI. - PROJECT_ID: tu Google Cloud ID de proyecto.
- TEXT: el texto de destino del que se obtendrán las inserciones. Por ejemplo,
a cat
. - IMAGE_URI: el URI de Cloud Storage de la imagen de destino de la que se van a obtener las inserciones.
Por ejemplo,
gs://my-bucket/embeddings/supermarket-img.png
.También puedes proporcionar la imagen como una cadena de bytes codificada en Base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...]
- VIDEO_URI: el URI de Cloud Storage del vídeo de destino para obtener las inserciones.
Por ejemplo,
gs://my-bucket/embeddings/supermarket-video.mp4
.También puedes proporcionar el vídeo como una cadena de bytes codificada en Base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...]
videoSegmentConfig
(START_SECOND, END_SECOND, INTERVAL_SECONDS). Opcional. Los segmentos de vídeo específicos (en segundos) para los que se generan las inserciones.Por ejemplo:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]
Con esta configuración, se especifican datos de vídeo de 10 a 60 segundos y se generan inserciones para los siguientes intervalos de vídeo de 10 segundos: [10, 20), [20, 30), [30, 40), [40, 50) y [50, 60). Este intervalo de vídeo (
"intervalSec": 10
) se incluye en el modo de inserción de vídeo estándar y se cobra al usuario la tarifa del modo estándar.Si omite
videoSegmentConfig
, el servicio usará los siguientes valores predeterminados:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }
. Este intervalo de vídeo ("intervalSec": 16
) se incluye en el modo de inserción de vídeo esencial y se cobra al usuario según la tarifa del modo esencial.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Cuerpo JSON de la solicitud:
{ "instances": [ { "text": "TEXT", "image": { "gcsUri": "IMAGE_URI" }, "video": { "gcsUri": "VIDEO_URI", "videoSegmentConfig": { "startOffsetSec": START_SECOND, "endOffsetSec": END_SECOND, "intervalSec": INTERVAL_SECONDS } } } ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Go
Antes de probar este ejemplo, sigue las Go instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Siguientes pasos
Para obtener documentación detallada, consulta lo siguiente: