Use o Private Service Connect para aceder a um índice do Vector Search a partir de instalações locais

Os anfitriões no local podem alcançar um ponto final do índice de pesquisa vetorial através da Internet pública ou de forma privada através de uma arquitetura de rede híbrida que usa o Private Service Connect através do Cloud VPN ou do Cloud Interconnect. Ambas as opções oferecem encriptação SSL/TLS. No entanto, a opção privada oferece um desempenho muito melhor e, por isso, é recomendada para aplicações críticas.

Neste tutorial, vai usar a VPN de alta disponibilidade (VPN de HA) para aceder a um ponto final do índice de pesquisa vetorial de forma privada, entre duas redes da nuvem virtual privada (VPC) que podem servir de base para a conetividade privada multinuvem e no local.

Este tutorial destina-se a administradores de redes empresariais, cientistas de dados e investigadores que estejam familiarizados com o Vertex AI, a nuvem virtual privada, a Google Cloud consola e oCloud Shell. A familiaridade com a pesquisa vetorial é útil, mas não obrigatória.

Diagrama arquitetónico da utilização do Private Service Connect para aceder a um índice de pesquisa vetorial a partir de instalações locais.

Crie as redes VPC

Nesta secção, cria duas redes VPC: uma para criar um índice do Vector Search e implementá-lo num ponto final, e outra para o acesso privado a esse ponto final.

Crie a rede VPC para o ponto final do índice do Vector Search (vertex-networking-vpc)

  1. Crie a rede de VPC para o ponto final do índice:

    gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
    
  2. Crie uma sub-rede denominada workbench-subnet, com um intervalo IPv4 principal de 172.16.20.0/28:

    gcloud compute networks subnets create workbench-subnet \
      --project=$projectid --range=172.16.20.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    
  3. Crie uma sub-rede denominada psc-forwarding-rule-subnet, com um intervalo IPv4 principal de 172.16.30.0/28:

    gcloud compute networks subnets create psc-forwarding-rule-subnet \
      --project=$projectid \
      --range=172.16.30.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    

Crie a rede VPC para acesso privado ao ponto final (onprem-vpc)

  1. Crie a rede VPC para simular a rede no local (onprem-vpc):

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. Na rede onprem-vpc, crie uma sub-rede denominada onprem-vpc-subnet1 com um intervalo IPv4 principal de 172.16.10.0/29:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
      --network onprem-vpc \
      --range 172.16.10.0/29 \
      --region us-central1
    

Verifique se as redes VPC estão configuradas corretamente

  1. Na Google Cloud consola, aceda ao separador Redes no projeto atual na página Redes de VPC.

    Aceda a redes de VPC

  2. Na lista de redes VPC, verifique se as duas redes foram criadas: vertex-networking-vpc e onprem-vpc.

  3. Clique no separador Sub-redes no projeto atual.

  4. Na lista de sub-redes de VPC, verifique se as sub-redes workbench-subnet, psc-forwarding-rule-subnet e onprem-vpc-subnet1 foram criadas.

Crie a instância de VM on-prem-client

Nesta secção, cria uma instância de VM para representar uma aplicação cliente que envia pedidos para o ponto final do índice do Vector Search através da VPN de alta disponibilidade.

  1. No Cloud Shell, crie a instância de VM on-prem-client:

    gcloud compute instances create on-prem-client \
      --zone=us-central1-a \
      --image-family=debian-11 \
      --image-project=debian-cloud \
      --subnet=onprem-vpc-subnet1 \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --no-address \
      --shielded-secure-boot \
      --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install tcpdump dnsutils -y"
    
    

Configure a conetividade híbrida

Nesta secção, cria dois gateways de VPN de HA que estão ligados entre si. Uma reside na vertex-networking-vpc rede VPC. O outro reside na rede VPC onprem-vpc. Cada gateway contém um Cloud Router e um par de túneis VPN.

Crie os gateways de VPN de alta disponibilidade

  1. No Cloud Shell, crie o gateway de VPN de alta disponibilidade para a rede VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Crie o gateway de VPN de alta disponibilidade para a rede VPC:onprem-vpc

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Na Google Cloud consola, aceda ao separador Gateways de VPN do Cloud na página VPN.

    Aceda à VPN

  4. Verifique se os dois gateways (vertex-networking-vpn-gw1 e onprem-vpn-gw1) foram criados e se cada um tem dois endereços IP de interface.

Crie routers do Cloud Router e gateways do Cloud NAT

Em cada uma das duas redes VPC, cria dois Cloud Routers: um geral e um regional. Em cada um dos Cloud Routers regionais, cria um gateway NAT na nuvem. As gateways NAT na nuvem oferecem conetividade de saída para instâncias de máquinas virtuais (VM) do Compute Engine que não têm endereços IP externos.

  1. No Cloud Shell, crie um Cloud Router para a rede VPC:vertex-networking-vpc

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Crie um Cloud Router para a rede de VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    
  3. Crie um Cloud Router regional para a rede VPC:vertex-networking-vpc

    gcloud compute routers create cloud-router-us-central1-vertex-nat \
      --network vertex-networking-vpc \
      --region us-central1
    
  4. Configure uma gateway do Cloud NAT no Cloud Router regional:

    gcloud compute routers nats create cloud-nat-us-central1 \
      --router=cloud-router-us-central1-vertex-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  5. Crie um Cloud Router regional para a rede VPC:onprem-vpc

    gcloud compute routers create cloud-router-us-central1-onprem-nat \
      --network onprem-vpc \
      --region us-central1
    
  6. Configure uma gateway do Cloud NAT no Cloud Router regional:

    gcloud compute routers nats create cloud-nat-us-central1-on-prem \
      --router=cloud-router-us-central1-onprem-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  7. Na Google Cloud consola, aceda à página Routers na nuvem.

    Aceder aos Cloud Routers

  8. Na lista Routers do Cloud Router, verifique se os seguintes routers foram criados:

    • cloud-router-us-central1-onprem-nat
    • cloud-router-us-central1-vertex-nat
    • onprem-vpc-router1
    • vertex-networking-vpc-router1

    Pode ter de atualizar o separador do navegador da Google Cloud consola para ver os novos valores.

  9. Na lista de routers do Cloud Router, clique em cloud-router-us-central1-vertex-nat.

  10. Na página Detalhes do router, verifique se o gateway cloud-nat-us-central1 Cloud NAT foi criado.

  11. Clique na seta de retrocesso para regressar à página Cloud Routers.

  12. Na lista de routers, clique em cloud-router-us-central1-onprem-nat.

  13. Na página Detalhes do router, verifique se o gateway do Cloud NAT foi criado.cloud-nat-us-central1-on-prem

Crie túneis de VPN

  1. No Cloud Shell, na rede vertex-networking-vpc, crie um túnel de VPN denominado vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 0
    
  2. Na rede vertex-networking-vpc, crie um túnel de VPN denominado vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 1
    
  3. Na rede onprem-vpc, crie um túnel de VPN denominado onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 0
    
  4. Na rede onprem-vpc, crie um túnel de VPN denominado onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 1
    
  5. Na Google Cloud consola, aceda à página VPN.

    Aceda à VPN

  6. Na lista de túneis VPN, verifique se os quatro túneis VPN foram criados.

Estabeleça sessões de BGP

O Cloud Router usa o protocolo de gateway de fronteira (BGP) para trocar rotas entre a sua rede VPC (neste caso, vertex-networking-vpc) e a sua rede nas instalações (representada por onprem-vpc). No Cloud Router, configura uma interface e um par BGP para o seu router nas instalações. A interface e a configuração do par BGP formam em conjunto uma sessão de BGP. Nesta secção, cria duas sessões BGP para vertex-networking-vpc e duas para onprem-vpc.

Depois de configurar as interfaces e os pares BGP entre os routers, estes começam automaticamente a trocar rotas.

Estabeleça sessões de BGP para vertex-networking-vpc

  1. No Cloud Shell, na rede vertex-networking-vpc, crie uma interface BGP para vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel0-to-onprem \
      --ip-address 169.254.0.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel0 \
      --region us-central1
    
  2. Na rede vertex-networking-vpc, crie um par BGP para bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel0 \
      --interface if-tunnel0-to-onprem \
      --peer-ip-address 169.254.0.2 \
      --peer-asn 65002 \
      --region us-central1
    
  3. Na rede vertex-networking-vpc, crie uma interface BGP para vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel1-to-onprem \
      --ip-address 169.254.1.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel1 \
      --region us-central1
    
  4. Na rede vertex-networking-vpc, crie um par BGP para bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel1 \
      --interface if-tunnel1-to-onprem \
      --peer-ip-address 169.254.1.2 \
      --peer-asn 65002 \
      --region us-central1
    

Estabeleça sessões de BGP para onprem-vpc

  1. Na rede onprem-vpc, crie uma interface BGP para onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
      --interface-name if-tunnel0-to-vertex-networking-vpc \
      --ip-address 169.254.0.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel0 \
      --region us-central1
    
  2. Na rede onprem-vpc, crie um par BGP para bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel0 \
      --interface if-tunnel0-to-vertex-networking-vpc \
      --peer-ip-address 169.254.0.1 \
      --peer-asn 65001 \
      --region us-central1
    
  3. Na rede onprem-vpc, crie uma interface BGP para onprem-vpc-tunnel1:

    gcloud compute routers add-interface   onprem-vpc-router1  \
      --interface-name if-tunnel1-to-vertex-networking-vpc \
      --ip-address 169.254.1.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel1 \
      --region us-central1
    
  4. Na rede onprem-vpc, crie um par BGP para bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel1 \
      --interface if-tunnel1-to-vertex-networking-vpc \
      --peer-ip-address 169.254.1.1 \
      --peer-asn 65001 \
      --region us-central1
    

Valide a criação da sessão de BGP

  1. Na Google Cloud consola, aceda à página VPN.

    Aceda à VPN

  2. Na lista de túneis VPN, verifique se o valor na coluna Estado da sessão de BGP de cada um dos túneis mudou de Configurar sessão de BGP para BGP estabelecido. Pode ter de atualizar o separador do navegador da Google Cloud consola para ver os novos valores.

Valide os vertex-networking-vpc trajetos aprendidos

  1. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Na lista de redes de VPC, clique em vertex-networking-vpc.

  3. Clique no separador Rotas.

  4. Selecione us-central1 (Iowa) na lista Região e clique em Ver.

  5. Na coluna Intervalo IP de destino, verifique se o intervalo IP da sub-rede (172.16.10.0/29) aparece duas vezes.onprem-vpc-subnet1

Valide os on-prem-vpc trajetos aprendidos

  1. Clique na seta de retrocesso para regressar à página Redes de VPC.

  2. Na lista de redes de VPC, clique em on-prem-vpc.

  3. Clique no separador Rotas.

  4. Selecione us-central1 (Iowa) na lista Região e clique em Ver.

  5. Na coluna Intervalo IP de destino, verifique se o intervalo IP da workbench-subnetsub-rede172.16.20.0/28 e o intervalo IP da psc-forwarding-rule-subnetsub-rede172.16.30.0/28 aparecem duas vezes.

Crie uma instância do Vertex AI Workbench

Nesta secção, cria uma conta de serviço gerida pelo utilizador e, em seguida, cria uma instância do Vertex AI Workbench que usa a sua conta de serviço para aceder aGoogle Cloud serviços e APIs.

Criar uma conta de serviço

Neste tutorial, vai criar uma conta de serviço gerida pelo utilizador seguindo as práticas recomendadas do Compute Engine e do IAM.

  1. No Cloud Shell, crie uma conta de serviço com o nome workbench-sa:

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. Atribua a função IAM Utilizador da Vertex AI (roles/aiplatform.user) à conta de serviço:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  3. Atribua a função do IAM Administrador de armazenamento (roles/storage.admin) à conta de serviço:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  4. Atribua a função do IAM Administrador de utilização de serviços (roles/serviceusage.serviceUsageAdmin) à conta de serviço:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/serviceusage.serviceUsageAdmin"
    

Crie a instância do Vertex AI Workbench

Crie uma instância do Vertex AI Workbench, especificando a workbench-sa conta de serviço:

gcloud workbench instances create workbench-tutorial \
  --vm-image-project=deeplearning-platform-release \
  --vm-image-family=common-cpu-notebooks \
  --machine-type=n1-standard-4 \
  --location=us-central1-a \
  --subnet-region=us-central1 \
  --shielded-secure-boot=SHIELDED_SECURE_BOOT \
  --subnet=workbench-subnet \
  --disable-public-ip \
  --service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com

Crie e implemente um índice do Vector Search

Prepare o seu ambiente

  1. Na Google Cloud consola, aceda ao separador Instâncias na página Vertex AI Workbench.

    Aceda ao Vertex AI Workbench

  2. Junto ao nome da instância do Vertex AI Workbench (workbench-tutorial), clique em Abrir JupyterLab.

    A sua instância do Vertex AI Workbench abre o JupyterLab.

  3. Selecione Ficheiro > Novo > Bloco de notas.

  4. No menu Selecionar kernel, selecione Python 3 (Local) e clique em Selecionar.

  5. Quando o novo bloco de notas é aberto, existe uma célula de código predefinida onde pode introduzir código. Parece que [ ]: é seguido de um campo de texto. O campo de texto é onde cola o código.

    Para instalar o SDK do Vertex AI para Python, cole o seguinte código na célula e clique em  Executar as células selecionadas e avançar:

    !pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
    
  6. Neste passo e em cada um dos seguintes, adicione uma nova célula de código (se necessário) clicando em Inserir uma célula abaixo, cole o código na célula e, de seguida, clique em  Executar as células selecionadas e avançar.

    Para usar os pacotes instalados recentemente neste tempo de execução do Jupyter, tem de reiniciar o tempo de execução:

    # Restart kernel after installs so that your environment can access the new packages
    import IPython
    
    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)
    
  7. Defina as seguintes variáveis de ambiente, substituindo PROJECT_ID pelo ID do seu projeto.

    # set project ID and location
    PROJECT_ID = "PROJECT_ID"
    LOCATION = "us-central1"
    
    # generate a unique id for this session
    from datetime import datetime
    UID = datetime.now().strftime("%m%d%H%M")
    

Ativar APIs

No bloco de notas do Jupyterlab, execute o seguinte comando para ativar as APIs do Compute Engine, Vertex AI e Cloud Storage no bloco de notas:

! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
  --project {PROJECT_ID}

Prepare os dados de exemplo num contentor do Cloud Storage

Neste tutorial, usamos o mesmo conjunto de dados TheLook que é usado no início rápido da pesquisa vetorial. Consulte a página de documentação de início rápido para mais informações sobre este conjunto de dados.

Nesta secção, cria um contentor do Cloud Storage e coloca o ficheiro de incorporação do conjunto de dados no mesmo. Num passo posterior, usa este ficheiro para criar um índice.

  1. No seu notebook do Jupyterlab, crie um contentor do Cloud Storage:

    BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
    ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
    
  2. Copie o ficheiro de exemplo para o seu contentor do Cloud Storage.

    ! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. Para usar a pesquisa vetorial para executar consultas, também tem de copiar o ficheiro de incorporação para um diretório local:

    ! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
    

Crie o índice do Vector Search

  1. No bloco de notas do Jupyterlab, carregue as incorporações para a pesquisa vetorial:

    # init the aiplatform package
    from google.cloud import aiplatform
    aiplatform.init(project=PROJECT_ID, location=LOCATION)
    
  2. Crie um MatchingEngineIndex com a respetiva função create_tree_ah_index (Matching Engine é o nome anterior da pesquisa vetorial):

    # create Index
    my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
      display_name = f"vs-quickstart-index-{UID}",
      contents_delta_uri = BUCKET_URI,
      dimensions = 768,
      approximate_neighbors_count = 10,
    )
    

    O método MatchingEngineIndex.create_tree_ah_index() cria um índice. Neste tutorial, esta tarefa demora cerca de 5 a 10 minutos.

  3. Na Google Cloud consola, aceda ao separador Índices na página Pesquisa vetorial.

    Aceda a Índices

  4. Verifique se existe um índice cujo nome comece por "vs-quickstart-index-" e contenha a data/hora correta.

  5. Tome nota do ID do índice. Precisa deste ID quando implementar o índice num passo posterior.

Crie o ponto final do índice

  1. No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    SERVICE_PROJECT=${projectid}
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    DISPLAY_NAME=vector-search
    
  2. Crie o ponto final do índice:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      https://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
    
  3. Verifique se o ponto final do índice foi criado:

    gcloud ai index-endpoints list --region=us-central1
    

    A saída é semelhante ao exemplo seguinte, no qual o ID do ponto final do índice é 8151506529447575552:

    Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    ---
    createTime: '2023-10-10T23:55:20.526145Z'
    displayName: vector-search
    encryptionSpec: {}
    etag: AMEw9yN2qytNiwT73uwYpz_7N_b2-O8D1AuNoDb5QjFmkU4ye5Gzk2oQlMZBR1XeoQ11
    name: projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552
    privateServiceConnectConfig:
      enablePrivateServiceConnect: true
      projectAllowlist:
      - vertex-genai-400103
      - vertex-genai-400103
    updateTime: '2023-10-10T23:55:21.951394Z'
    
  4. Anote o ID do ponto final do índice. Precisa deste ID quando implementar o índice num passo posterior.

Implemente o índice no ponto final

No Cloud Shell, execute o seguinte comando para implementar o índice no ponto final:

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=vector_one \
  --display-name=vector-search \
  --index=INDEX \
  --project=$projectid \
  --region=us-central1

Substitua os seguintes valores:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice para o ponto final do índice do Private Service Connect que criou
  • INDEX: o ID do índice que está a implementar

A saída é semelhante ao exemplo seguinte, no qual o ID do ponto final do índice é 8151506529447575552:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
The deploy index operation [projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552/operations/6271807495283408896] was submitted successfully.

A operação de implementação demora cerca de 10 a 15 minutos. Quando implementa o índice, é gerado um anexo de serviço.

Verifique se o índice está implementado no ponto final do índice

  1. Na Google Cloud consola, aceda ao separador Index Endpoints na página Vector Search.

    Aceda a Index Endpoints

  2. Verifique se o ponto final do índice vector-search tem um índice implementado que também se chama vector-search.

    Se aparecer um círculo azul a girar junto ao nome do ponto final do índice, o índice ainda está a ser implementado.

Obtenha o URI do anexo de serviço para o ponto final do índice

Depois de o índice estar totalmente implementado, pode obter o URI do anexo de serviço.

No Cloud Shell, execute o seguinte comando para obter o URI do anexo de serviço:

gcloud ai index-endpoints list --region=us-central1 | grep -i  serviceAttachment:

No exemplo de resultado seguinte, o URI do anexo de serviço é projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
 serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798

Tome nota do URI serviceAttachment, começando por projects, por exemplo, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798. Precisa dele no passo seguinte, quando criar uma regra de encaminhamento.

Crie uma regra de encaminhamento

  1. No Cloud Shell, reserve um endereço IP para a regra de encaminhamento a usar para consultar o índice de pesquisa vetorial:

    gcloud compute addresses create vector-search-forwarding-rule \
      --region=us-central1 \
      --subnet=psc-forwarding-rule-subnet
    
  2. Encontre o endereço IP reservado:

    gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
    
  3. Crie uma regra de encaminhamento para associar o ponto final à associação de serviço, substituindo SERVICE_ATTACHMENT_URI pelo URI serviceAttachment.

    gcloud compute forwarding-rules create vector-search-forwarding-rule \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-forwarding-rule \
      --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Segue-se um exemplo de utilização deste comando:

    gcloud compute forwarding-rules create vector-search-forwarding-rule \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-forwarding-rule \
      --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
    
  4. Na Google Cloud consola, aceda ao separador Pontos finais ligados na página Private Service Connect.

    Aceda aos pontos finais ligados

  5. Valide se o estado de vector-search-forwarding-rule é Accepted.

  6. Tome nota do endereço IP da regra de encaminhamento do Private Service Connect. Num passo posterior, vai usar este ponto final para estabelecer comunicação com o índice de pesquisa vetorial implementado.

Consultar o índice implementado

Agora que estabeleceu uma regra de encaminhamento do Private Service Connect associada ao ponto final do índice de pesquisa vetorial, pode consultar o índice implementado enviando as consultas da instância de VM on-prem-clientpara a regra de encaminhamento.

Para permitir que o Identity-Aware Proxy (IAP) se ligue às suas instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias de VM que quer tornar acessíveis através do IAP.
  • Permite o tráfego TCP através da porta 22 a partir do intervalo de IP 35.235.240.0/20. Este intervalo contém todos os endereços IP que o IAP usa para o encaminhamento TCP.

Depois de criar a firewall, instala o cliente gRPC. Num passo posterior, vai usar o cliente gRPC para enviar consultas a partir da instância da VM on-prem-client.

Crie a regra de firewall e instale o gRPC

  1. No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Crie uma regra de firewall do IAP com o nome ssh-iap-vpc:

    gcloud compute firewall-rules create ssh-iap-vpc \
      --network onprem-vpc \
      --allow tcp:22 \
      --source-ranges=35.235.240.0/20
    
  3. Inicie sessão na instância de VM on-prem-client:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. Na instância de VM on-prem-client, instale o cliente gRPC:

    sudo apt-get install git -y
    git clone https://github.com/grpc/grpc.git
    sudo apt-get install build-essential autoconf libtool pkg-config -y
    sudo apt-get install cmake -y
    cd grpc/
    git submodule update --init
    mkdir -p cmake/build
    cd cmake/build
    cmake -DgRPC_BUILD_TESTS=ON ../..
    make grpc_cli
    

    A instalação demora cerca de 30 minutos.

Obtenha um ID para um item de índice existente

  1. Na Google Cloud consola, aceda ao separador Instâncias na página Vertex AI Workbench.

    Aceda ao Vertex AI Workbench

  2. Junto ao nome da instância do Vertex AI Workbench, clique em Abrir JupyterLab.

    A sua instância do Vertex AI Workbench abre o JupyterLab.

  3. Selecione Ficheiro > Novo > Terminal.

  4. No terminal do JupyterLab (não no Cloud Shell), veja a última entrada no índice:

    tail -1 product-embs.json
    
  5. Procure o primeiro par de chave-valor no item, que contém o número de ID do item, como no exemplo seguinte:

    "id":"27452"
    

    Tome nota deste número de ID. Precisa dele para executar uma consulta na secção seguinte.

Faça uma consulta de pesquisa vetorial

Na instância de VM on-prem-client, consulte o índice implementado:

./grpc_cli call  FORWARDING_RULE_IP:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"

Substitua os seguintes valores:

  • FORWARDING_RULE_IP: endereço IP da regra de encaminhamento do Private Service Connect que criou na secção anterior
  • ITEM_ID: o número do ID do item que guardou na secção anterior

O resultado é semelhante ao seguinte:

   user@on-prem-client:~/grpc/cmake/build$ ./grpc_cli call  172.16.30.2:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"20020916"'"
   connecting to 172.16.30.2:10000
   neighbor {
     id: "16136217"
     distance: 0.99999558925628662
   }
   neighbor {
     id: "2196405"
     distance: 0.82817935943603516
   }
   neighbor {
     id: "3796353"
     distance: 0.82687419652938843
   }
   neighbor {
     id: "815154"
     distance: 0.8179466724395752
   }
   neighbor {
     id: "16262338"
     distance: 0.816785454750061
   }
   neighbor {
     id: "31290454"
     distance: 0.81560027599334717
   }
   neighbor {
     id: "4012943"
     distance: 0.80958610773086548
   }
   neighbor {
     id: "39738359"
     distance: 0.8020891547203064
   }
   neighbor {
     id: "7691697"
     distance: 0.80035769939422607
   }
   neighbor {
     id: "6398888"
     distance: 0.79880392551422119
   }
   Rpc succeeded with OK status