Utiliser Private Service Connect pour accéder à un index Vector Search à partir d'un environnement sur site


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.

Diagramme d'architecture de l'utilisation de Private Service Connect pour accéder à un index Vector Search à partir d'un environnement sur site.

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.
  • Déployer des passerelles VPN haute disponibilité, des tunnels Cloud VPN et des routeurs Cloud Router pour connecter vertex-networking-vpc et onprem-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. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

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

  1. Dans Google Cloud Console, accédez à la page de sélection du projet.

    Accéder au sélecteur de projet

  2. Sélectionnez ou créez un projet Google Cloud.

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. 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.
  5. 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 :
      projectid="PROJECT_ID"
      gcloud config set project ${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.
  6. 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.
  7. Attribuez des rôles à votre compte Google. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants : 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:EMAIL_ADDRESS" --role=ROLE
    • en remplaçant PROJECT_ID par l'ID de votre projet :
    • Remplacez EMAIL_ADDRESS par votre adresse e-mail.
    • Remplacez ROLE par chaque rôle individuel.
  8. Activer les API DNS, IAM, Compute Engine, Notebooks et Vertex AI :

    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)

  1. 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
    
  2. Créez un sous-réseau nommé workbench-subnet avec une plage IPv4 principale de 172.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
    
  3. Créez un sous-réseau nommé consumer-endpoint-subnet avec une plage IPv4 principale de 172.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)

  1. Créez le réseau VPC pour simuler le réseau sur site (onprem-vpc) :

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. Dans le réseau onprem-vpc, créez un sous-réseau nommé onprem-vpc-subnet1, avec 172.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

  1. Dans la console Google Cloud, accédez à l'onglet Réseaux du projet en cours sur la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Dans la liste des réseaux VPC, vérifiez que les deux réseaux ont été créés : vertex-networking-vpc et onprem-vpc.

  3. Cliquez sur l'onglet Sous-réseaux dans le projet actuel.

  4. Dans la liste des sous-réseaux VPC, vérifiez que les sous-réseaux workbench-subnet, consumer-endpoint-subnet et onprem-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é.

  1. 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=http://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é

  1. 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
    
  2. 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
    
  3. Dans la console Google Cloud, accédez à l'onglet Passerelles Cloud VPN sur la page VPN.

    Accéder au VPN

  4. Vérifiez que les deux passerelles (vertex-networking-vpn-gw1 et onprem-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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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
    
  7. Dans Google Cloud Console, accédez à la page Routeurs cloud.

    Accéder aux routeurs cloud

  8. 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.

  9. Dans la liste des routeurs Cloud Router, cliquez sur cloud-router-us-central1-vertex-nat.

  10. Sur la page Détails du routeur, vérifiez que la passerelle Cloud NAT cloud-nat-us-central1 a été créée.

  11. Cliquez sur la flèche de retour pour revenir à la page Routeurs cloud.

  12. Dans la liste des routeurs, cliquez sur cloud-router-us-central1-onprem-nat.

  13. 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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. Dans Google Cloud Console, accédez à la page VPN.

    Accéder au VPN

  6. 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

  1. Dans Cloud Shell, dans le réseau vertex-networking-vpc, créez une interface BGP pour vertex-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
    
  2. Dans le réseau vertex-networking-vpc, créez un pair BGP pour bgp-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
    
  3. Dans le réseau vertex-networking-vpc, créez une interface BGP pour vertex-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
    
  4. Dans le réseau vertex-networking-vpc, créez un pair BGP pour bgp-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

  1. Dans le réseau onprem-vpc, créez une interface BGP pour onprem-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
    
  2. Dans le réseau onprem-vpc, créez un pair BGP pour bgp-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
    
  3. Dans le réseau onprem-vpc, créez une interface BGP pour onprem-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
    
  4. Dans le réseau onprem-vpc, créez un pair BGP pour bgp-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

  1. Dans Google Cloud Console, accédez à la page VPN.

    Accéder au VPN

  2. 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

  1. Dans Google Cloud Console, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Dans la liste des réseaux VPC, cliquez sur vertex-networking-vpc.

  3. Cliquez sur l'onglet Routes.

  4. Sélectionnez us-central1 (Iowa) dans la liste Région, puis cliquez sur Afficher.

  5. 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

  1. Cliquez sur la flèche de retour pour revenir à la page Réseaux VPC.

  2. Dans la liste des réseaux VPC, cliquez sur on-prem-vpc.

  3. Cliquez sur l'onglet Routes.

  4. Sélectionnez us-central1 (Iowa) dans la liste Région, puis cliquez sur Afficher.

  5. 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éseau consumer-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.

  1. Dans Cloud Shell, créez un compte de service nommé workbench-sa :

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. 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"
    
  3. 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"
    
  4. 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

  1. Dans la console Google Cloud, accédez à l'onglet Instances sur la page Vertex AI Workbench.

    Accéder à Vertex AI Workbench

  2. À côté du nom de votre instance Vertex AI Workbench (workbench-tutorial), cliquez sur Ouvrir JupyterLab.

    Votre instance Vertex AI Workbench ouvre JupyterLab.

  3. Sélectionnez Fichier > Nouveau > Notebook.

  4. Dans le menu Sélectionner le noyau, sélectionnez Python 3 (local), puis cliquez sur Sélectionner.

  5. 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
    
  6. À 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)
    
  7. 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.

  1. 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
    
  2. Copiez l'exemple de fichier dans votre bucket Cloud Storage.

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. 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

  1. 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)
    
  2. 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.

  3. Dans la console Google Cloud, accédez à l'onglet Index sur la page Vector Search.

    Accéder à la page "Index"

  4. Vérifiez qu'il existe un index dont le nom commence par "vs-quickstart-index-" et contient l'horodatage correct.

  5. 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

  1. 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
    
  2. Créer le point de terminaison d'index :

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      http://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
    
  3. 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 [http://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'
    
  4. 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 [http://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

  1. Dans la console Google Cloud, accédez à l'onglet Points de terminaison de l'index sur la page Vector Search.

    Accéder à la page "Points de terminaison d'index"

  2. 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 [http://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

  1. 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
    
  2. Recherchez l'adresse IP réservée :

    gcloud compute addresses list --filter="name=vector-search-endpoint1"
    
  3. 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
    
  4. Dans la console Google Cloud, accédez à l'onglet Points de terminaison connectés sur la page Private Service Connect.

    Accéder à la page "Points de terminaison connectés"

  5. Vérifiez que l'état du point de terminaison du client est Accepted.

  6. 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

  1. 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}
    
  2. 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
    
  3. Connectez-vous à l'instance de VM on-prem-client :

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. Dans l'instance de VM on-prem-client, installez le client gRPC:

    sudo apt-get install git -y
    git clone http://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

  1. Dans la console Google Cloud, accédez à l'onglet Instances sur la page Vertex AI Workbench.

    Accéder à Vertex AI Workbench

  2. À côté du nom de votre instance Vertex AI Workbench, cliquez sur Ouvrir JupyterLab.

    Votre instance Vertex AI Workbench ouvre JupyterLab.

  3. Sélectionnez Fichier > Nouveau > Terminal.

  4. Dans le terminal JupyterLab (et non dans Cloud Shell), affichez la dernière entrée de l'index:

    tail -1 product-embs.json
    
  5. 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:

  1. Annulez le déploiement et supprimez l'index Vector Search comme suit:

    1. Dans la console Google Cloud, accédez à l'onglet Index sur la page Vector Search.

      Accéder à la page "Index"

    2. Recherchez l'index dont le nom commence par "vs-quickstart-index-" et contient l'horodatage correct.

    3. Cliquez sur le nom de l'index.

    4. 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é.

    5. Cliquez sur la flèche de retour pour revenir à l'onglet Index.

    6. À côté du nom de votre index dans la liste des index, cliquez sur Actions, puis sur Supprimer pour supprimer l'index.

  2. Supprimez le point de terminaison d'index comme suit:

    1. Dans la console Google Cloud, accédez à l'onglet Points de terminaison de l'index sur la page Vector Search.

      Accéder à la page "Points de terminaison d'index"

    2. À 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.

  3. Supprimez l'instance Vertex AI Workbench comme suit:

    1. Dans la console Google Cloud, dans la section Vertex AI, accédez à l'onglet Instances de la page Workbench.

      Accéder à Vertex AI Workbench

    2. Sélectionnez l'instance Vertex AI Workbench workbench-tutorial, puis cliquez sur Supprimer.

  4. Supprimez l'instance de VM Compute Engine comme suit:

    1. Dans la console Google Cloud, accédez à la page Compute Engine.

      Accéder à Compute Engine

    2. Sélectionnez l'instance de VM on-prem-client, puis cliquez sur Supprimer.

  5. Supprimez les tunnels VPN comme suit:

    1. Dans Google Cloud Console, accédez à la page VPN.

      Accéder au VPN

    2. Sur la page VPN, cliquez sur l'onglet Tunnels Cloud VPN.

    3. Dans la liste des tunnels VPN, sélectionnez les quatre tunnels VPN que vous avez créés dans ce tutoriel, puis cliquez sur Supprimer.

  6. Supprimez les passerelles VPN haute disponibilité comme suit:

    1. Sur la page VPN, cliquez sur l'onglet Passerelles Cloud VPN.

      Accéder à la page "Passerelles Cloud VPN"

    2. Dans la liste des passerelles VPN, cliquez sur onprem-vpn-gw1.

    3. Sur la page Informations sur la passerelle Cloud VPN, cliquez sur Supprimer la passerelle VPN.

    4. Si nécessaire, cliquez sur la flèche de retour pour revenir à la liste des passerelles VPN, puis cliquez sur vertex-networking-vpn-gw1.

    5. Sur la page Informations sur la passerelle Cloud VPN, cliquez sur Supprimer la passerelle VPN.

  7. Supprimez les routeurs cloud comme suit:

    1. Accédez à la page Routeurs cloud.

      Accéder aux routeurs cloud

    2. Dans la liste des routeurs cloud, sélectionnez les quatre routeurs que vous avez créés dans ce tutoriel.

    3. Pour supprimer les routeurs, cliquez sur Supprimer.

      Cela supprimera également les deux passerelles Cloud NAT connectées aux routeurs Cloud.

  8. Supprimez la règle de transfert vector-search-endpoint1 pour le réseau VPC vertex-networking-vpc comme suit:

    1. Accédez à l'onglet Interfaces de la page Équilibrage de charge.

      Accéder à la page "Interfaces"

    2. Dans la liste des règles de transfert, cliquez sur vector-search-endpoint1.

    3. Sur la page Détails de la règle de transfert, cliquez sur Supprimer.

  9. Supprimez les réseaux VPC comme suit:

    1. Accédez à la page des réseaux VPC.

      Accéder aux réseaux VPC

    2. Dans la liste des réseaux VPC, cliquez sur onprem-vpc.

    3. 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.

    4. Revenez à la liste des réseaux VPC, puis cliquez sur vertex-networking-vpc.

    5. Sur la page Détails du réseau VPC, cliquez sur  Supprimer le réseau VPC.

  10. Supprimez le bucket de stockage comme suit :

    1. Dans la console Google Cloud, accédez à la page Cloud Storage.

      Accéder à Cloud Storage

    2. Sélectionnez votre bucket de stockage, puis cliquez sur Supprimer.

  11. Supprimez le compte de service workbench-sa comme suit:

    1. Accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le compte de service workbench-sa, puis cliquez sur Supprimer.

Étapes suivantes