Os hosts locais podem acessar um endpoint de índice de pesquisa de vetor por meio da Internet pública ou de maneira privada, por meio de uma arquitetura de rede híbrida que usa o Private Service Connect no Cloud VPN ou no Cloud Interconnect. As duas opções oferecem criptografia SSL/TLS. No entanto, a opção privada oferece um desempenho muito melhor e, portanto, é recomendada para aplicativos essenciais.
Neste tutorial, você usa a VPN de alta disponibilidade para acessar um endpoint de índice da Pesquisa de vetor de maneira particular, entre duas redes de nuvem privada virtual (VPC) que podem servir como base para várias nuvens e conectividade particular no local.
Este tutorial é destinado a administradores de redes empresariais, cientistas de dados e pesquisadores que estão familiarizados com a Vertex AI, a nuvem privada virtual, o console do Google Cloud e o Cloud Shell. Ter familiaridade com a Pesquisa de vetor é útil, mas não é obrigatório.
Objetivos
- Crie duas redes VPC, conforme mostrado no diagrama
anterior:
- Uma (
onprem-vpc
) representa uma rede local. - O outro (
vertex-networking-vpc
) é para o endpoint do índice de pesquisa de vetor.
- Uma (
- Implante gateways de VPN de alta disponibilidade, túneis do Cloud VPN e
Cloud Routers para conectar
vertex-networking-vpc
eonprem-vpc
. - Criar e implantar um índice da Pesquisa de vetor
- Crie uma regra de encaminhamento do Private Service Connect para encaminhar consultas ao endpoint do índice da Pesquisa de vetor.
- Configure uma rota personalizada divulgada do Cloud Router em
vertex-networking-vpc
para anunciar rotas para o endpoint de índice paraonprem-vpc
. - Crie uma instância de VM do Compute Engine em
onprem-vpc
para representar um aplicativo cliente que envia solicitações para o endpoint do índice de Pesquisa de vetores por VPN de alta disponibilidade.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Abra o Cloud Shell para executar os comandos listados neste tutorial. O Cloud Shell é um ambiente shell interativo para o Google Cloud que permite gerenciar projetos e recursos a partir do navegador da Web.
- No Cloud Shell, defina o projeto atual como o ID do projeto do Google Cloud e armazene o mesmo ID do projeto na variável de shell
projectid
: Substitua PROJECT_ID pelo ID do projeto. Se necessário, localize o ID do projeto no console do Google Cloud. Para mais informações, consulte Encontrar o ID do projeto.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Se você não for o proprietário do projeto, peça a ele que conceda a você o papel Administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). É preciso ter esse papel para conceder papéis do IAM na próxima etapa.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/aiplatform.user, roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iap.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/servicemanagement.quotaAdmin, roles/servicedirectory.editor, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com
Crie as redes VPC
Nesta seção, você vai criar duas redes VPC: uma para criar um índice de pesquisa de vetor e implantá-lo em um endpoint, outra para acesso particular a esse endpoint.
Crie a rede VPC para o endpoint do índice de pesquisa de vetores (vertex-networking-vpc
)
Crie a rede VPC para o endpoint do índice:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Crie uma sub-rede chamada
workbench-subnet
, com um intervalo IPv4 principal de172.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
Crie uma sub-rede chamada
psc-forwarding-rule-subnet
, com um intervalo IPv4 principal de172.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 particular ao endpoint (onprem-vpc
)
Crie a rede VPC para simular a rede local (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
Na rede
onprem-vpc
, crie uma sub-rede chamadaonprem-vpc-subnet1
, com um intervalo IPv4 principal de172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Verificar se as redes VPC estão configuradas corretamente
No console do Google Cloud, acesse a guia Redes no projeto atual na página Redes VPC.
Na lista de redes VPC, verifique se as duas redes foram criadas:
vertex-networking-vpc
eonprem-vpc
.Clique na guia Sub-redes no projeto atual.
Na lista de sub-redes VPC, verifique se as sub-redes
workbench-subnet
,psc-forwarding-rule-subnet
eonprem-vpc-subnet1
foram criadas.
Criar a instância de VM on-prem-client
Nesta seção, você cria uma instância de VM para representar um aplicativo cliente que envia solicitações para o endpoint do índice de pesquisa de vetor pela VPN de alta disponibilidade.
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"
Configurar conectividade híbrida
Nesta seção, você cria dois gateways de VPN de alta disponibilidade
conectados entre si. Um fica na
rede VPC vertex-networking-vpc
. O outro fica na
rede VPC onprem-vpc
.
Cada gateway contém um Cloud Router e um par de túneis VPN.
Criar os gateways de VPN de alta disponibilidade
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
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
No console do Google Cloud, acesse a guia Gateways do Cloud VPN na página VPN.
Verifique se os dois gateways (
vertex-networking-vpn-gw1
eonprem-vpn-gw1
) foram criados e se cada um tem dois endereços IP de interface.
Criar Cloud Routers e gateways do Cloud NAT
Em cada uma das duas redes VPC, você cria dois Cloud Routers: um geral e outro regional. Em cada Cloud Router regional, você cria um gateway do Cloud NAT. Os gateways do Cloud NAT fornecem conectividade de saída para instâncias de máquina virtual (VM) do Compute Engine que não têm endereços IP externos.
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
Crie um Cloud Router para a rede VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
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
Configure um 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
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
Configure um 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
No console do Google Cloud, acesse a página do Cloud Routers.
Na lista Cloud Routers, verifique se os seguintes roteadores foram criados:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Talvez seja necessário atualizar a guia do navegador do console do Google Cloud para visualizar os novos valores.
Na lista de Cloud Routers, clique em
cloud-router-us-central1-vertex-nat
.Na página Detalhes do roteador, verifique se o gateway
cloud-nat-us-central1
do Cloud NAT foi criado.Clique na seta para voltar
e retorne à página Cloud Routers.Na lista de roteadores, clique em
cloud-router-us-central1-onprem-nat
.Na página Detalhes do roteador, verifique se o gateway
cloud-nat-us-central1-on-prem
do Cloud NAT foi criado.
Criar túneis VPN
No Cloud Shell, na rede
vertex-networking-vpc
, crie um túnel VPN chamadovertex-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
Na rede
vertex-networking-vpc
, crie um túnel de VPN chamadovertex-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
Na rede
onprem-vpc
, crie um túnel de VPN chamadoonprem-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
Na rede
onprem-vpc
, crie um túnel de VPN chamadoonprem-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
No Console do Google Cloud, acesse a página VPN.
Na lista de túneis de VPN, verifique se os quatro túneis de VPN foram criados.
Criar sessões do BGP
O Cloud Router usa o protocolo de gateway de borda (BGP) para trocar rotas entre
a rede VPC (neste caso, vertex-networking-vpc
)
e a rede local (representada por onprem-vpc
). No Cloud Router,
você configura uma interface e um peering do BGP para o roteador local.
A interface e a configuração de peering do BGP formam uma sessão do BGP.
Nesta seção, você cria duas sessões do BGP para vertex-networking-vpc
e duas para onprem-vpc
.
Depois de configurar as interfaces e os peerings do BGP entre os roteadores, eles começarão a trocar rotas de forma automática.
Estabeleça sessões do BGP para vertex-networking-vpc
No Cloud Shell, na rede
vertex-networking-vpc
, crie uma interface do BGP paravertex-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
Na rede
vertex-networking-vpc
, crie um peering do BGP parabgp-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
Na rede
vertex-networking-vpc
, crie uma interface do BGP paravertex-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
Na rede
vertex-networking-vpc
, crie um peering do BGP parabgp-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 do BGP para onprem-vpc
Na rede
onprem-vpc
, crie uma interface do BGP paraonprem-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
Na rede
onprem-vpc
, crie um peering do BGP parabgp-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
Na rede
onprem-vpc
, crie uma interface do BGP paraonprem-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
Na rede
onprem-vpc
, crie um peering do BGP parabgp-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 do BGP
No Console do Google Cloud, acesse a página VPN.
Na lista de túneis de VPN, verifique se o valor na coluna Status da sessão do BGP para cada um dos túneis mudou de Configurar sessão do BGP para O BGP foi estabelecido. Talvez seja necessário atualizar a guia do navegador do console do Google Cloud para visualizar os novos valores.
Validar as vertex-networking-vpc
rotas aprendidas
No Console do Google Cloud, acesse a página Redes VPC.
Na lista de redes VPC, clique em
vertex-networking-vpc
.Clique na guia Rotas.
Selecione us-central1 (Iowa) na lista Região e clique em Visualizar.
Na coluna Intervalo de IP de destino, verifique se o intervalo de IP da sub-rede
onprem-vpc-subnet1
(172.16.10.0/29
) aparece duas vezes.
Validar as on-prem-vpc
rotas aprendidas
Clique na seta para voltar
e retorne à página Redes VPC.Na lista de redes VPC, clique em
on-prem-vpc
.Clique na guia Rotas.
Selecione us-central1 (Iowa) na lista Região e clique em Visualizar.
Na coluna Intervalo de IP de destino, verifique se o intervalo de IP da sub-rede
workbench-subnet
(172.16.20.0/28
) e o intervalo de IP da sub-redepsc-forwarding-rule-subnet
(172.16.30.0/28
) aparecem duas vezes.
crie uma instância do Vertex AI Workbench
Nesta seção, você criará uma conta de serviço gerenciada pelo usuário e, em seguida, criará uma instância do Vertex AI Workbench que usa essa conta para acessar serviços e APIs do Google Cloud.
Crie uma conta de serviço
Neste tutorial, você cria uma conta de serviço gerenciada pelo usuário de acordo com as práticas recomendadas do Compute Engine e do IAM.
No Cloud Shell, crie uma conta de serviço chamada
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Atribua o papel do IAM de usuário 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"
Atribua o papel 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"
Atribua o papel do IAM de Administrador do Service Usage (
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"
Criar a instância do Vertex AI Workbench
Crie uma instância do Vertex AI Workbench
especificando a conta de serviço workbench-sa
:
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
Criar e implantar um índice da Pesquisa de vetor
Prepare o ambiente
No console do Google Cloud, acesse a guia Instâncias na página do Vertex AI Workbench.
Ao lado do nome da instância do Vertex AI Workbench (
workbench-tutorial
), clique em Abrir JupyterLab.Sua instância do Vertex AI Workbench abre o JupyterLab.
Selecione File>New>Notebook.
No menu Selecionar kernel, selecione Python 3 (Local) e clique em Selecionar.
Quando o novo notebook é aberto, há uma célula de código padrão em que é possível inserir o código. Ela tem o formato
[ ]:
, seguido por um campo de texto. O campo de texto é onde você cola seu código.Para instalar o SDK da Vertex AI para Python, cole o código a seguir na célula e clique em
Executar as células selecionadas e avançar:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
Nesta etapa e em cada uma das 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 clique em Executar as células selecionadas e avançar.Para usar os pacotes recém-instalados no ambiente de execução do Jupyter, é necessário reiniciar o ambiente 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)
Defina as variáveis de ambiente a seguir, substituindo PROJECT_ID pelo ID do 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 notebook do Jupyterlab, execute o seguinte comando para ativar as APIs do Compute Engine, da Vertex AI e do Cloud Storage no notebook:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Preparar os dados de amostra em um bucket do Cloud Storage
Neste tutorial, usamos o mesmo conjunto de dados TheLook do Guia de início rápido da Pesquisa de vetores. Consulte a página da documentação do guia de início rápido para mais informações sobre esse conjunto de dados.
Nesta seção, você criará um bucket do Cloud Storage e colocará o arquivo de incorporação do conjunto de dados nele. Em uma etapa posterior, você usará esse arquivo para criar um índice.
No notebook do Jupyterlab, crie um bucket do Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
Copie o arquivo de exemplo para o bucket do Cloud Storage.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Para usar a Pesquisa de vetor para executar consultas, você também precisa copiar o arquivo de embedding para um diretório local:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Criar o índice de pesquisa de vetor
No notebook do Jupyterlab, carregue os embeddings na Vector Search:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Crie um MatchingEngineIndex com a respectiva função
create_tree_ah_index
(Matching Engine é o nome anterior do Vector Search):# 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, essa tarefa leva de 5 a 10 minutos.No console do Google Cloud, acesse a guia Índices na página Pesquisa de vetor.
Verifique se há um índice cujo nome comece com
"vs-quickstart-index-"
e contenha o carimbo de data/hora correto.Anote o ID do índice. Você vai precisar desse ID ao implantar o índice em uma etapa posterior.
Criar o endpoint do índice
No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do 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
Criar o endpoint 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'"] }}'
Verifique se o endpoint do índice foi criado:
gcloud ai index-endpoints list --region=us-central1
A saída é semelhante ao exemplo a seguir, em que o ID do endpoint 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'
Anote o ID do endpoint do índice. Você vai precisar desse ID quando implantar o índice em uma etapa posterior.
implantar o índice no endpoint
No Cloud Shell, execute o seguinte comando para implantar o índice no endpoint:
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 endpoint de índice do endpoint de índice do Private Service Connect que você criou
- INDEX: o ID do índice que você está implantando.
A saída é semelhante ao exemplo a seguir, em que
o ID do endpoint 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 implantação leva de 10 a 15 minutos. Ao implantar um índice, um anexo de serviço é gerado.
Verificar se o índice está implantado no endpoint do índice
No console do Google Cloud, acesse a guia Endpoints de índice na página Pesquisa de vetor.
Verifique se o endpoint de índice
vector-search
tem um índice implantado que também é chamado devector-search
.Se um círculo azul giratório aparecer ao lado do nome do endpoint do índice, o índice ainda está em processo de implantação.
Receber o URI do anexo de serviço do endpoint do índice
Depois que o índice estiver totalmente implantado, será possível conseguir o URI do anexo de serviço.
No Cloud Shell, execute o comando a seguir para acessar o URI do anexo de serviço:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
No exemplo de saída a seguir, 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
Anote o URI serviceAttachment
, começando com projects
.
Por exemplo, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Você vai precisar dele na próxima etapa ao criar uma regra de encaminhamento.
Criar uma regra de encaminhamento
No Cloud Shell, reserve um endereço IP para a regra de encaminhamento para usar ao consultar o índice de pesquisa de vetor:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Encontre o endereço IP reservado:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Crie uma regra de encaminhamento para conectar o endpoint ao anexo 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
Veja a seguir um exemplo de uso desse 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
No console do Google Cloud, acesse a guia Endpoints conectados na página Private Service Connect.
Confira se o status de
vector-search-forwarding-rule
éAccepted
.Anote o endereço IP da regra de encaminhamento do Private Service Connect. Em uma etapa posterior, você usará esse endpoint para estabelecer comunicação com o índice de pesquisa de vetor implantado.
Consultar o índice implantado
Agora que você estabeleceu uma regra de encaminhamento do Private Service Connect
conectada ao endpoint do índice da Pesquisa de vetor,
é possível consultar o índice implantado enviando as consultas da
instância de VM on-prem-client
para a regra de encaminhamento.
Para permitir que o Identity-Aware Proxy (IAP) se conecte às instâncias de VM, crie uma regra de firewall que:
- Se aplica a todas as instâncias de VM que você quer tornar acessíveis por meio do IAP.
- Permite o tráfego TCP pela porta 22 do intervalo de IP
35.235.240.0/20
. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.
Depois de criar o firewall, instale o cliente gRPC. Em uma etapa posterior, você usará o cliente gRPC para enviar consultas da instância de VM on-prem-client
.
Criar a regra de firewall e instale o gRPC
No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do projeto:
projectid=PROJECT_ID gcloud config set project ${projectid}
Crie uma regra de firewall do IAP chamada
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Faça login na instância de VM
on-prem-client
:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
Na instância de VM
on-prem-client
, instale o clientegRPC
: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 leva cerca de 30 minutos.
Receber um ID para um item de índice
No console do Google Cloud, acesse a guia Instâncias na página do Vertex AI Workbench.
Ao lado do nome da instância do Vertex AI Workbench, clique em Abrir JupyterLab.
Sua instância do Vertex AI Workbench abre o JupyterLab.
Selecione Arquivo > Novo > Terminal.
No terminal JupyterLab (não no Cloud Shell), veja a última entrada no índice:
tail -1 product-embs.json
Procure o primeiro par de chave-valor no item, que contém o ID do item, como no exemplo abaixo:
"id":"27452"
Anote esse número de identificação. Você vai precisar dele para executar uma consulta na próxima seção.
Executar uma consulta de pesquisa de vetor
Na instância de VM on-prem-client
, consulte o índice implantado:
./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: o endereço IP da regra de encaminhamento do Private Service Connect que você criou na seção anterior
- ITEM_ID: o número do ID do item que você salvou na seção anterior.
O resultado será assim:
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
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
É possível excluir os recursos individuais no console do Google Cloud da seguinte maneira:
Cancele a implantação e exclua o índice da Pesquisa de vetor da seguinte maneira:
No console do Google Cloud, acesse a guia Índices na página Pesquisa de vetor.
Localize o índice com o nome que começa com
"vs-quickstart-index-"
e contém o carimbo de data/hora correto.Clique no nome do índice.
Na página Informações do índice, ao lado do nome do índice na lista Índices implantados, clique em
Ações e clique em Cancelar a implantação.O cancelamento da implantação do índice leva alguns minutos. Se um círculo azul giratório aparece ao lado do nome do índice ou se o status do índice está listado como
Undeploying
, o índice ainda está em processo de cancelamento da implantação. Talvez seja necessário atualizar a guia do navegador do console do Google Cloud para ver se o índice não está mais implantado.Clique na seta para voltar
para retornar à guia Índices.Ao lado do nome do índice na lista de índices, clique em
Ações e, em seguida, em Excluir para excluir o índice.
Exclua o endpoint do índice da seguinte maneira:
No console do Google Cloud, acesse a guia Endpoints de índice na página Pesquisa de vetor.
Ao lado do nome do endpoint na lista de endpoints do índice, clique em
Ações e, em seguida, clique em Excluir para excluir o endpoint do índice.
Exclua a instância do Vertex AI Workbench da seguinte maneira:
No console do Google Cloud, na seção Vertex AI, acesse a guia Instâncias na página Workbench.
Selecione a instância
workbench-tutorial
do Vertex AI Workbench e clique em Excluir.
Exclua a instância de VM do Compute Engine da seguinte maneira:
No Console do Google Cloud, acesse a página do Compute Engine.
Selecione a instância de VM
on-prem-client
e clique em Excluir.
Exclua os túneis VPN da seguinte maneira:
No Console do Google Cloud, acesse a página VPN.
Na página VPN, clique na guia VPN.
Na lista de túneis de VPN, selecione os quatro túneis de VPN criados neste tutorial e clique em
Excluir.
Exclua os gateways da VPN de alta disponibilidade da seguinte maneira:
Na página VPN, clique na guia VPN.
Na lista de gateways de VPN, clique em
onprem-vpn-gw1
.Na página Detalhes do gateway do Cloud VPN, clique em
Excluir gateway da VPN.Se necessário, clique na seta para voltar
para retornar à lista de gateways de VPN e clique emvertex-networking-vpn-gw1
.Na página Detalhes do gateway do Cloud VPN, clique em
Excluir gateway da VPN.
Exclua os Cloud Routers da seguinte maneira:
Acesse a página Cloud Routers.
Na lista de Cloud Routers, selecione os quatro roteadores que você criou neste tutorial.
Para excluir os roteadores, clique em
Excluir.Isso também exclui os dois gateways do Cloud NAT conectados aos Cloud Routers.
Exclua a regra de encaminhamento
vector-search-forwarding-rule
para a rede VPCvertex-networking-vpc
da seguinte maneira:Acesse a guia Front-ends da página Balanceamento de carga.
Na lista de regras de encaminhamento, clique em
vector-search-forwarding-rule
.Na página Detalhes da regra de encaminhamento, clique em
Excluir.
Exclua as redes VPC da seguinte maneira:
Acesse a página Redes VPC.
Na lista de redes VPC, clique em
onprem-vpc
.Na página Detalhes da rede VPC, clique em
Excluir rede VPC.Com a exclusão de uma rede, as respectivas sub-redes, rotas e regras de firewall também são excluídas.
Volte para a lista de redes VPC e clique em
vertex-networking-vpc
.Na página Detalhes da rede VPC, clique em
Excluir rede VPC.
Exclua o bucket de armazenamento da seguinte maneira:
No Console do Google Cloud, acesse a página Cloud Storage.
Selecione o bucket de armazenamento e clique em
Excluir.
Exclua a conta de serviço
workbench-sa
da seguinte maneira:Acesse a página Contas de serviço.
Selecione a conta de serviço
workbench-sa
e clique em Excluir.
A seguir
- Conheça as opções de rede empresarial para acessar endpoints e serviços da Vertex AI.
- Saiba como o Private Service Connect funciona e por que ele oferece benefícios significativos de desempenho.
- Saiba como usar o VPC Service Controls para criar perímetros seguros a fim de permitir ou negar acesso à Vertex AI e a outras APIs do Google no endpoint do índice de Pesquisa de vetor na Internet pública.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.