Lokale Hosts können einen Vektorsuchindex entweder über das öffentliche Internet oder privat über eine hybride Netzwerkarchitektur erreichen, die Private Service Connect über Cloud VPN oder Cloud Interconnect verwendet. Beide Optionen bieten SSL/TLS-Verschlüsselung. Die private Option bietet jedoch eine deutlich bessere Leistung und wird daher für kritische Anwendungen empfohlen.
In dieser Anleitung verwenden Sie ein Hochverfügbarkeits-VPN (HA VPN), um privat auf einen Vektorsuchindex-Endpunkt zwischen zwei Virtual Private Cloud-Netzwerken (VPC) zuzugreifen, die als Grundlage für private Konnektivität in Multi-Cloud- und lokalen Umgebungen dienen können.
Diese Anleitung richtet sich an Unternehmensnetzwerkadministratoren, Data Scientists und Forscher, die mit Vertex AI, Virtual Private Cloud, der Google Cloud Console und der Cloud Shell vertraut sind. Kenntnisse über die Vektorsuche sind hilfreich, aber nicht erforderlich.
VPC-Netzwerke erstellen
In diesem Abschnitt erstellen Sie zwei VPC-Netzwerke: das eine zum Erstellen eines Vektorsuchindex und zum Bereitstellen auf einem Endpunkt, das andere für den privaten Zugriff auf diesen Endpunkt.
Erstellen Sie das VPC-Netzwerk für den Vektorsuchindex-Endpunkt (vertex-networking-vpc
).
VPC-Netzwerk für den Indexendpunkt erstellen:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Erstellen Sie ein Subnetz mit dem Namen
workbench-subnet
und den primären IPv4-Bereich172.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
Erstellen Sie ein Subnetz mit dem Namen
psc-forwarding-rule-subnet
mit einem primären IPv4-Bereich von172.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
VPC-Netzwerk für den privaten Zugriff auf den Endpunkt (onprem-vpc
) erstellen
Erstellen Sie das VPC-Netzwerk, um das lokale Netzwerk (
onprem-vpc
) zu simulieren:gcloud compute networks create onprem-vpc \ --subnet-mode custom
Erstellen Sie im Netzwerk
onprem-vpc
ein Subnetz mit dem Namenonprem-vpc-subnet1
und dem primären IPv4-Bereich von172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Prüfen, ob die VPC-Netzwerke richtig konfiguriert sind
Rufen Sie in der Google Cloud Console den Tab Netzwerke im aktuellen Projekt auf der Seite VPC-Netzwerke auf.
Prüfen Sie in der Liste der VPC-Netzwerke, ob die beiden Netzwerke erstellt wurden:
vertex-networking-vpc
undonprem-vpc
.Klicken Sie auf den Tab Subnetze im aktuellen Projekt.
Prüfen Sie in der Liste der VPC-Subnetze, ob die Subnetze
workbench-subnet
undpsc-forwarding-rule-subnet
undonprem-vpc-subnet1
erstellt wurden.
on-prem-client
VM-Instanz erstellen
In diesem Abschnitt erstellen Sie eine VM-Instanz, die eine Clientanwendung darstellt, die Anfragen über HA VPN an den Vektorsuchindex-Endpunkt sendet.
Erstellen Sie in Cloud Shell die VM-Instanz
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"
Hybridkonnektivität konfigurieren
In diesem Abschnitt erstellen Sie zwei HA VPN-Gateways, die miteinander verbunden sind. Eines befindet sich im VPC-Netzwerk vertex-networking-vpc
. Das andere befindet sich im VPC-Netzwerk onprem-vpc
.
Jedes Gateway enthält einen Cloud Router und ein VPN-Tunnelpaar.
HA VPN-Gateways erstellen
Erstellen Sie in Cloud Shell das HA VPN-Gateway für das VPC-Netzwerk
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Erstellen Sie das HA VPN-Gateway für das VPC-Netzwerk
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Rufen Sie in der Google Cloud -Console auf der Seite VPN den Tab Cloud VPN-Gateways auf.
Prüfen Sie, ob die beiden Gateways (
vertex-networking-vpn-gw1
undonprem-vpn-gw1
) erstellt wurden und ob jedes Gateway zwei Schnittstellen-IP-Adressen hat.
Cloud Router und Cloud NAT-Gateways erstellen
In jedem der beiden VPC-Netzwerke erstellen Sie zwei Cloud Router: einen allgemeinen und einen regionalen. In jedem der regionalen Cloud Router erstellen Sie ein Cloud NAT-Gateway. Cloud NAT-Gateways bieten ausgehende Verbindungen für Compute Engine-VM-Instanzen ohne externe IP-Adressen.
Erstellen Sie in Cloud Shell einen Cloud Router für das VPC-Netzwerk
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Erstellen Sie einen Cloud Router für das VPC-Netzwerk
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Erstellen Sie einen regionalen Cloud Router für das VPC-Netzwerk
vertex-networking-vpc
:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Konfigurieren Sie ein Cloud NAT-Gateway auf dem regionalen Cloud Router:
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
Erstellen Sie einen regionalen Cloud Router für das VPC-Netzwerk
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Konfigurieren Sie ein Cloud NAT-Gateway auf dem regionalen Cloud Router:
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
Rufen Sie in der Google Cloud Console die Seite Cloud Router auf.
Prüfen Sie in der Liste Cloud Router, ob die folgenden Router erstellt wurden:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Möglicherweise müssen Sie den Browsertab der Google Cloud -Konsole aktualisieren, um die neuen Werte zu sehen.
Klicken Sie in der Liste der Cloud Router auf
cloud-router-us-central1-vertex-nat
.Prüfen Sie auf der Seite Routerdetails, ob das Cloud NAT-Gateway
cloud-nat-us-central1
erstellt wurde.Klicken Sie auf den
Zurückpfeil, um zur Seite Cloud Router zurückzukehren.Klicken Sie in der Liste der Router auf
cloud-router-us-central1-onprem-nat
.Prüfen Sie auf der Seite Routerdetails, ob das Cloud NAT-Gateway
cloud-nat-us-central1-on-prem
erstellt wurde.
VPN-Tunnel erstellen
Erstellen Sie in der Cloud Shell im Netzwerk
vertex-networking-vpc
einen VPN-Tunnel mit dem Namenvertex-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
Erstellen Sie im Netzwerk
vertex-networking-vpc
einen VPN-Tunnel mit dem Namenvertex-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
Erstellen Sie im Netzwerk
onprem-vpc
einen VPN-Tunnel mit dem Namenonprem-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
Erstellen Sie im Netzwerk
onprem-vpc
einen VPN-Tunnel mit dem Namenonprem-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
Rufen Sie in der Google Cloud Console die Seite VPN auf.
Prüfen Sie in der Liste der VPN-Tunnel, ob die vier VPN-Tunnel erstellt wurden.
BGP-Sitzungen erstellen
Cloud Router verwendet das Border Gateway Protocol (BGP), um Routen zwischen Ihrem VPC-Netzwerk (in diesem Fall vertex-networking-vpc
) und Ihrem lokalen Netzwerk (dargestellt durch onprem-vpc
) auszutauschen. Auf dem Cloud Router konfigurieren Sie eine Schnittstelle und einen BGP-Peer für Ihren lokalen Router.
Die Konfigurationen für Schnittstelle und BGP-Peer bilden zusammen eine BGP-Sitzung.
In diesem Abschnitt erstellen Sie zwei BGP-Sitzungen für vertex-networking-vpc
und zwei für onprem-vpc
.
Nachdem Sie die Schnittstellen und BGP-Peers zwischen Ihren Routern konfiguriert haben, beginnen sie automatisch mit dem Austausch von Routen.
BGP-Sitzungen für vertex-networking-vpc
erstellen
Erstellen Sie in Cloud Shell im Netzwerk
vertex-networking-vpc
eine BGP-Schnittstelle fürvertex-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
Erstellen Sie im Netzwerk
vertex-networking-vpc
einen BGP-Peer fürbgp-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
Erstellen Sie im Netzwerk
vertex-networking-vpc
eine BGP-Schnittstelle fürvertex-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
Erstellen Sie im Netzwerk
vertex-networking-vpc
einen BGP-Peer fürbgp-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
BGP-Sitzungen für onprem-vpc
erstellen
Erstellen Sie im Netzwerk
onprem-vpc
eine BGP-Schnittstelle füronprem-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
Erstellen Sie im Netzwerk
onprem-vpc
einen BGP-Peer fürbgp-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
Erstellen Sie im Netzwerk
onprem-vpc
eine BGP-Schnittstelle füronprem-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
Erstellen Sie im Netzwerk
onprem-vpc
einen BGP-Peer fürbgp-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
BGP-Sitzungserstellung prüfen
Rufen Sie in der Google Cloud Console die Seite VPN auf.
Prüfen Sie in der Liste der VPN-Tunnel, ob sich der Wert in der Spalte BGP-Sitzungsstatus für jeden Tunnel von BGP-Sitzung konfigurieren in BGP eingerichtet gändert. Möglicherweise müssen Sie den Browsertab der Google Cloud -Konsole aktualisieren, um die neuen Werte zu sehen.
Erkannte Routen vertex-networking-vpc
validieren
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie in der Liste der VPC-Netzwerke auf
vertex-networking-vpc
.Klicken Sie auf den Tab Routen.
Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus und klicken Sie auf Ansehen.
Prüfen Sie in der Spalte Ziel-IP-Adressbereich, ob der IP-Bereich des Subnetzes
onprem-vpc-subnet1
(172.16.10.0/29
) zweimal angezeigt wird.
Erkannte Routen on-prem-vpc
validieren
Klicken Sie auf den
Zurückpfeil, um zur Seite VPC-Netzwerke zurückzukehren.Klicken Sie in der Liste der VPC-Netzwerke auf
on-prem-vpc
.Klicken Sie auf den Tab Routen.
Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus und klicken Sie auf Ansehen.
Prüfen Sie in der Spalte Ziel-IP-Adressbereich, ob der IP-Bereich des Subnetzes
workbench-subnet
(172.16.20.0/28
) und der IP-Bereich des Subnetzespsc-forwarding-rule-subnet
(172.16.30.0/28
) jeweils zweimal angezeigt wird.
Vertex AI Workbench-Instanz erstellen
In diesem Abschnitt erstellen Sie ein nutzerverwaltetes Dienstkonto und dann eine Vertex AI Workbench-Instanz, die Ihr Dienstkonto für den Zugriff aufGoogle Cloud -Dienste und APIs verwendet.
Dienstkonto erstellen
In dieser Anleitung erstellen Sie ein nutzerverwaltetes Dienstkonto gemäß den Best Practices für Compute Engine und IAM.
Erstellen Sie in der Cloud Shell ein Dienstkonto mit dem Namen
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Weisen Sie dem Dienstkonto die IAM-Rolle Vertex AI User (
roles/aiplatform.user
) zu:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Weisen Sie dem Dienstkonto die IAM-Rolle Storage Admin (
roles/storage.admin
) zu:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Weisen Sie dem Dienstkonto die IAM-Rolle Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
) zu:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"
Vertex AI Workbench-Instanz erstellen
Erstellen Sie eine Vertex AI Workbench-Instanz und geben Sie das Dienstkonto workbench-sa
an:
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
Erstellen Sie einen Vektorsuchindex und stellen Sie ihn bereit.
Umgebung vorbereiten
Rufen Sie in der Google Cloud Console auf der Seite Vertex AI Workbench den Tab Instanzen auf.
Klicken Sie neben dem Namen der Vertex AI Workbench-Instanz (
workbench-tutorial
) auf JupyterLab öffnen.Ihre Vertex AI Workbench-Instanz öffnet JupyterLab.
Wählen Sie File > New > Notebook aus.
Wählen Sie im Menü Kernel auswählen die Option Python 3 (lokal) aus und klicken Sie auf Auswählen.
Wenn Ihr neues Notebook geöffnet wird, wird eine Standard-Codezelle angezeigt, in die Sie Code eingeben können. Sie sieht so aus:
[ ]:
, gefolgt von einem Textfeld. In das Textfeld fügen Sie den Code ein.Fügen Sie den folgenden Code in die Zelle ein und klicken Sie auf
Ausgewählte Zellen ausführen und fortfahren, um das Vertex AI SDK für Python zu installieren:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
Fügen Sie in diesem und jedem der folgenden Schritte eine neue Codezelle (wenn nötig) hinzu, indem Sie auf
Zelle unten einfügen klicken, den Code in die Zelle einfügen und dann auf Ausgewählte Zellen ausführen und fortfahren klicken.Um die neu installierten Pakete in dieser Jupyter-Laufzeit zu verwenden, müssen Sie die Laufzeit neu starten:
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Legen Sie die folgenden Umgebungsvariablen fest und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.
# 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")
APIs aktivieren
Führen Sie in Ihrem JupyterLab-Notebook den folgenden Befehl aus, um APIs für Compute Engine, Vertex AI und Cloud Storage im Notebook zu aktivieren:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Beispieldaten in einem Cloud Storage-Bucket vorbereiten
In dieser Anleitung verwenden wir denselben TheLook-Datensatz wie in der Schnellstartanleitung zur Vektorsuche. Weitere Informationen zu diesem Dataset finden Sie auf der Seite mit der Kurzanleitung.
In diesem Abschnitt erstellen Sie einen Cloud Storage-Bucket und legen die Einbettungsdatei des Datasets darin ab. In einem späteren Schritt verwenden Sie diese Datei, um einen Index zu erstellen.
Erstellen Sie in Ihrem JupyterLab-Notebook einen Cloud Storage-Bucket:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
Kopieren Sie die Beispieldatei in Ihren Cloud Storage-Bucket.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Wenn Sie Vektorsuche zum Ausführen von Anfragen verwenden möchten, müssen Sie die Einbettungsdatei auch in ein lokales Verzeichnis kopieren:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Vektorsuchindex erstellen
Laden Sie die Einbettungen in Ihrem JupyterLab-Notebook in die Vektorsuche:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Erstellen Sie einen MatchingEngineIndex mit seiner Funktion
create_tree_ah_index
(Matching Engine ist der frühere Name der Vektorsuche):# 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, )
Mit der Methode
MatchingEngineIndex.create_tree_ah_index()
wird ein Index erstellt. In dieser Anleitung dauert dieser Vorgang etwa 5 bis 10 Minuten.Rufen Sie in der Google Cloud Console auf der Seite Vektorsuche den Tab Indizes auf.
Prüfen Sie, ob ein Index vorhanden ist, dessen Name mit
"vs-quickstart-index-"
beginnt und den richtigen Zeitstempel enthält.Notieren Sie sich die Index-ID. Sie benötigen diese ID, wenn Sie den Index in einem späteren Schritt bereitstellen.
Indexendpunkt erstellen
Führen Sie in der Cloud Shell die folgenden Befehle aus und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID:
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Indexendpunkt erstellen:
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'"] }}'
Prüfen Sie, ob der Indexendpunkt erstellt wurde:
gcloud ai index-endpoints list --region=us-central1
Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen. Die Indexendpunkt-ID lautet
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'
Notieren Sie sich die ID des Indexendpunkts. Sie benötigen diese ID, wenn Sie Ihren Index in einem späteren Schritt bereitstellen.
Index auf dem Endpunkt bereitstellen
Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Index auf dem Endpunkt bereitzustellen:
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
Ersetzen Sie die folgenden Werte:
- INDEX_ENDPOINT_ID: die ID des Indexendpunkts für den von Ihnen erstellten Private Service Connect-Indexendpunkt
- INDEX: die ID des Index, den Sie bereitstellen
Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen. Die Indexendpunkt-ID lautet 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.
Die Bereitstellung dauert etwa 10 bis 15 Minuten. Wenn Sie den Index bereitstellen, wird ein Dienstanhang generiert.
Prüfen, ob der Index für den Indexendpunkt bereitgestellt wurde
Rufen Sie in der Google Cloud Console auf der Seite Vektorsuche den Tab Indexendpunkte auf.
Prüfen Sie, ob der Indexendpunkt
vector-search
einen bereitgestellten Index mit dem Namenvector-search
hat.Wenn neben dem Namen des Indexendpunkts ein rotierender blauer Kreis angezeigt wird, wird der Index noch bereitgestellt.
URI des Dienstanhangs für den Indexendpunkt abrufen
Nachdem der Index vollständig bereitgestellt wurde, können Sie den URI des Dienstanhangs abrufen.
Führen Sie in der Cloud Shell den folgenden Befehl aus, um den URI des Dienstanhangs abzurufen:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
In der folgenden Beispielausgabe lautet der URI des Dienstanhangs 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
Notieren Sie sich den serviceAttachment
-URI, der mit projects
beginnt, z. B. projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Sie benötigen ihn im nächsten Schritt, wenn Sie eine Weiterleitungsregel erstellen.
Erstellen Sie eine Weiterleitungsregel.
Reservieren Sie in der Cloud Shell eine IP-Adresse für die Weiterleitungsregel, die zum Abfragen des Vektorsuchindex verwendet wird:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Suchen Sie die reservierte IP-Adresse:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Erstellen Sie eine Weiterleitungsregel, um den Endpunkt mit dem Dienstanhang zu verbinden. Ersetzen Sie dabei SERVICE_ATTACHMENT_URI durch Ihren
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
Im Folgenden finden Sie ein Beispiel für die Verwendung dieses Befehls:
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
Rufen Sie in der Google Cloud Console auf der Seite Private Service Connect den Tab Verbundene Endpunkte auf.
Prüfen Sie, ob der Status von
vector-search-forwarding-rule
Accepted
lautet.Notieren Sie sich die IP-Adresse der Private Service Connect-Weiterleitungsregel. In einem späteren Schritt verwenden Sie diesen Endpunkt, um die Kommunikation mit dem bereitgestellten Vektorindex herzustellen.
Bereitgestellten Index abfragen
Nachdem Sie eine Private Service Connect-Weiterleitungsregel eingerichtet haben, die mit Ihrem Vektorsuchindex-Endpunkt verbunden ist, können Sie den bereitgestellten Index abfragen, indem Sie die Abfragen von der VM-Instanz on-prem-client
an die Weiterleitung-Regel senden.
Damit Identity-Aware Proxy (IAP) eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:
- für alle VM-Instanzen gilt, die über IAP zugänglich sein sollen.
- TCP-Traffic über Port 22 aus dem IP-Bereich
35.235.240.0/20
zulässt. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.
Nachdem Sie die Firewall erstellt haben, installieren Sie den gRPC-Client. In einem späteren Schritt verwenden Sie den gRPC-Client, um Anfragen von der VM-Instanz on-prem-client
zu senden.
Firewallregel erstellen und gRPC installieren
Führen Sie in der Cloud Shell die folgenden Befehle aus und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID:
projectid=PROJECT_ID gcloud config set project ${projectid}
Erstellen Sie eine IAP-Firewallregel mit dem Namen
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Melden Sie sich bei der VM-Instanz
on-prem-client
an:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
Installieren Sie auf der VM-Instanz
on-prem-client
dengRPC
-Client: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
Die Installation dauert etwa 30 Minuten.
ID für ein vorhandenes Indexelement abrufen
Rufen Sie in der Google Cloud Console auf der Seite Vertex AI Workbench den Tab Instanzen auf.
Klicken Sie neben dem Namen der Vertex AI Workbench-Instanz auf JupyterLab öffnen.
Ihre Vertex AI Workbench-Instanz öffnet JupyterLab.
Wählen Sie Datei > Neu > Terminal aus.
Sehen Sie sich im JupyterLab-Terminal (nicht in Cloud Shell) den letzten Eintrag im Index an:
tail -1 product-embs.json
Suchen Sie im Artikel nach dem ersten Schlüssel/Wert-Paar, das die ID-Nummer des Artikels enthält, wie im folgenden Beispiel:
"id":"27452"
Notieren Sie sich diese ID-Nummer. Sie benötigen sie, um im nächsten Abschnitt eine Abfrage auszuführen.
Vektorsuchanfrage ausführen
Fragen Sie auf der VM-Instanz on-prem-client
den bereitgestellten Index ab:
./grpc_cli call FORWARDING_RULE_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Ersetzen Sie die folgenden Werte:
- FORWARDING_RULE_IP: IP-Adresse der Private Service Connect-Weiterleitungsregel, die Sie im vorherigen Abschnitt erstellt haben
- ITEM_ID: die ID-Nummer des Elements, die Sie im vorherigen Abschnitt gespeichert haben
Die Ausgabe sieht etwa so aus:
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