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.
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
)
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
workbench-subnet
sub-rede172.16.20.0/28
e o intervalo IP dapsc-forwarding-rule-subnet
sub-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
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 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-client
para 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
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.
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