Configurar a Pesquisa vetorial com o Private Service Connect

O Private Service Connect permite o consumo privado de serviços em redes VPC que pertencem a diferentes grupos, equipes, projetos ou organizações. É possível publicar e consumir serviços usando endereços IP definidos por você e internos à sua rede VPC para que os endpoints do Vector Search realizem pesquisas de semelhança vetorial.

A ativação do Private Service Connect em um endpoint do Vector Search é adequada para casos de uso que:

  1. Exigem baixa latência e uma conexão segura com os back-ends de exibição do Vector Search.
  2. Têm espaço IP limitado para reservas exclusivas de peering de VPC.
  3. É preciso acessar os back-ends de exibição em redes VPC de vários usuários.

Para saber mais sobre como configurar o Private Service Connect, consulte a Visão geral do Private Service Connect na documentação da nuvem privada virtual (VPC).

Criar o endpoint do índice

Para criar um endpoint com o Private Service Connect ativado, defina-o ao criar o endpoint. Isso é semelhante à criação de outros endpoints na Vertex AI.

  • PROJECT: o projeto de serviço em que você está criando recursos da Vertex AI.
  • VPC_PROJECT: o projeto em que a VPC do cliente reside. Para a configuração independente da VPC, é o mesmo que $PROJECT. Para a configuração da VPC compartilhada, será o projeto host da VPC.
  • PROJECT=<your-service-project>
    VPC_PROJECT=<your-vpc-project>
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      https://$VERTEX_ENDPOINT/v1/projects/$PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "<your-index-endpoint-name>", privateServiceConnectConfig:
      { enablePrivateServiceConnect: true, projectAllowlist: ["'$VPC_PROJECT'", "'$PROJECT'"] }}'
    

    Sobre as opções de implantação de índice

    É possível implantar o índice com conectividade de serviço automática ou manual.

    • Implantar com a automação do Private Service Connect (pré-lançamento): configure uma política de conexão de serviço e implante seus índices. A configuração de uma política de conexão de serviço permite implantar em uma rede específica sem criar um endereço de computação e uma regra de encaminhamento a cada vez.
    • Implantar com conexão manual: implante seu índice e crie manualmente um endereço de computação e uma regra de encaminhamento. Escolha essa opção se precisar usar vários endereços IP.

    Implantar com a automação do Private Service Connect

    É possível configurar uma política de conexão de serviço para que você não precise criar manualmente um endereço de computação e uma regra de encaminhamento após cada implantação de índice.

    1. Primeiro, crie uma política de conexão de serviço que especifique a rede, a classe de serviço e a região para implantar índices. Esta é uma configuração de uma só vez. Se você já fez isso, pule para o próximo procedimento.
    2. Implantar o índice.

    Limitações

    A automação permite apenas um endereço IP por projeto e por rede. Se você precisar usar vários endereços IP, consulte Implantar o índice manualmente.

    Criar uma política de conexão de serviço

    Você precisa ser um administrador de rede para criar uma política de conexão de serviço para automatizar a implantação do índice.

    Para automatizar a implantação de índices, siga estas etapas:

    1. Crie sua política de conexão de serviço.

      • PROJECT: o projeto de serviço em que você está criando recursos da Vertex AI.
      • VPC_PROJECT: o projeto em que a VPC do cliente reside. Para a configuração simples da VPC, será o mesmo que $PROJECT. Para a configuração da VPC compartilhada, esse é o projeto host da VPC.
      • NETWORK_NAME: o nome da rede a ser implantada, no formato projects//global/networks/.
      • REGION: a região da rede.
      • PSC_SUBNETS: a sub-rede do Private Service Connect a ser usada.
      gcloud network-connectivity service-connection-policies create <policy_name> \
      --project=<vpc_project> --network=<network_name> # in the format projects/<project_id>/global/networks/<network_name> \
      --service-class=gcp-vertexai --region=<region> --subnets=<psc subnets>
      
    2. Acesse a política de conexão de serviço.

      gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
      

    Implantar o índice

    1. Implante o índice.

      • PROJECT: o projeto de serviço em que você está criando recursos da Vertex AI.
      • VPC_PROJECT: o projeto em que a VPC do cliente reside. Para a configuração da VPC independente, é igual a $PROJECT. Para a configuração da VPC compartilhada, é o projeto host da VPC.
      • NETWORK_NAME: o nome da rede a ser implantada, no formato projects//global/networks/.
      • REGION: a região da rede.
      • PSC_SUBNETS: a sub-rede do Private Service Connect a ser usada.
      INDEX_ENDPOINT_ID=<>
      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json; charset=utf-8" "https://REGIONAL_ENDPOINT.googleapis.com/v1/projects/PROJECT_NUMBER/locations/REGION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex" -d '{
        "deployedIndex": {
          "id": "DEPLOYED_INDEX_ID",
          "index": "projects/PROJECT_NUMBER/locations/us-central1/indexes/INDEX_ID",
          "displayName": "DISPLAY_NAME",
          "psc_automation_configs": [
            {"project_id": "PROJECT_ID_1", "network": "NETWORK_1"},
            {"project_id": "PROJECT_ID_2", "network": "NETWORK_2" }]
        }
      }'
      

    Excluir política de conexão de serviço

    Se você precisar excluir a política de conexão de serviço, execute o seguinte comando:

    gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
    

    Implantar com conexão manual

    Implante o índice e crie uma regra de encaminhamento no projeto VPC.

    Implantar o índice

    Agora que o índice está pronto, nesta etapa, implante o índice no endpoint criado com o Private Service Connect ativado.

    gcloud

    O exemplo a seguir usa o comando gcloud ai index-endpoints deploy-index.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • INDEX_ENDPOINT_ID: o ID do endpoint do índice.
    • DEPLOYED_INDEX_ID: uma string especificada pelo usuário para identificar de maneira exclusiva o índice implantado. Ela precisa começar com uma letra e conter apenas letras, números ou sublinhados. Consulte DeployedIndex.id para ver as diretrizes de formato.
    • DEPLOYED_INDEX_ENDPOINT_NAME: nome de exibição do endpoint do índice implantado.
    • INDEX_ID: o ID do índice.
    • LOCATION: a região em que você está usando a Vertex AI.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
        --deployed-index-id=DEPLOYED_INDEX_ID \
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \
        --index=INDEX_ID \
        --region=LOCATION \
        --project=PROJECT_ID

    Windows (PowerShell)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID `
        --deployed-index-id=DEPLOYED_INDEX_ID `
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME `
        --index=INDEX_ID `
        --region=LOCATION `
        --project=PROJECT_ID

    Windows (cmd.exe)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^
        --deployed-index-id=DEPLOYED_INDEX_ID ^
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^
        --index=INDEX_ID ^
        --region=LOCATION ^
        --project=PROJECT_ID

    REST

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • INDEX_ENDPOINT_ID: o ID do endpoint do índice.
    • DEPLOYED_INDEX_ID: uma string especificada pelo usuário para identificar de maneira exclusiva o índice implantado. Ela precisa começar com uma letra e conter apenas letras, números ou sublinhados. Consulte DeployedIndex.id para ver as diretrizes de formato.
    • DEPLOYED_INDEX_ENDPOINT_NAME: nome de exibição do endpoint do índice implantado.
    • INDEX_ID: o ID do índice.
    • LOCATION: a região em que você está usando a Vertex AI.
    • PROJECT_ID: o ID do projeto do Google Cloud.
    • PROJECT_NUMBER: o número do projeto gerado automaticamente.

    Método HTTP e URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

    Corpo JSON da solicitação:

    {
     "deployedIndex": {
       "id": "DEPLOYED_INDEX_ID",
       "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
       "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME"
     }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
     "metadata": {
       "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
       "genericMetadata": {
         "createTime": "2022-10-19T17:53:16.502088Z",
         "updateTime": "2022-10-19T17:53:16.502088Z"
       },
       "deployedIndexId": "DEPLOYED_INDEX_ID"
     }
    }
    

    Console

    Use estas instruções para implantar seu índice.

    1. Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor

      Acessar a Vector Search

    2. Uma lista dos índices ativos será exibida.
    3. Selecione o nome do índice que você quer implantar. A página de detalhes do índice é aberta.
    4. Na página de detalhes do índice, clique em Implantar no endpoint. O painel de implantação do índice será aberto.
    5. Insira um nome de exibição. Ele funciona como um ID e não pode ser atualizado.
    6. No menu suspenso Endpoint, selecione o endpoint em que você quer implantar esse índice. Observação: o endpoint ficará indisponível se o índice já estiver implantado nele.
    7. Opcional: no campo Tipo de máquina, selecione "Padrão" ou "Alta memória".
    8. Opcional. Selecione Ativar escalonamento automático para redimensionar automaticamente o número de nós com base nas demandas das cargas de trabalho. Se o escalonamento automático estiver desativado, o número padrão de réplicas será 2.
    9. Clique em Implantar para implantar o modelo no endpoint. Observação: a implantação leva cerca de 30 minutos.

    Criar uma regra de encaminhamento no projeto VPC

    Após a conclusão da implantação do índice, o endpoint do índice retorna um URI de anexo de serviço em vez de um endereço IP. Você precisa criar um endereço de computação e uma regra de encaminhamento no projeto de VPC direcionado ao anexo de serviço usando o endereço de computação criado. Para criar um endereço de computação, use o exemplo a seguir:

    gcloud compute addresses create ${ADDRESS_NAME:?} \
        --region=${REGION:?} \
        --subnet=${SUBNET_NAME:?} \
        --project=${VPC_PROJECT:?}
    

    Para criar uma regra de encaminhamento que segmenta o URI do anexo de serviço usando o endereço de computação criado, use o exemplo a seguir:

    SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe {INDEX_ENDPOINT_ID}
    --format="value(deployedIndexes.privateEndpoints.serviceAttachment)"`
    
    gcloud compute forwarding-rules create ${ENDPOINT_NAME:?} \
        --network=${NETWORK_NAME:?} \
        --address=${ADDRESS_NAME:?} \
        --target-service-attachment=${SERVICE_ATTACHMENT_URI:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    (Opcional) Criar um registro DNS para o endereço IP

    Se você quiser se conectar e carregar sem memorizar o endereço IP real, crie um registro DNS. Esta etapa é opcional.

    DNS_NAME_SUFFIX=matchingengine.vertexai.goog. # Don't forget the "." in the end.
    DNS_NAME=${INDEX_ENDPOINT_ID:?}.${REGION:?}.${DNS_NAME_SUFFIX:?}
    
    gcloud dns managed-zones create ${DNS_ZONE_NAME:?} \
        --dns-name=${DNS_NAME_SUFFIX:?} \
        --visibility=private \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    
    gcloud dns record-sets create ${DNS_NAME:?} \
        --rrdatas=${IP_ADDRESS:?} \
        --type=A --ttl=60 \
        --zone=${DNS_ZONE_NAME:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    Enviar consultas para o endpoint do índice

    Agora que você criou um endpoint com o Private Service Connect e criou o índice, é possível começar a executar consultas.

    Para consultar o índice, acesse Consultar índices para saber os vizinhos mais próximos.

    A seguir