Instalar o AlloyDB AI no AlloyDB Omni

Esta página mostra como instalar o AlloyDB Omni e integrar o AlloyDB AI.

A AlloyDB AI é um pacote de recursos incluídos no AlloyDB Omni que permite criar aplicativos corporativos de IA generativa. Para mais informações sobre a funcionalidade de IA/ML do AlloyDB, consulte Criar aplicativos de IA generativa.

O AlloyDB Omni com a IA do AlloyDB permite consultar modelos de ML remotos para trabalhar com previsões on-line e embeddings de texto gerados a partir de modelos de ML. O AlloyDB Omni com o AlloyDB AI também pode processar embeddings de vetores de outro conteúdo, como uma imagem, por exemplo, se você usar a interface google_ml.predict_row e fizer a tradução na consulta.

Com base no local em que você quer instalar o AlloyDB Omni com a IA do AlloyDB, selecione uma das seguintes opções:

Configurar a instância do AlloyDB Omni para consultar modelos remotos

O AlloyDB Omni pode consultar modelos de ML remotos usando a extensão google_ml_integration.

Se quiser consultar modelos da Vertex AI, configure a conta de serviço do AlloyDB Omni com a Vertex AI antes de instalar o AlloyDB Omni.

Para configurar o AlloyDB Omni para consultar modelos remotos, siga estas etapas:

  1. Crie uma conta de serviço com Google Cloud.

  2. Crie uma chave da conta de serviço no formato JSON e faça o download dela. Anote a chave da conta de serviço, porque você vai usá-la mais adiante neste procedimento.

  3. Copie a chave da conta de serviço que você criou para KEY_PATH. O caminho da chave precisa ser um caminho no seu host acessível e de propriedade do usuário que vai executar o contêiner do AlloyDB Omni.

  4. Ative a API Vertex AI no seu Google Cloud projeto.

    gcloud services enable aiplatform.googleapis.com
    
  5. Adicione as permissões de gerenciamento de identidade e acesso (IAM) da Vertex AI ao projeto e à conta de serviço apropriados.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_ID" \
        --role="roles/aiplatform.user"
    

    Substitua:

    • PROJECT_ID: ID do projeto Google Cloud .

    • SERVICE_ACCOUNT_ID: ID da conta de serviço que você criou na etapa 1. Isso inclui o sufixo @PROJECT_ID.iam.gserviceaccount.com completo. Por exemplo, my-service@my-project.iam.gserviceaccount.com.

Configurar o AlloyDB AI para o AlloyDB Omni

Para instalar o AlloyDB Omni e integrar a IA do AlloyDB, conclua as etapas a seguir como usuário raiz:

  1. Conclua todas as etapas listadas em Configurar o AlloyDB Omni para consultar modelos baseados em nuvem.

  2. Se houver um contêiner com o mesmo nome, interrompa e remova-o.

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

    Substitua:

    • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.
  3. Inicie um novo contêiner do AlloyDB Omni montando a chave no contêiner.

    Docker

    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest
    

    Docker

    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    docker.io/google/alloydbomni:latest
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v "KEY_PATH":/etc/postgresql/private-key.json \
    -p HOST_PORT:5432 \
    --restart=always \
    docker.io/google/alloydbomni:latest
    

    Substitua as seguintes variáveis:

    • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.
    • NEW_PASSWORD: senha atribuída ao usuário postgres do novo contêiner após a criação. NEW_PASSWORD só vai definir uma nova senha quando DATA_DIR for um novo local.
    • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
    • KEY_PATH: caminho para o arquivo de chave da conta de serviço.
    • HOST_PORT: porta TCP na máquina host em que o contêiner precisa publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host, especifique 5432.
  4. Faça com que o arquivo de chave seja legível pelo usuário postgres no contêiner do AlloyDB Omni.

    Docker

    docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Docker

    docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Podman

    podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Podman

    podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
    podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json

    Substitua as seguintes variáveis:

    • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.
    • KEY_PATH: caminho do host para o arquivo de chave da conta de serviço.
  5. Atualize o AlloyDB Omni adicionando as seguintes opções de configuração.

    Docker

    docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Docker

    docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Podman

    podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Podman

    podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
    omni_enable_ml_agent_process = 'on'
    omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json'
    EOF"
    

    Substitua as seguintes variáveis:

    • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.
  6. Reinicie o contêiner do AlloyDB Omni.

    Docker

    docker restart CONTAINER_NAME
    

    Docker

    docker restart CONTAINER_NAME
    

    Podman

    podman restart CONTAINER_NAME
    

    Podman

    podman restart CONTAINER_NAME
    

    Substitua a seguinte variável:

    • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.

Conectar usando o psql contêinerizado

Para se conectar ao servidor de banco de dados do AlloyDB Omni usando a própria cópia contêinerizada de psql, execute o seguinte comando:

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Substitua a seguinte variável:

  • CONTAINER_NAME: nome para atribuir o contêiner do AlloyDB Omni no registro de contêineres da máquina host. Por exemplo, my-omni-1.

Verificar o AlloyDB Omni com a instalação do AlloyDB AI

Para verificar se a instalação foi concluída e usa a previsão de modelo, digite o seguinte:

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

SELECT array_dims(embedding('text-embedding-005', 'AlloyDB AI')::real[]);

A saída será assim:

array_dims
------------
[1:768]
(1 row) 

Na consulta anterior, a chamada embedding() gera embeddings para o texto de entrada AlloyDB AI. array_dims retorna as dimensões da matriz retornada por embedding(). Como o modelo text-embedding-005 retorna uma saída com 768 dimensões, a saída é [768].

A seguir