Gli host on-premise possono raggiungere un endpoint dell'indice di ricerca di vettori tramite internet pubblico o in privato tramite un'architettura di rete ibrida che utilizza Private Service Connect su Cloud VPN o Cloud Interconnect. Entrambe le opzioni offrono SSL/TLS la crittografia. Tuttavia, l'opzione privata offre prestazioni di gran lunga migliori e è quindi consigliato per le applicazioni critiche.
In questo tutorial utilizzi la VPN ad alta disponibilità (HA VPN) per accedere privatamente a un endpoint dell'indice di ricerca di vettori tra due reti Virtual Private Cloud (VPC) che possono servire da base per la connettività privata multi-cloud e on-premise.
Questo tutorial è rivolto agli amministratori di rete aziendali, scienziati e ricercatori che hanno familiarità con Vertex AI, Virtual Private Cloud, la console Google Cloud e Cloud Shell. Dimestichezza con La ricerca vettoriale è utile ma non obbligatorio.
Obiettivi
- Crea due reti VPC, come illustrato nell'esempio precedente
diagramma:
- Uno (
onprem-vpc
) rappresenta una rete on-premise. - L'altro (
vertex-networking-vpc
) è per l'endpoint di indice Vector Search.
- Uno (
- Esegui il deployment di gateway VPN ad alta disponibilità, tunnel VPN Cloud e router Cloud per connettere
vertex-networking-vpc
eonprem-vpc
. - Crea ed esegui il deployment di un indice Vector Search.
- Crea una regola di inoltro Private Service Connect per inoltrare le query all'endpoint dell'indice Vector Search.
- Configura una route annunciata personalizzata per il router Cloud in
vertex-networking-vpc
per annunciare i percorsi per endpoint indice aonprem-vpc
. - Crea un'istanza VM di Compute Engine in
onprem-vpc
per rappresentare un'applicazione client che invia richieste all'endpoint dell'indice di ricerca vettoriale tramite VPN ad alta disponibilità.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
-
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.
- Apri Cloud Shell per eseguire i comandi elencati in questo tutorial. Cloud Shell è un ambiente shell interattivo per Google Cloud che ti consente di gestire i tuoi progetti e le tue risorse dal browser web.
- In Cloud Shell, imposta il progetto attuale sul
ID progetto Google Cloud e archiviare lo stesso
ID progetto nella variabile shell
projectid
: Sostituisci PROJECT_ID con il tuo ID progetto. Se necessario, puoi Individua il tuo ID progetto nella console Google Cloud. Per ulteriori informazioni, vedi Trova il tuo ID progetto.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Se non sei il proprietario del progetto, chiedigli di concederti il ruolo Amministratore IAM del progetto (roles/resourcemanager.projectIamAdmin). Devi disporre di questo ruolo per concedere i ruoli IAM nel passaggio successivo.
-
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
crea le reti VPC
In questa sezione crei due reti VPC: una per creare un indice di ricerca di vettori e implementarlo in un endpoint, l'altra per l'accesso privato a quell'endpoint.
Crea la rete VPC per l'endpoint indice di Vector Search (vertex-networking-vpc
)
Crea la rete VPC per l'endpoint indice:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Crea una subnet denominata
workbench-subnet
, con un intervallo IPv4 principale di172.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
Crea una subnet denominata
psc-forwarding-rule-subnet
, con un intervallo IPv4 principale di172.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
Crea la rete VPC per l'accesso privato all'endpoint (onprem-vpc
)
Crea la rete VPC per simulare la rete on-premise (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
Nella rete
onprem-vpc
, crea una subnet denominataonprem-vpc-subnet1
, con un intervallo IPv4 principale di172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Verificare che le reti VPC siano configurate correttamente
Nella console Google Cloud, vai alla scheda Reti nel progetto attuale in pagina Reti VPC.
Nell'elenco delle reti VPC, verifica che le due reti siano state create:
vertex-networking-vpc
eonprem-vpc
.Fai clic sulla scheda Subnet nel progetto corrente.
Nell'elenco delle subnet VPC, verifica che
workbench-subnet
,psc-forwarding-rule-subnet
eonprem-vpc-subnet1
sono state create.
Crea l'istanza VM on-prem-client
In questa sezione crei un'istanza VM per rappresentare un'applicazione client che invia richieste all'endpoint dell'indice di ricerca di vettori tramite VPN ad alta disponibilità.
In Cloud Shell, crea l'istanza 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"
Configura la connettività ibrida
In questa sezione crei due gateway VPN ad alta disponibilità connessi tra loro. Uno risiede nella
vertex-networking-vpc
rete VPC. L'altro risiede
onprem-vpc
rete VPC.
Ogni gateway contiene un
un router Cloud e una coppia di tunnel VPN.
Crea i gateway VPN ad alta disponibilità
In Cloud Shell, crea il gateway VPN ad alta disponibilità
vertex-networking-vpc
rete VPC:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Crea il gateway VPN ad alta disponibilità per la rete VPC
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Nella console Google Cloud, vai alla scheda Gateway Cloud VPN Pagina VPN.
Verifica che i due (
vertex-networking-vpn-gw1
eonprem-vpn-gw1
) sono stati e che ognuna abbia due indirizzi IP di interfaccia.
Crea router Cloud e gateway Cloud NAT
In ciascuna delle due reti VPC, crei due Router Cloud: uno generale e uno a livello di regione. In ogni router Cloud regionale, crei un gateway Cloud NAT. I gateway Cloud NAT forniscono connettività in uscita per le istanze della macchina virtuale (VM) Compute Engine che non dispongono di indirizzi IP esterni.
In Cloud Shell, crea un router Cloud per
vertex-networking-vpc
rete VPC:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Crea un router Cloud per la rete VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Crea un router Cloud a livello di regione
vertex-networking-vpc
rete VPC:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Configura un gateway Cloud NAT sul router Cloud a livello di regione:
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
Crea un router Cloud regionale per la rete VPC
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Configura un gateway Cloud NAT sul router Cloud a livello di regione:
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
Nella console Google Cloud, vai alla pagina Router Cloud.
Nell'elenco Router Cloud, verifica che i seguenti router siano stati creato:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Potresti dover aggiornare la scheda del browser della console Google Cloud per visualizzare i nuovi valori.
Nell'elenco dei router Cloud, fai clic su
cloud-router-us-central1-vertex-nat
.Nella pagina Dettagli router, verifica che il gateway Cloud NAT
cloud-nat-us-central1
sia stato creato.Fai clic sulla
freccia indietro per torna alla pagina Router Cloud.Nell'elenco dei router, fai clic su
cloud-router-us-central1-onprem-nat
.Nella pagina Dettagli router, verifica che
cloud-nat-us-central1-on-prem
Il gateway Cloud NAT è stato creato.
Crea tunnel VPN
In Cloud Shell, nella rete
vertex-networking-vpc
, crea un'istanza Tunnel VPN denominatovertex-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
Nella rete
vertex-networking-vpc
, crea un tunnel VPN denominatovertex-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
Nella rete
onprem-vpc
, crea un tunnel VPN denominatoonprem-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
Nella rete
onprem-vpc
, crea un tunnel VPN denominatoonprem-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
Nella console Google Cloud, vai alla pagina VPN.
Nell'elenco dei tunnel VPN, verifica che i quattro tunnel VPN siano stati creati.
Definizione di sessioni BGP
Il router Cloud utilizza il protocollo BGP (Border Gateway Protocol) per scambiare le route tra
sulla tua rete VPC (in questo caso, vertex-networking-vpc
)
e la rete on-premise (rappresentata da onprem-vpc
). Sul router Cloud,
devi configurare un'interfaccia e un peer BGP per il tuo router on-premise.
L'abbinamento dell'interfaccia e della configurazione peer BGP crea una sessione BGP.
In questa sezione crei due sessioni BGP per vertex-networking-vpc
e altre due per onprem-vpc
.
Dopo aver configurato le interfacce e i peer BGP tra i router, questi inizieranno automaticamente a scambiarsi le route.
Stabilisci sessioni BGP per vertex-networking-vpc
In Cloud Shell, nella rete
vertex-networking-vpc
, crea un'istanza Interfaccia BGP pervertex-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
Nella rete
vertex-networking-vpc
, crea un peer BGP perbgp-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
Nella rete
vertex-networking-vpc
, crea un'interfaccia BGP pervertex-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
Nella rete
vertex-networking-vpc
, crea un peer BGP perbgp-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
Stabilisci sessioni BGP per onprem-vpc
Nella rete
onprem-vpc
, crea un'interfaccia BGP peronprem-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
Nella rete
onprem-vpc
, crea un peer BGP perbgp-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
Nella rete
onprem-vpc
, crea un'interfaccia BGP peronprem-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
Nella rete
onprem-vpc
, crea un peer BGP perbgp-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
Convalida la creazione della sessione BGP
Nella console Google Cloud, vai alla pagina VPN.
Nell'elenco dei tunnel VPN, verifica che il valore nella colonna Stato sessione BGP per ogni tunnel sia passato da Configura sessione BGP a BGP stabilito. Per visualizzare i nuovi valori, potresti dover aggiornare la scheda del browser della console Google Cloud.
Convalida i percorsi vertex-networking-vpc
appresi
Nella console Google Cloud, vai alla pagina Reti VPC.
Nell'elenco delle reti VPC, fai clic su
vertex-networking-vpc
.Fai clic sulla scheda Percorsi.
Seleziona us-central1 (Iowa) nell'elenco Regione e fai clic su Visualizza.
Nella colonna Intervallo IP di destinazione, verifica che
onprem-vpc-subnet1
l'intervallo IP della subnet (172.16.10.0/29
) compare due volte.
Convalida i percorsi on-prem-vpc
appresi
Fai clic sulla
freccia indietro per torna alla pagina Reti VPC.Nell'elenco delle reti VPC, fai clic su
on-prem-vpc
.Fai clic sulla scheda Route.
Seleziona us-central1 (Iowa) nell'elenco Regione e fai clic su Visualizza.
Nella colonna Intervallo IP di destinazione, verifica che l'intervallo IP della subnet
workbench-subnet
(172.16.20.0/28
) e l'intervallo IP della subnetpsc-forwarding-rule-subnet
(172.16.30.0/28
) appaiano entrambi due volte.
crea un'istanza di Vertex AI Workbench
In questa sezione crei un account di servizio gestito dall'utente, quindi crei un'istanza di Vertex AI Workbench che utilizza il tuo account di servizio per accedere ai servizi e alle API Google Cloud.
Crea un account di servizio
In questo tutorial crei un account di servizio gestito dall'utente seguendo le best practice di Compute Engine e IAM.
In Cloud Shell, crea un account di servizio denominato
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Assegna il parametro Utente Vertex AI (
roles/aiplatform.user
) ruolo IAM all'account di servizio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Assegna il parametro Amministratore Storage (
roles/storage.admin
) ruolo IAM all'account di servizio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Assegna il parametro Amministratore Service Usage (
roles/serviceusage.serviceUsageAdmin
) ruolo IAM all'account di servizio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"
crea l'istanza di Vertex AI Workbench
Crea un'istanza di Vertex AI Workbench,
specificando l'account di servizio 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
Crea ed esegui il deployment di un indice di Vector Search
prepara l'ambiente
Nella console Google Cloud, vai a Istanze nella pagina Vertex AI Workbench.
Fai clic su Apri JupyterLab accanto al nome dell'istanza di Vertex AI Workbench (
workbench-tutorial
).L'istanza di Vertex AI Workbench apre JupyterLab.
Seleziona File > Nuovo > Blocco note.
Dal menu Seleziona kernel, seleziona Python 3 (locale) e fai clic su Seleziona.
Quando apri il nuovo notebook, è presente una cella di codice predefinita in cui inserire il codice. L'icona ha l'aspetto
[ ]:
seguito da un campo di testo. Il campo di testo è il punto in cui incollare il codice.Per installare l'SDK Vertex AI per Python, incolla il seguente codice nella cella e fai clic su
Esegui le celle selezionate e vai avanti:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
In questo passaggio e in ciascuno dei seguenti, aggiungi una nuova cella di codice (se necessario) facendo clic su
Inserisci una cella sotto, incolla il codice nella cella e poi fai clic su Esegui le celle selezionate ed avanza.Per usare i pacchetti appena installati in questo runtime Jupyter, devi riavvia il runtime:
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Imposta le seguenti variabili di ambiente, sostituendo PROJECT_ID con il tuo ID progetto.
# 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")
Abilita API
Nel notebook JupyterLab, esegui il seguente comando per abilitare le API per Compute Engine, Vertex AI e Cloud Storage nel notebook:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
prepara i dati di esempio in un bucket Cloud Storage
In questo tutorial utilizziamo lo stesso Il set di dati Look utilizzato nella classe Guida rapida alla ricerca vettoriale. Consulta la pagina della documentazione della guida rapida per ulteriori informazioni su questo set di dati.
In questa sezione crei un bucket Cloud Storage e inserisci al suo interno il file di embedding del set di dati. In un passaggio successivo, utilizzerai questo file per creare un indice.
Nel tuo blocco note Jupyterlab, crea un bucket Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
Copia il file di esempio nel bucket Cloud Storage.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Per utilizzare la ricerca vettoriale per eseguire query, devi anche copiare il file di incorporamento in una directory locale:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Crea l'indice Vector Search
Nel blocco note JupyterLab, carica gli incorporamenti in Ricerca vettoriale:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Crea un MatchingEngineIndex con la sua funzione
create_tree_ah_index
(Matching Engine è il nome precedente di 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, )
Il metodo
MatchingEngineIndex.create_tree_ah_index()
crea un indice. In questo tutorial, questa operazione richiede circa 5-10 minuti.Nella console Google Cloud, vai alla scheda Indici nella Ricerca vettoriale.
Verifica che esista un indice il cui nome inizia con
"vs-quickstart-index-"
e contenga il timestamp corretto.Prendi nota dell'ID indice. Questo ID ti servirà quando eseguirai il deployment dell'indice in un passaggio successivo.
Crea l'endpoint indice
In Cloud Shell, esegui i seguenti comandi, sostituendo PROJECT_ID con il tuo ID progetto:
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Crea l'endpoint indice:
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'"] }}'
Verifica che l'endpoint dell'indice sia stato creato:
gcloud ai index-endpoints list --region=us-central1
L'output è simile all'esempio seguente, in cui il valore L'ID endpoint indice è
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'
Prendi nota dell'ID endpoint indice. Ti servirà questo ID quando eseguirai il deployment dell'indice in un passaggio successivo.
esegui il deployment dell'indice nell'endpoint
In Cloud Shell, esegui il seguente comando per eseguire il deployment dell'indice nell'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
Sostituisci i seguenti valori:
- INDEX_ENDPOINT_ID: l'ID endpoint dell'indice per l'endpoint dell'indice Private Service Connect che hai creato
- INDEX: l'ID dell'indice di cui stai eseguendo il deployment
L'output è simile all'esempio seguente, in cui
l'ID endpoint indice è 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.
L'operazione di deployment richiede da 10 a 15 minuti circa. Quando esegui il deployment viene generato un collegamento a un servizio.
Verifica che sia stato eseguito il deployment dell'indice nell'endpoint indice
Nella console Google Cloud, vai alla scheda Endpoint dell'indice nella pagina Ricerca vettoriale.
Verifica che l'endpoint dell'indice
vector-search
abbia un indice di cui è stato eseguito il deployment chiamato anchevector-search
.Se accanto al nome dell'endpoint indice viene visualizzato un cerchio blu rotante, dell'indice è ancora in fase di deployment.
Recupera l'URI del collegamento al servizio per l'endpoint dell'indice
Una volta completato il deployment dell'indice, puoi ottenere l'URI del collegamento al servizio.
In Cloud Shell, esegui questo comando per ottenere il servizio URI allegato:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
Nell'output di esempio seguente, l'URI del collegamento al servizio è
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
Prendi nota dell'URI serviceAttachment
, che inizia con projects
,
ad esempio projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Ti servirà nel passaggio successivo, quando crei una regola di forwarding.
Creare una regola di forwarding
In Cloud Shell, riserva un indirizzo IP per la regola di inoltro da utilizzare per eseguire query sull'indice di Ricerca vettoriale:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Trova l'indirizzo IP riservato:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Crea una regola di inoltro per collegare l'endpoint al collegamento al servizio, sostituendo SERVICE_ATTACHMENT_URI con il tuo
serviceAttachment
URI.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
Di seguito è riportato un esempio di utilizzo di questo 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
Nella console Google Cloud, vai alla scheda Endpoint collegati nella pagina Private Service Connect.
Verifica che lo stato di
vector-search-forwarding-rule
siaAccepted
.Prendi nota dell'indirizzo IP di Private Service Connect di una regola di forwarding. In un passaggio successivo, utilizzerai questo endpoint per stabilire la comunicazione con l'indice di Vector Search di cui è stato eseguito il deployment.
Esegui una query sull'indice di cui è stato eseguito il deployment
Ora che hai stabilito un forwarding di Private Service Connect
una regola connessa al tuo endpoint indice Vector Search,
puoi eseguire query sull'indice di cui hai eseguito il deployment inviando le query
on-prem-client
di istanza VM alla regola di forwarding.
Per consentire a Identity-Aware Proxy (IAP) di connettersi alle tue istanze VM, crea una regola firewall che:
- Si applica a tutte le istanze VM che vuoi rendere accessibili IAP.
- Consente il traffico TCP attraverso la porta 22 dall'intervallo IP
35.235.240.0/20
. Questo intervallo contiene tutti gli indirizzi IP Utilizzi IAP per Inoltro TCP.
Dopo aver creato il firewall, installa il client gRPC. In un passaggio successivo, utilizzerai il client gRPC per inviare query dall'istanza VM on-prem-client
.
Crea la regola firewall e installa gRPC
In Cloud Shell, esegui i seguenti comandi, sostituendo PROJECT_ID con l'ID progetto:
projectid=PROJECT_ID gcloud config set project ${projectid}
Crea una regola firewall IAP denominata
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Accedi all'istanza VM
on-prem-client
:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
Nell'istanza VM
on-prem-client
, installa 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
L'installazione richiede circa 30 minuti.
Ottenere un ID per un elemento dell'indice esistente
Nella console Google Cloud, vai a Istanze nella pagina Vertex AI Workbench.
Accanto al nome dell'istanza di Vertex AI Workbench, fai clic su Apri JupyterLab.
La tua istanza di Vertex AI Workbench apre JupyterLab.
Seleziona File > Nuovo > Terminale.
Nel terminale JupyterLab (non in Cloud Shell), visualizza l'ultima voce dell'indice:
tail -1 product-embs.json
Cerca la prima coppia chiave-valore nell'elemento, che contiene il numero ID dell'elemento, come nell'esempio seguente:
"id":"27452"
Prendi nota di questo numero di identificazione. Ti servirà per eseguire una query nella sezione successiva.
Eseguire una query di ricerca vettoriale
Nell'istanza VM on-prem-client
, esegui una query sull'indice di cui hai eseguito il deployment:
./grpc_cli call FORWARDING_RULE_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Sostituisci i seguenti valori:
- FORWARDING_RULE_IP: indirizzo IP del La regola di forwarding di Private Service Connect creata in la sezione precedente
- ITEM_ID: il numero di ID articolo salvato nella sezione precedente
L'output è simile al seguente:
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
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Puoi eliminare le singole risorse nella console Google Cloud come segue:
Annullare il deployment ed eliminare l'indice Vector Search come segue:
Nella console Google Cloud, vai alla scheda Indici nella pagina Ricerca vettoriale.
Individua l'indice il cui nome inizia con
"vs-quickstart-index-"
e contiene il timestamp corretto.Fai clic sul nome dell'indice.
Nella pagina Informazioni indice, accanto al nome dell'indice nella Indici di cui è stato eseguito il deployment, fai clic su
Azioni e fai clic su Annulla deployment.Il dislocamento dell'indice richiede alcuni minuti. Se viene visualizzato un cerchio blu rotante viene visualizzato accanto al nome dell'indice o se lo stato dell'indice è indicato come
Undeploying
, è ancora in corso l'annullamento del deployment dell'indice. Potresti dover aggiornare la console Google Cloud scheda del browser per vedere che il deployment dell'indice non è più stato eseguito.Fai clic sulla
Freccia indietro per tornare alla scheda Indici.Accanto al nome dell'indice nell'elenco, fai clic su
Azioni e fai clic su Elimina per eliminare l'indice.
Elimina l'endpoint indice come segue:
Nella console Google Cloud, vai alla scheda Endpoint dell'indice nella pagina Ricerca vettoriale.
Accanto al nome dell'endpoint nell'elenco degli endpoint indice, fai clic su
Azioni e fai clic su Elimina per eliminare l'endpoint indice.
Elimina l'istanza di Vertex AI Workbench come segue:
Nella console Google Cloud, nella sezione Vertex AI, vai a Scheda Istanze nella pagina Workbench.
Seleziona
workbench-tutorial
Istanza di Vertex AI Workbench e fai clic su Elimina.
Elimina l'istanza VM di Compute Engine come segue:
Nella console Google Cloud, vai alla pagina Compute Engine.
Seleziona l'istanza VM
on-prem-client
e fai clic su Elimina.
Elimina i tunnel VPN come segue:
Nella console Google Cloud, vai alla pagina VPN.
Nella pagina VPN, fai clic sulla scheda Tunnel Cloud VPN.
Nell'elenco dei tunnel VPN, seleziona i quattro tunnel VPN che hai creato in questo tutorial e fai clic su
Elimina.
Elimina i gateway VPN ad alta disponibilità come segue:
Nella pagina VPN, fai clic sulla scheda Gateway Cloud VPN.
Nell'elenco dei gateway VPN, fai clic su
onprem-vpn-gw1
.Nella pagina Dettagli del gateway Cloud VPN, fai clic su
Elimina gateway VPN.Se necessario, fai clic sulla
freccia Indietro per tornare all'elenco dei gateway VPN, quindi fai clic suvertex-networking-vpn-gw1
.Nella pagina Dettagli gateway Cloud VPN, fai clic su
Elimina il gateway VPN.
Elimina i router Cloud come segue:
Vai alla pagina Router Cloud.
Nell'elenco dei router cloud, seleziona i quattro router che hai creato in questo tutorial.
Per eliminare i router, fai clic su
Elimina.Verranno eliminati anche i due gateway Cloud NAT connessi dai router Cloud.
Elimina la regola di forwarding
vector-search-forwarding-rule
per la rete VPCvertex-networking-vpc
come segue:Vai alla scheda Frontend della pagina Bilanciamento del carico.
Nell'elenco delle regole di forwarding, fai clic su
vector-search-forwarding-rule
.Nella pagina Dettagli regola di inoltro, fai clic su
Elimina.
Elimina le reti VPC come segue:
Vai alla pagina Reti VPC.
Nell'elenco delle reti VPC, fai clic su
onprem-vpc
.Nella pagina Dettagli rete VPC, fai clic su
Elimina la rete VPC.L'eliminazione di ogni rete elimina anche le relative subnet, route e regole firewall.
Torna all'elenco delle reti VPC e fai clic su
vertex-networking-vpc
.Nella pagina Dettagli rete VPC, fai clic su
Elimina rete VPC.
Elimina il bucket di archiviazione come segue:
Nella console Google Cloud, vai alla pagina Cloud Storage.
Seleziona il bucket di archiviazione e fai clic su
Elimina.
Elimina l'account di servizio
workbench-sa
come segue:Vai alla pagina Account di servizio.
Seleziona l'account di servizio
workbench-sa
. fai clic su Elimina.
Passaggi successivi
- Scopri le opzioni di networking aziendale per accedere a servizi ed endpoint di Vertex AI
- Impara come funziona Private Service Connect e perché offre vantaggi significativi in termini di prestazioni.
- Scopri come utilizzare i Controlli di servizio VPC per creare perimetri sicuri per consentire o negare l'accesso a Vertex AI e ad altre API Google sull'endpoint dell'indice di ricerca di Vertex Search tramite internet pubblico.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.