Les hôtes sur site peuvent accéder à un point de terminaison d'index Vector Search via l'Internet public ou de manière privée via une architecture de mise en réseau hybride qui utilise Private Service Connect (PSC) via Cloud VPN ou Cloud Interconnect. Les deux options proposent le chiffrement SSL/TLS. Toutefois, l'option privée offre de bien meilleures performances et est donc recommandée pour les applications critiques.
Dans ce tutoriel, vous allez utiliser un VPN haute disponibilité pour accéder à un point de terminaison d'index Vector Search de manière privée, entre deux réseaux de cloud privé virtuel (VPC), qui peuvent servir de base pour une connectivité privée multicloud et sur site.
Ce tutoriel est destiné aux administrateurs réseau d'entreprise, aux data scientists et aux chercheurs qui connaissent déjà Vertex AI, le cloud privé virtuel, la console Google Cloud et Cloud Shell. Une connaissance de Vector Search est utile, mais pas obligatoire.
Objectifs
- Créez deux réseaux VPC, comme illustré dans le schéma précédent :
- L'un (
onprem-vpc
) représente un réseau sur site. - L'autre (
vertex-networking-vpc
) correspond au point de terminaison de l'index Vector Search.
- L'un (
- Déployer des passerelles VPN haute disponibilité, des tunnels Cloud VPN et des routeurs Cloud Router pour connecter
vertex-networking-vpc
etonprem-vpc
. - Créer et déployer un index Vector Search
- Créez un point de terminaison Private Service Connect (PSC) pour transférer les requêtes vers le point de terminaison de l'index Vector Search.
- Configurer une annonce de routage personnalisée Cloud Router dans
vertex-networking-vpc
pour annoncer les routes du point de terminaison Private Service Connect àonprem-vpc
. - Créez une instance de VM Compute Engine dans
onprem-vpc
pour représenter une application cliente qui envoie des requêtes au point de terminaison de l'index Vector Search via un VPN haute disponibilité.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
-
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.
- Ouvrez Cloud Shell pour exécuter les commandes répertoriées dans ce tutoriel. Cloud Shell est un environnement shell interactif pour Google Cloud qui vous permet de gérer vos projets et vos ressources depuis un navigateur Web.
- Dans Cloud Shell, définissez le projet actuel sur votre ID de projet Google Cloud, puis stockez le même ID de projet dans la variable de shell
projectid
: Remplacez PROJECT_ID par l'ID du projet. Si nécessaire, vous pouvez le trouver dans la console Google Cloud. Pour en savoir plus, consultez la section Trouver votre ID de projet.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Si vous n'êtes pas le propriétaire du projet, demandez à son propriétaire de vous accorder le rôle Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin). Vous devez disposer de ce rôle pour attribuer des rôles IAM à l'étape suivante.
-
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 et Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com
Créer les réseaux VPC
Dans cette section, vous allez créer deux réseaux VPC, l'un pour créer un index Vector Search et le déployer sur un point de terminaison, l'autre pour l'accès privé à ce point de terminaison.
Créer le réseau VPC pour le point de terminaison de l'index Vector Search (vertex-networking-vpc
)
Créez le réseau VPC pour le point de terminaison d'index:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Créez un sous-réseau nommé
workbench-subnet
avec une plage IPv4 principale 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
Créez un sous-réseau nommé
consumer-endpoint-subnet
avec une plage IPv4 principale de172.16.30.0/28
:gcloud compute networks subnets create consumer-endpoint-subnet \ --project=$projectid \ --range=172.16.30.0/28 \ --network=vertex-networking-vpc \ --region=us-central1 \ --enable-private-ip-google-access
Créer le réseau VPC pour l'accès privé au point de terminaison (onprem-vpc
)
Créez le réseau VPC pour simuler le réseau sur site (
onprem-vpc
) :gcloud compute networks create onprem-vpc \ --subnet-mode custom
Dans le réseau
onprem-vpc
, créez un sous-réseau nomméonprem-vpc-subnet1
, avec172.16.10.0/29
comme plage d'adresses IPv4 principale :gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Vérifier que les réseaux VPC sont correctement configurés
Dans la console Google Cloud, accédez à l'onglet Réseaux du projet en cours sur la page Réseaux VPC.
Dans la liste des réseaux VPC, vérifiez que les deux réseaux ont été créés :
vertex-networking-vpc
etonprem-vpc
.Cliquez sur l'onglet Sous-réseaux dans le projet actuel.
Dans la liste des sous-réseaux VPC, vérifiez que les sous-réseaux
workbench-subnet
,consumer-endpoint-subnet
etonprem-vpc-subnet1
ont été créés.
Créer l'instance de VM on-prem-client
Dans cette section, vous allez créer une instance de VM pour représenter une application cliente qui envoie des requêtes au point de terminaison de l'index Vector Search via un VPN haute disponibilité.
Dans Cloud Shell, créez l'instance 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"
Configurer la connectivité hybride
Dans cette section, vous allez créer deux passerelles VPN haute disponibilité connectées l'une à l'autre. L'une réside dans le réseau VPC vertex-networking-vpc
. L'autre réside dans le réseau VPC onprem-vpc
.
Chaque passerelle contient un routeur Cloud Router et une paire de tunnels VPN.
Créer des passerelles VPN haute disponibilité
Dans Cloud Shell, créez la passerelle VPN haute disponibilité pour le réseau VPC
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Créez la passerelle VPN haute disponibilité pour le réseau VPC
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Dans la console Google Cloud, accédez à l'onglet Passerelles Cloud VPN sur la page VPN.
Vérifiez que les deux passerelles (
vertex-networking-vpn-gw1
etonprem-vpn-gw1
) ont été créées et que chacune dispose de deux adresses IP d'interface.
Créer des routeurs Cloud et des passerelles Cloud NAT
Dans chacun des deux réseaux VPC, vous créez deux routeurs cloud: un routeur général et un routeur régional. Dans chacun des routeurs Cloud Router régionaux, vous créez une passerelle Cloud NAT. Les passerelles Cloud NAT fournissent une connectivité sortante pour les instances de machines virtuelles (VM) Compute Engine sans adresse IP externe.
Dans Cloud Shell, créez un routeur Cloud Router pour le réseau VPC
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Créez un routeur Cloud Router pour le réseau VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Créez un routeur Cloud Router régional pour le réseau VPC
vertex-networking-vpc
:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Configurez une passerelle Cloud NAT sur le routeur Cloud Router régional:
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
Créez un routeur Cloud Router régional pour le réseau VPC
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Configurez une passerelle Cloud NAT sur le routeur Cloud Router régional:
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
Dans Google Cloud Console, accédez à la page Routeurs cloud.
Dans la liste des routeurs cloud, vérifiez que les routeurs suivants ont été créés:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Vous devrez peut-être actualiser l'onglet du navigateur de la console Google Cloud pour afficher les nouvelles valeurs.
Dans la liste des routeurs Cloud Router, cliquez sur
cloud-router-us-central1-vertex-nat
.Sur la page Détails du routeur, vérifiez que la passerelle Cloud NAT
cloud-nat-us-central1
a été créée.Cliquez sur la flèche de retour
pour revenir à la page Routeurs cloud.Dans la liste des routeurs, cliquez sur
cloud-router-us-central1-onprem-nat
.Sur la page Détails du routeur, vérifiez que la passerelle Cloud NAT
cloud-nat-us-central1-on-prem
a été créée.
Créer des tunnels VPN
Dans Cloud Shell, dans le réseau
vertex-networking-vpc
, créez un tunnel VPN appelévertex-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
Dans le réseau
vertex-networking-vpc
, créez un tunnel VPN appelévertex-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
Dans le réseau
onprem-vpc
, créez un tunnel VPN appeléonprem-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
Dans le réseau
onprem-vpc
, créez un tunnel VPN appeléonprem-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
Dans Google Cloud Console, accédez à la page VPN.
Dans la liste des tunnels VPN, vérifiez que les quatre tunnels VPN ont été créés.
Établir des sessions BGP
Cloud Router utilise le protocole BGP (Border Gateway Protocol) pour échanger des routes entre votre réseau VPC (dans ce cas, vertex-networking-vpc
) et votre réseau sur site (représenté par onprem-vpc
). Sur Cloud Router, vous configurez une interface et un pair BGP pour votre routeur sur site.
Ensemble, l'interface et la configuration du pair BGP forment une session BGP.
Dans cette section, vous allez créer deux sessions BGP pour vertex-networking-vpc
et deux pour onprem-vpc
.
Une fois que vous avez configuré les interfaces et les pairs BGP entre vos routeurs, ils commencent automatiquement à échanger des routes.
Établir des sessions BGP pour vertex-networking-vpc
Dans Cloud Shell, dans le réseau
vertex-networking-vpc
, créez une interface BGP pourvertex-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
Dans le réseau
vertex-networking-vpc
, créez un pair BGP pourbgp-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
Dans le réseau
vertex-networking-vpc
, créez une interface BGP pourvertex-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
Dans le réseau
vertex-networking-vpc
, créez un pair BGP pourbgp-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
Établir des sessions BGP pour onprem-vpc
Dans le réseau
onprem-vpc
, créez une interface BGP pouronprem-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
Dans le réseau
onprem-vpc
, créez un pair BGP pourbgp-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
Dans le réseau
onprem-vpc
, créez une interface BGP pouronprem-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
Dans le réseau
onprem-vpc
, créez un pair BGP pourbgp-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
Valider la création de la session BGP
Dans Google Cloud Console, accédez à la page VPN.
Dans la liste des tunnels VPN, vérifiez que la valeur du champ État de la session BGP pour chacun des tunnels est passée de Configurer la session BGP à BGP établi. Vous devrez peut-être actualiser l'onglet du navigateur de la console Google Cloud pour afficher les nouvelles valeurs.
Valider les routes apprises vertex-networking-vpc
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Dans la liste des réseaux VPC, cliquez sur
vertex-networking-vpc
.Cliquez sur l'onglet Routes.
Sélectionnez us-central1 (Iowa) dans la liste Région, puis cliquez sur Afficher.
Dans la colonne Plage d'adresses IP de destination, vérifiez que la plage d'adresses IP du sous-réseau
onprem-vpc-subnet1
(172.16.10.0/29
) apparaît deux fois.
Valider les routes apprises on-prem-vpc
Cliquez sur la flèche de retour
pour revenir à la page Réseaux VPC.Dans la liste des réseaux VPC, cliquez sur
on-prem-vpc
.Cliquez sur l'onglet Routes.
Sélectionnez us-central1 (Iowa) dans la liste Région, puis cliquez sur Afficher.
Dans la colonne Plage d'adresses IP de destination, vérifiez que la plage d'adresses IP du sous-réseau
workbench-subnet
(172.16.20.0/28
) et la plage d'adresses IP du sous-réseauconsumer-endpoint-subnet
(172.16.30.0/28
) apparaissent deux fois.
Créer une instance Vertex AI Workbench
Dans cette section, vous allez créer un compte de service géré par l'utilisateur, puis une instance Vertex AI Workbench qui utilise votre compte de service pour accéder aux services et aux API Google Cloud.
Créer un compte de service
Dans ce tutoriel, vous allez créer un compte de service géré par l'utilisateur en suivant les bonnes pratiques Compute Engine et IAM.
Dans Cloud Shell, créez un compte de service nommé
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Attribuez le rôle IAM Utilisateur Vertex AI (
roles/aiplatform.user
) au compte de service :gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Attribuez le rôle IAM Administrateur de l'espace de stockage (
roles/storage.admin
) au compte de service :gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Attribuez le rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin
) au compte de service:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"
Créer l'instance Vertex AI Workbench
Créez une instance Vertex AI Workbench en spécifiant le compte de service 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
Créer et déployer un index Vector Search
Préparer votre environnement
Dans la console Google Cloud, accédez à l'onglet Instances sur la page Vertex AI Workbench.
À côté du nom de votre instance Vertex AI Workbench (
workbench-tutorial
), cliquez sur Ouvrir JupyterLab.Votre instance Vertex AI Workbench ouvre JupyterLab.
Sélectionnez Fichier > Nouveau > Notebook.
Dans le menu Sélectionner le noyau, sélectionnez Python 3 (local), puis cliquez sur Sélectionner.
Lorsque le nouveau notebook s'ouvre, une cellule de code par défaut vous permet de saisir du code. Elle se présente comme
[ ]:
suivi d'un champ de texte. Ce champ de texte est l'emplacement pour coller votre code.Pour installer le SDK Vertex AI pour Python, collez le code suivant dans la cellule, puis cliquez sur
Run the selected cells and advance (Exécuter les cellules sélectionnées et continuer) :!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
À cette étape et à chacune des étapes suivantes, ajoutez une cellule de code (si nécessaire) en cliquant sur
Insert a cell below (Insérer une cellule ci-dessous), collez le code dans la cellule, puis cliquez sur Run the selected cells and advance (Exécuter les cellules sélectionnées et continuer).Pour utiliser les packages nouvellement installés dans cet environnement d'exécution Jupyter, vous devez redémarrer l'environnement d'exécution :
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Définissez les variables d'environnement suivantes, en remplaçant PROJECT_ID par votre ID de projet.
# 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")
Activer les API
Dans votre notebook JupyterLab, exécutez la commande suivante pour activer les API pour Compute Engine, Vertex AI et Cloud Storage dans le notebook:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Préparer les exemples de données dans un bucket Cloud Storage
Dans ce tutoriel, nous utilisons le même ensemble de données TheLook que celui utilisé dans le guide de démarrage rapide de Vector Search. Pour en savoir plus sur cet ensemble de données, consultez la page de documentation de démarrage rapide.
Dans cette section, vous allez créer un bucket Cloud Storage et y placer le fichier de représentations vectorielles continues de l'ensemble de données. Dans une étape ultérieure, vous utiliserez ce fichier pour créer un index.
Dans votre notebook JupyterLab, créez un bucket Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gsutil mb -l $LOCATION -p $PROJECT_ID $BUCKET_URI
Copiez l'exemple de fichier dans votre bucket Cloud Storage.
! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Pour exécuter des requêtes à l'aide de Vector Search, vous devez également copier le fichier de représentations vectorielles continues dans un répertoire local:
! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Créer l'index de Vector Search
Dans votre notebook JupyterLab, chargez les représentations vectorielles continues dans Vector Search:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Créez un MatchingEngineIndex avec sa fonction
create_tree_ah_index
(Matching Engine est l'ancien nom de 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, )
La méthode
MatchingEngineIndex.create_tree_ah_index()
crée un index. Dans ce tutoriel, cette tâche prend environ 5 à 10 minutes.Dans la console Google Cloud, accédez à l'onglet Index sur la page Vector Search.
Vérifiez qu'il existe un index dont le nom commence par
"vs-quickstart-index-"
et contient l'horodatage correct.Notez l'ID de l'index. Vous aurez besoin de cet ID lors du déploiement de l'index lors d'une prochaine étape.
Créer le point de terminaison d'index
Dans Cloud Shell, exécutez les commandes suivantes, en remplaçant PROJECT_ID par votre ID de projet :
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Créer le point de terminaison d'index :
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'"] }}'
Vérifiez que le point de terminaison d'index a bien été créé:
gcloud ai index-endpoints list --region=us-central1
Un résultat semblable à l'exemple suivant doit s'afficher, dans lequel l'ID du point de terminaison de l'index est
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'
Notez l'ID de votre point de terminaison d'index. Vous aurez besoin de cet ID lors du déploiement de votre index lors d'une prochaine étape.
Déployer l'index sur le point de terminaison
Dans Cloud Shell, exécutez la commande suivante pour déployer l'index sur le point de terminaison:
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
Remplacez les valeurs suivantes :
- INDEX_ENDPOINT_ID: ID du point de terminaison d'index Private Service Connect que vous avez créé
- INDEX: ID de l'index que vous déployez.
Un résultat semblable à l'exemple suivant doit s'afficher, dans lequel l'ID du point de terminaison de l'index est 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.
Lorsque vous déployez l'index, un point de terminaison Private Service Connect est généré. L'opération de déploiement prend environ 10 à 15 minutes.
Vérifier que l'index est déployé sur le point de terminaison d'index
Dans la console Google Cloud, accédez à l'onglet Points de terminaison de l'index sur la page Vector Search.
Vérifiez que le point de terminaison d'index
vector-search
possède un index déployé également appelévector-search
.Si un cercle bleu en rotation apparaît à côté du nom du point de terminaison d'index, l'index est toujours en cours de déploiement.
Obtenir l'URI du rattachement de service pour le point de terminaison d'index
Une fois l'index entièrement déployé, vous pouvez obtenir l'URI du rattachement de service.
Dans Cloud Shell, exécutez la commande suivante pour obtenir l'URI du rattachement de service pour le point de terminaison Private Service Connect:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
Dans l'exemple de résultat suivant, l'URI du rattachement de service est 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
Notez l'URI serviceAttachment
commençant par projects
, par exemple projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Vous en aurez besoin à l'étape suivante, lors de la création d'un point de terminaison client.
Créer le point de terminaison client Private Service Connect
Dans Cloud Shell, réservez une adresse IP de point de terminaison client qui servira à interroger l'index de Vector Search:
gcloud compute addresses create vector-search-endpoint1 \ --region=us-central1 \ --subnet=consumer-endpoint-subnet
Recherchez l'adresse IP réservée :
gcloud compute addresses list --filter="name=vector-search-endpoint1"
Créez une règle de transfert pour connecter le point de terminaison au rattachement de service, en remplaçant SERVICE_ATTACHMENT_URI par votre URI
serviceAttachment
.gcloud compute forwarding-rules create vector-search-endpoint1 \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-endpoint1 \ --target-service-attachment=SERVICE_ATTACHMENT_URI
Voici un exemple d'utilisation de cette commande:
gcloud compute forwarding-rules create vector-search-endpoint1 \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-endpoint1 \ --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
Dans la console Google Cloud, accédez à l'onglet Points de terminaison connectés sur la page Private Service Connect.
Vérifiez que l'état du point de terminaison du client est
Accepted
.Notez l'adresse IP du point de terminaison client Private Service Connect. Lors d'une prochaine étape, vous utiliserez ce point de terminaison pour établir la communication avec l'index Vector Search déployé.
Interroger l'index déployé
Maintenant que vous avez établi un point de terminaison client Private Service Connect connecté à votre point de terminaison d'index Vector Search, vous pouvez interroger votre index déployé en envoyant les requêtes de l'instance de VM on-prem-client
au point de terminaison client.
Pour autoriser Identity-Aware Proxy (IAP) à se connecter à vos instances de VM, vous devez créer une règle de pare-feu qui :
- S'applique à toutes les instances de VM que vous souhaitez rendre accessibles via IAP.
- Autorise le trafic TCP via le port 22 à partir de la plage d'adresses IP
35.235.240.0/20
. Contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.
Après avoir créé le pare-feu, installez le client gRPC. Lors d'une prochaine étape, vous utiliserez le client gRPC pour envoyer des requêtes à partir de l'instance de VM on-prem-client
.
Créer la règle de pare-feu et installer gRPC
Dans Cloud Shell, exécutez les commandes suivantes, en remplaçant PROJECT_ID par votre ID de projet :
projectid=PROJECT_ID gcloud config set project ${projectid}
Créez une règle de pare-feu IAP nommée
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Connectez-vous à l'instance de VM
on-prem-client
:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
Dans l'instance de VM
on-prem-client
, installez le clientgRPC
: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'installation prend environ 30 minutes.
Obtenir un ID pour un élément d'index existant
Dans la console Google Cloud, accédez à l'onglet Instances sur la page Vertex AI Workbench.
À côté du nom de votre instance Vertex AI Workbench, cliquez sur Ouvrir JupyterLab.
Votre instance Vertex AI Workbench ouvre JupyterLab.
Sélectionnez Fichier > Nouveau > Terminal.
Dans le terminal JupyterLab (et non dans Cloud Shell), affichez la dernière entrée de l'index:
tail -1 product-embs.json
Recherchez la première paire clé/valeur dans l'élément, qui contient le numéro d'ID de l'élément, comme dans l'exemple suivant:
"id":"27452"
Notez ce numéro d'ID. Vous l'utiliserez dans la section suivante.
Effectuer une requête Vector Search
Dans l'instance de VM on-prem-client
, interrogez votre index déployé:
./grpc_cli call CONSUMER_ENDPOINT_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Remplacez les valeurs suivantes :
- CONSUMER_ENDPOINT_IP: adresse IP du point de terminaison client Private Service Connect que vous avez créé dans la section précédente
- ITEM_ID: numéro d'ID de l'élément que vous avez enregistré dans la section précédente.
Le résultat doit ressembler à l'exemple ci-dessous.
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
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.
Vous pouvez supprimer les ressources individuelles dans la console Google Cloud comme suit:
Annulez le déploiement et supprimez l'index Vector Search comme suit:
Dans la console Google Cloud, accédez à l'onglet Index sur la page Vector Search.
Recherchez l'index dont le nom commence par
"vs-quickstart-index-"
et contient l'horodatage correct.Cliquez sur le nom de l'index.
Sur la page Informations sur l'index à côté du nom de l'index dans la liste Index déployés, cliquez sur
Actions, puis cliquez sur Annuler le déploiement.L'annulation du déploiement de l'index prend quelques minutes. Si un cercle bleu en rotation apparaît à côté du nom de l'index ou si l'état de l'index est répertorié comme
Undeploying
, l'annulation du déploiement de l'index est toujours en cours. Vous devrez peut-être actualiser l'onglet du navigateur de la console Google Cloud pour voir que l'index n'est plus déployé.Cliquez sur la flèche de retour
pour revenir à l'onglet Index.À côté du nom de votre index dans la liste des index, cliquez sur
Actions, puis sur Supprimer pour supprimer l'index.
Supprimez le point de terminaison d'index comme suit:
Dans la console Google Cloud, accédez à l'onglet Points de terminaison de l'index sur la page Vector Search.
À côté du nom du point de terminaison dans la liste des points de terminaison d'index, cliquez sur
Actions, puis sur Supprimer pour supprimer le point de terminaison d'index.
Supprimez l'instance Vertex AI Workbench comme suit:
Dans la console Google Cloud, dans la section Vertex AI, accédez à l'onglet Instances de la page Workbench.
Sélectionnez l'instance Vertex AI Workbench
workbench-tutorial
, puis cliquez sur Supprimer.
Supprimez l'instance de VM Compute Engine comme suit:
Dans la console Google Cloud, accédez à la page Compute Engine.
Sélectionnez l'instance de VM
on-prem-client
, puis cliquez sur Supprimer.
Supprimez les tunnels VPN comme suit:
Dans Google Cloud Console, accédez à la page VPN.
Sur la page VPN, cliquez sur l'onglet Tunnels Cloud VPN.
Dans la liste des tunnels VPN, sélectionnez les quatre tunnels VPN que vous avez créés dans ce tutoriel, puis cliquez sur
Supprimer.
Supprimez les passerelles VPN haute disponibilité comme suit:
Sur la page VPN, cliquez sur l'onglet Passerelles Cloud VPN.
Dans la liste des passerelles VPN, cliquez sur
onprem-vpn-gw1
.Sur la page Informations sur la passerelle Cloud VPN, cliquez sur
Supprimer la passerelle VPN.Si nécessaire, cliquez sur la flèche de retour
pour revenir à la liste des passerelles VPN, puis cliquez survertex-networking-vpn-gw1
.Sur la page Informations sur la passerelle Cloud VPN, cliquez sur
Supprimer la passerelle VPN.
Supprimez les routeurs cloud comme suit:
Accédez à la page Routeurs cloud.
Dans la liste des routeurs cloud, sélectionnez les quatre routeurs que vous avez créés dans ce tutoriel.
Pour supprimer les routeurs, cliquez sur
Supprimer.Cela supprimera également les deux passerelles Cloud NAT connectées aux routeurs Cloud.
Supprimez la règle de transfert
vector-search-endpoint1
pour le réseau VPCvertex-networking-vpc
comme suit:Accédez à l'onglet Interfaces de la page Équilibrage de charge.
Dans la liste des règles de transfert, cliquez sur
vector-search-endpoint1
.Sur la page Détails de la règle de transfert, cliquez sur
Supprimer.
Supprimez les réseaux VPC comme suit:
Accédez à la page des réseaux VPC.
Dans la liste des réseaux VPC, cliquez sur
onprem-vpc
.Sur la page Détails du réseau VPC, cliquez sur
Supprimer le réseau VPC.Lorsque vous supprimez un réseau, ses sous-réseaux, ses routes et ses règles de pare-feu sont également supprimés.
Revenez à la liste des réseaux VPC, puis cliquez sur
vertex-networking-vpc
.Sur la page Détails du réseau VPC, cliquez sur
Supprimer le réseau VPC.
Supprimez le bucket de stockage comme suit :
Dans la console Google Cloud, accédez à la page Cloud Storage.
Sélectionnez votre bucket de stockage, puis cliquez sur
Supprimer.
Supprimez le compte de service
workbench-sa
comme suit:Accédez à la page Comptes de service.
Sélectionnez le compte de service
workbench-sa
, puis cliquez sur Supprimer.
Étapes suivantes
- Découvrez les options de mise en réseau d'entreprise pour accéder aux points de terminaison et aux services Vertex AI.
- Découvrez comment fonctionne Private Service Connect et ses avantages significatifs en termes de performances.
- Découvrez comment utiliser VPC Service Controls pour créer des périmètres sécurisés afin d'autoriser ou de refuser l'accès à Vertex AI et à d'autres API Google sur le point de terminaison de l'index Vector Search via l'Internet public.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.