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 de forma privada a um ponto final do índice de pesquisa vetorial 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.
Objetivos
- Crie duas redes VPC, conforme mostrado no diagrama
anterior:
- Um (
onprem-vpc
) representa uma rede no local. - O outro (
vertex-networking-vpc
) destina-se ao ponto final do índice do Vector Search.
- Um (
- Implemente gateways de VPN de alta disponibilidade, túneis de Cloud VPN e Cloud Routers para ligar
vertex-networking-vpc
eonprem-vpc
. - Crie e implemente um índice do Vector Search.
- Crie uma regra de encaminhamento do Private Service Connect para encaminhar consultas para o ponto final do índice do Vector Search.
- Configure um trajeto anunciado personalizado do Cloud Router em
vertex-networking-vpc
para anunciar trajetos para o ponto final do índice paraonprem-vpc
. - Crie uma instância de VM do Compute Engine em
onprem-vpc
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.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Abra o Cloud Shell para executar os comandos indicados neste tutorial. O Cloud Shell é um ambiente de shell interativo para Google Cloud que lhe permite gerir os seus projetos e recursos a partir do navegador de Internet.
- No Cloud Shell, defina o projeto atual para o seu
Google Cloud ID do projeto e armazene o mesmo
ID do projeto na variável do shell
projectid
: Substitua PROJECT_ID pelo ID do seu projeto. Se necessário, pode localizar o ID do projeto na Google Cloud consola. Para mais informações, consulte o artigo Encontre o ID do seu projeto.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Se não for o proprietário do projeto, peça-lhe que lhe conceda a função de administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin). Tem de ter esta função para conceder funções do IAM no passo seguinte.
-
Make sure that you have the following role or roles on the project: 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
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Aceder ao IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
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 acesso privado a esse ponto final.
Crie a rede VPC para o ponto final do índice do Vector Search (vertex-networking-vpc
)
Crie a rede de VPC para o ponto final do índice:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Crie uma sub-rede denominada
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 denominada
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 privado ao ponto final (onprem-vpc
)
Crie a rede VPC para simular a rede no local (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
Na rede
onprem-vpc
, crie uma sub-rede denominadaonprem-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
Verifique se as redes VPC estão configuradas corretamente
Na Google Cloud consola, aceda ao separador Redes no projeto atual na página Redes de VPC.
Na lista de redes VPC, verifique se as duas redes foram criadas:
vertex-networking-vpc
eonprem-vpc
.Clique no separador Sub-redes no projeto atual.
Na lista de sub-redes de VPC, verifique se as sub-redes
workbench-subnet
,psc-forwarding-rule-subnet
eonprem-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.
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
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
Na Google Cloud consola, aceda ao separador Gateways de VPN do Cloud 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.
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.
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 de 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 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
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 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
Na Google Cloud consola, aceda à página Routers na nuvem.
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.
Na lista de routers do Cloud Router, clique em
cloud-router-us-central1-vertex-nat
.Na página Detalhes do router, verifique se o gateway
cloud-nat-us-central1
Cloud NAT foi criado.Clique na
seta de retrocesso para regressar à página Cloud Routers.Na lista de routers, clique em
cloud-router-us-central1-onprem-nat
.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
No Cloud Shell, na rede
vertex-networking-vpc
, crie um túnel de VPN denominadovertex-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 denominadovertex-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 denominadoonprem-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 denominadoonprem-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
Na Google Cloud consola, aceda à página VPN.
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
No Cloud Shell, na rede
vertex-networking-vpc
, crie uma interface 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 par 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 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 par 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 de BGP para onprem-vpc
Na rede
onprem-vpc
, crie uma interface 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 par 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 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 par 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 de BGP
Na Google Cloud consola, aceda à página VPN.
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
Na Google Cloud consola, aceda à página Redes VPC.
Na lista de redes de VPC, clique em
vertex-networking-vpc
.Clique no separador Rotas.
Selecione us-central1 (Iowa) na lista Região e clique em Ver.
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
Clique na seta de retrocesso para regressar à página Redes de VPC.
Na lista de redes de VPC, clique em
on-prem-vpc
.Clique no separador Rotas.
Selecione us-central1 (Iowa) na lista Região e clique em Ver.
Na coluna Intervalo IP de destino, verifique se o intervalo IP da sub-rede (
172.16.20.0/28
) e o intervalo IP da sub-rede (172.16.30.0/28
) aparecem duas vezes cada.workbench-subnet
psc-forwarding-rule-subnet
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
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"
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"
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"
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
Na Google Cloud consola, aceda ao separador Instâncias na página Vertex AI Workbench.
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.
Selecione Ficheiro > Novo > Bloco de notas.
No menu Selecionar kernel, selecione Python 3 (Local) e clique em Selecionar.
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
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)
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.
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
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
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
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)
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.Na Google Cloud consola, aceda ao separador Índices na página Pesquisa vetorial.
Verifique se existe um índice cujo nome comece por
"vs-quickstart-index-"
e contenha a data/hora correta.Tome nota do ID do índice. Precisa deste ID quando implementar o índice num passo posterior.
Crie o ponto final do índice
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
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'"] }}'
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'
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
Na Google Cloud consola, aceda ao separador Index Endpoints na página Vector Search.
Verifique se o ponto final do índice
vector-search
tem um índice implementado que também se chamavector-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
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
Encontre o endereço IP reservado:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
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
Na Google Cloud consola, aceda ao separador Pontos finais ligados na página Private Service Connect.
Valide se o estado de
vector-search-forwarding-rule
éAccepted
.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 do Vector Search 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 para a regra de encaminhamento.on-prem-client
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
No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:
projectid=PROJECT_ID gcloud config set project ${projectid}
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
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
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 demora cerca de 30 minutos.
Obtenha um ID para um item de índice existente
Na Google Cloud consola, aceda ao separador Instâncias na página Vertex AI Workbench.
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.
Selecione Ficheiro > Novo > Terminal.
No terminal do 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 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.
Fazer uma consulta do Vector Search
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
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Pode eliminar os recursos individuais na Google Cloud consola da seguinte forma:
Anule a implementação e elimine o índice do Vector Search da seguinte forma:
Na Google Cloud consola, aceda ao separador Índices na página Pesquisa vetorial.
Localize o índice cujo nome começa por
"vs-quickstart-index-"
e contém a data/hora correta.Clique no nome do índice.
Na página Informações do índice, junto ao nome do índice na lista Índices implementados, clique em
Ações e, de seguida, em Anular implementação.A anulação da implementação do índice demora alguns minutos. Se aparecer um círculo azul a girar junto ao nome do índice ou se o estado do índice estiver indicado como
Undeploying
, o índice ainda está a ser anulado. Pode ter de atualizar o separador do navegador Google Cloud da consola para ver que o índice já não está implementado.Clique na
seta para voltar ao separador Índices.Junto ao nome do índice na lista de índices, clique em
Ações e, de seguida, clique em Eliminar para eliminar o índice.
Elimine o ponto final do índice da seguinte forma:
Na Google Cloud consola, aceda ao separador Pontos finais do índice na página Pesquisa vetorial.
Junto ao nome do seu ponto final na lista de pontos finais do índice, clique em
Ações e, de seguida, clique em Eliminar para eliminar o ponto final do índice.
Elimine a instância do Vertex AI Workbench da seguinte forma:
Na Google Cloud consola, na secção Vertex AI, aceda ao separador Instâncias na página Workbench.
Selecione a
workbench-tutorial
instância do Vertex AI Workbench e clique em Eliminar.
Elimine a instância de VM do Compute Engine da seguinte forma:
Na Google Cloud consola, aceda à página Compute Engine.
Selecione a instância de VM
on-prem-client
e clique em Eliminar.
Elimine os túneis de VPN da seguinte forma:
Na Google Cloud consola, aceda à página VPN.
Na página VPN, clique no separador Túneis do Cloud VPN.
Na lista de túneis de VPN, selecione os quatro túneis de VPN que criou neste tutorial e clique em
Eliminar.
Elimine os gateways de VPN de alta disponibilidade da seguinte forma:
Na página VPN, clique no separador Gateways de VPN na nuvem.
Na lista de gateways de VPN, clique em
onprem-vpn-gw1
.Na página Detalhes do gateway do Cloud VPN, clique em
Eliminar gateway de VPN.Clique na
seta para trás, se necessário, para regressar à lista de gateways de VPN e, de seguida, clique emvertex-networking-vpn-gw1
.Na página Detalhes do gateway do Cloud VPN, clique em
Eliminar gateway de VPN.
Elimine os routers do Cloud Router da seguinte forma:
Aceda à página Routers na nuvem.
Na lista de Cloud Routers, selecione os quatro routers que criou neste tutorial.
Para eliminar os routers, clique em
Eliminar.Esta ação também elimina os dois gateways de NAT da nuvem ligados aos routers da nuvem.
Elimine a regra de encaminhamento
vector-search-forwarding-rule
para a rede de VPCvertex-networking-vpc
da seguinte forma:Aceda ao separador Front-ends da página Equilíbrio de carga.
Na lista de regras de encaminhamento, clique em
vector-search-forwarding-rule
.Na página Detalhes da regra de encaminhamento, clique em
Eliminar.
Elimine as redes de VPC da seguinte forma:
Aceda à página Redes VPC.
Na lista de redes de VPC, clique em
onprem-vpc
.Na página Detalhes da rede de VPC, clique em
Eliminar rede de VPC.A eliminação de cada rede também elimina as respetivas sub-redes, rotas e regras de firewall.
Volte à lista de redes VPC e clique em
vertex-networking-vpc
.Na página Detalhes da rede de VPC, clique em
Eliminar rede de VPC.
Elimine o contentor de armazenamento da seguinte forma:
Na Google Cloud consola, aceda à página Cloud Storage.
Selecione o contentor de armazenamento e clique em
Eliminar.
Elimine a conta de serviço
workbench-sa
da seguinte forma:Aceda à página Contas de serviço.
Selecione a conta de serviço
workbench-sa
e clique em Eliminar.
O que se segue?
- Saiba mais sobre as opções de rede empresarial para aceder aos serviços e pontos finais do Vertex AI
- Saiba como funciona o Private Service Connect e por que motivo oferece vantagens significativas em termos de desempenho.
- Saiba como usar os VPC Service Controls para criar perímetros seguros para permitir ou negar o acesso à Vertex AI e a outras APIs Google no ponto final do índice de pesquisa vetorial através da Internet pública.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.