O modelo de embeddings para multimodal (multimodalembedding
) gera vetores de dimensão (128, 256, 512 ou 1.408 dimensões) com base na entrada que você fornece. Essa
entrada pode incluir qualquer combinação de texto, imagem ou vídeo. Os vetores de embedding podem ser usados para tarefas subsequentes, como classificação de imagem ou moderação de conteúdo.
Os vetores de embedding de texto, imagem e vídeo estão no mesmo espaço semântico com a mesma dimensionalidade. Portanto, esses vetores podem ser usados de maneira intercambiável em casos de uso, como pesquisa de imagens por texto ou pesquisa de vídeo por imagem.
Casos de uso
Alguns casos de uso comuns para embeddings multimodais são:
- Classificação de imagem ou vídeo: usa uma imagem ou um vídeo como entrada e prevê uma ou mais classes (rótulos).
- Pesquisa de imagens: pesquise imagens relevantes ou semelhantes.
- Pesquisa de conteúdo em vídeo
- Usando a pesquisa semântica: receba um texto como entrada e retorne um conjunto de frames classificados que correspondem à consulta.
- Usar a pesquisa por similaridade:
- Toma um vídeo como entrada e retorna um conjunto de vídeos correspondentes à consulta.
- Considere uma imagem como entrada e retorne um conjunto de vídeos que correspondam à consulta.
- Recomendações: gere recomendações de produtos ou anúncios com base em imagens ou vídeos (pesquisa por similaridade).
Para conferir esse modelo no console, consulte o card de modelo Embeddings para multimodal no Model Garden.
Solicitação HTTP
POST https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/us-central1/publishers/google/models/multimodalembedding:predict
Corpo da solicitação
{
"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
}
}
]
}
Use os parâmetros a seguir para o modelo de geração multimodal multimodal
embeddings
. Para mais informações, consulte Usar embeddings multimodais.
Parâmetro | Descrição | Valores aceitáveis |
---|---|---|
instances |
Uma matriz que contém o objeto com dados (texto, imagem e vídeo) para extrair informações. | matriz (1 objeto permitido) |
text |
O texto de entrada para o qual você quer criar um embedding. | String (máximo de 32 tokens) |
image.bytesBase64Encoded |
A imagem para a qual os embeddings são recebidos. Se você especificar image.bytesBase64Encoded , não será possível definir image.gcsUri . |
String de imagem codificada em Base64 (arquivo BMP, GIF, JPG ou PNG, no máximo 20 MB) |
image.gcsUri |
O URI do Cloud Storage da imagem para a qual os embeddings são recebidos. Se você especificar image.gcsUri , não será possível definir image.bytesBase64Encoded . |
URI da string do arquivo de imagem no Cloud Storage (arquivo BMP, GIF, JPG ou PNG, no máximo 20 MB) |
image.mimeType |
Opcional. O tipo MIME da imagem que você especifica. | string (image/bmp , image/gif , image/jpeg ou image/png ) |
video.bytesBase64Encoded |
O vídeo para o qual os embeddings são recebidos. Se você especificar video.bytesBase64Encoded , não será possível definir video.gcsUri . |
String de vídeo codificada em Base64 (arquivo AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM ou WMV) |
video.gcsUri |
O URI do Cloud Storage do vídeo para o qual os embeddings são recebidos. Se você especificar video.gcsUri , não será possível definir video.bytesBase64Encoded . |
URI da string do arquivo de vídeo no Cloud Storage (AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM ou WMV) |
videoSegmentConfig.startOffsetSec |
Opcional. O tempo (em segundos) em que o modelo começa a detecção de embedding. Padrão: 0 | integer |
videoSegmentConfig.endOffsetSec |
Opcional. O tempo (em segundos) em que o modelo termina a detecção de embedding. Padrão: 120 | integer |
videoSegmentConfig.intervalSec |
Opcional. O tempo (em segundos) dos segmentos de dados de vídeo para os quais os embeddings são gerados. Esse valor corresponde ao modo de embedding de vídeo (Essential, Standard ou Plus), que afeta o preço do recurso. Modo Essential ( intervalSec >= 15): menor número de segmentos de vídeo para os quais os embeddings são gerados. A opção de menor custo.Nível Standard (8 <= intervalSec < 15): mais segmentos de vídeo para os quais os embeddings são gerados em relação ao modo Essential, mas menos que o modo Plus. Opção de custo intermediário.Modo Plus (4 <= intervalSec < 8): maior número de segmentos de vídeo para os quais os embeddings são gerados. A opção de maior custo.Padrão: 16 (modo Essential) |
número inteiro (valor mínimo: 4) |
parameters.dimension |
Opcional. A dimensão do vetor para gerar embeddings (somente texto ou imagem). Se não for definido, o valor padrão de 1.408 será usado. | número inteiro (128 , 256 , 512 ou 1408 [padrão]) |
Exemplo de solicitação
REST
O exemplo a seguir usa dados de imagem, texto e vídeo. É possível usar qualquer combinação desses tipos de dados no corpo da solicitação.
Além disso, essa
amostra usa um vídeo localizado no Cloud Storage. Também é
possível usar o campo video.bytesBase64Encoded
para fornecer uma representação de string
codificada em base64 do
vídeo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: a região do seu projeto. Por exemplo,
us-central1
,europe-west2
ouasia-northeast3
. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI. - PROJECT_ID: o ID do projeto do Google Cloud.
- TEXT: o texto de destino para receber embeddings. Por exemplo,
a cat
. - IMAGE_URI: o URI do Cloud Storage do vídeo de destino para os embeddings serão recebidos.
Por exemplo,
gs://my-bucket/embeddings/supermarket-img.png
.Também é possível fornecer a imagem como uma string de bytes codificada em base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...]
- VIDEO_URI: o URI do Cloud Storage do vídeo de destino para os embeddings serão recebidos.
Por exemplo,
gs://my-bucket/embeddings/supermarket-video.mp4
.Você também pode fornecer o vídeo como uma string de bytes codificada em base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...]
videoSegmentConfig
START_SECONDEND_SECOND INTERVAL_SECONDS. Opcional. Os segmentos de vídeo específicos (em segundos) para os quais os embeddings são gerados.Exemplo:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]
O uso dessa configuração especifica dados de vídeo de 10 a 60 segundos e gera embeddings para os seguintes intervalos de vídeo de 10 segundos: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Esse intervalo de vídeo (
"intervalSec": 10
) se enquadra no modo de embedding de vídeo Standard, e a cobrança do usuário é feita conforme a taxa de preços do modo Standard.Se você omitir
videoSegmentConfig
, o serviço usará os seguintes valores padrão:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }
. Esse intervalo de vídeo ("intervalSec": 16
) se enquadra no modo de embedding de vídeo Essential, e a cobrança do usuário é feita conforme a taxa de preços do modo Essential.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Corpo JSON da solicitação:
{ "instances": [ { "text": "TEXT", "image": { "gcsUri": "IMAGE_URI" }, "video": { "gcsUri": "VIDEO_URI", "videoSegmentConfig": { "startOffsetSec": START_SECOND, "endOffsetSec": END_SECOND, "intervalSec": INTERVAL_SECONDS } } } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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 como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Node.js
Antes de testar essa amostra, siga as instruções de configuração para Node.js Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar essa amostra, siga as instruções de configuração para Java Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Corpo da resposta
{
"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 resposta | Descrição |
---|---|
imageEmbedding |
Lista de pontos flutuantes de 128, 256, 512 ou 1.408 dimensões. |
textEmbedding |
Lista de pontos flutuantes de 128, 256, 512 ou 1.408 dimensões. |
videoEmbeddings |
Lista de pontos flutuantes de 1.408 dimensões com o horário de início e término (em segundos) do segmento de vídeo ao qual os embeddings são gerados. |