Gerar embeddings multimodais

Com os embeddings multimodais no AlloyDB para PostgreSQL, é possível representar texto, imagens e vídeos em um espaço vetorial compartilhado para pesquisa semântica entre modalidades e geração aumentada por recuperação (RAG). É possível gerar embeddings para texto e para imagens ou segmentos de vídeo no Cloud Storage chamando um modelo multimodal compatível da Gemini Enterprise Agent Platform, como o modelo multimodalembedding@001, no SQL. Para uma lista de modelos disponíveis, consulte Modelos compatíveis.

Para saber mais sobre conceitos de IA generativa e embeddings de vetor no AlloyDB, consulte O que são embeddings.

Antes de começar

Antes de usar embeddings multimodais, faça o seguinte:

Integrar com a Agent Platform e instalar a extensão

  1. Configurar o acesso de usuários aos modelos da Agent Platform.
  2. Verifique se a versão mais recente do google_ml_integration está instalada.
    1. Para verificar a versão instalada, execute o seguinte comando:

      SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
      extversion 
      ------------
      1.5.2
      (1 row)
    2. Se a extensão não estiver instalada ou se a versão instalada for anterior à 1.5.2, atualize a extensão.

      CREATE EXTENSION IF NOT EXISTS google_ml_integration;
      ALTER EXTENSION google_ml_integration UPDATE;

      Se você tiver problemas ao executar os comandos anteriores ou se a extensão não for atualizada para a versão 1.5.2 depois de executar os comandos anteriores, entre em contato com o suporte doGoogle Cloud .

  3. Para usar a funcionalidade do mecanismo de consulta da IA do AlloyDB, defina a flag google_ml_integration.enable_ai_query_engine como on.

    SQL

    1. Ative o mecanismo de consulta de IA para a sessão atual.
      SET google_ml_integration.enable_ai_query_engine = on;
    2. Ativar recursos para um banco de dados específico em todas as sessões.
      ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
    3. Ative o mecanismo de consulta de IA para um usuário específico em sessões e bancos de dados.
      ALTER ROLE postgres SET google_ml_integration.enable_ai_query_engine = 'on';

    Console

    Para modificar o valor da flag google_ml_integration.enable_ai_query_engine, siga as etapas em Configurar flags de banco de dados de uma instância.

    gcloud

    Para usar a CLI gcloud, você pode instalar e inicializar a Google Cloud CLI ou usar o Cloud Shell.

    É possível modificar o valor da flag google_ml_integration.enable_ai_query_engine. Para mais informações, consulte Configurar flags de banco de dados de uma instância.

    gcloud alloydb instances update INSTANCE_ID \
      --database-flags google_ml_integration.enable_ai_query_engine=on \
      --region=REGION_ID \
      --cluster=CLUSTER_ID \
      --project=PROJECT_ID

Acessar dados no Cloud Storage para gerar embeddings multimodais

  • Para gerar embeddings multimodais, consulte o conteúdo no Cloud Storage usando um URI gs://.
  • Acesse o conteúdo do Cloud Storage pelo agente de serviço da Agent Platform do projeto atual. Por padrão, o agente de serviço da Agent Platform já tem permissão para acessar o bucket no mesmo projeto. Para mais informações, consulte o índice de papéis e permissões do IAM.
  • Para acessar dados em um bucket do Cloud Storage em outro Google Cloud projeto, execute o seguinte comando da CLI gcloud para conceder o papel de Leitor de objetos do Storage (roles/storage.objectViewer) ao agente de serviço da Agent Platform do seu projeto do AlloyDB.

    gcloud projects add-iam-policy-binding <ANOTHER_PROJECT_ID> \
    --member="serviceAccount:service-<PROJECT_ID>@gcp-sa-aiplatform.iam.gserviceaccount.com" \
    --role="roles/storage.objectViewer"

    Para mais informações, consulte Definir e gerenciar políticas do IAM em buckets.

Para gerar embeddings multimodais, selecione um dos seguintes esquemas.

Gerar embeddings multimodais

Para gerar embeddings de texto para um endpoint de modelo multimodalembedding@001, execute a seguinte instrução:

SELECT
  ai.text_embedding(
    model_id => 'multimodalembedding@001',
    content => 'TEXT');

Substitua TEXT pelo texto para o qual você quer gerar o embedding.

Para gerar embeddings de imagem para um endpoint de modelo multimodalembedding@001 registrado em que o mimetype da imagem é o padrão image/jpeg, execute a seguinte instrução:

SELECT
  ai.image_embedding(
    model_id => 'multimodalembedding@001',
    image => 'IMAGE_PATH_OR_TEXT',
    mimetype => 'MIMETYPE');

Substitua:

  • IMAGE_PATH_OR_TEXT pelo URI do Cloud Storage da imagem, por exemplo, gs://my-bucket/embeddings/flowers.jpeg, ou pela string base64 da imagem.
  • MIMETYPE pelo tipo MIME da imagem, por exemplo, image/jpeg. Para conferir a lista completa de tipos MIME compatíveis, consulte a API Multimodal Embeddings.

Para gerar embeddings de vídeo para um endpoint de modelo multimodalembedding@001 registrado, execute a seguinte instrução:

SELECT
  ai.video_embedding(
    model_id => 'multimodalembedding@001',
    video => 'VIDEO_URI');

Substitua VIDEO_URI pelo URI do Cloud Storage do vídeo de destino, por exemplo, gs://my-bucket/embeddings/supermarket-video.mp4, ou pela string base64 do vídeo. São matrizes bidimensionais que podem ser acessadas como my_array[0][5], como sintaxe. Para mais informações, consulte Matrizes.

A seguir