Configurer Vector Search avec Private Service Connect

Private Service Connect permet la consommation privée de services sur des réseaux VPC appartenant à différents groupes, équipes, projets ou organisations. Vous pouvez publier et consommer des services à l'aide d'adresses IP que vous définissez et qui sont internes à votre réseau VPC, et pour que les points de terminaison Vector Search effectuent des recherches de similarité vectorielle.

L'activation de Private Service Connect sur un point de terminaison Vector Search est adaptée aux cas d'utilisation qui :

  1. nécessitent une faible latence et une connexion sécurisée aux backends de diffusion Vector Search ;
  2. Ont un espace d'adresses IP limité pour une réservation d'appairage de VPC exclusive.
  3. doivent accéder aux backends de diffusion à partir de plusieurs réseaux VPC utilisateur.

Pour en savoir plus sur la configuration de Private Service Connect, consultez la présentation de Private Service Connect dans la documentation du cloud privé virtuel (VPC).

Créer le point de terminaison d'index

Pour créer un point de terminaison avec Private Service Connect activé, vous devez le définir lors de la création du point de terminaison. Cette opération s'apparente à la création d'autres points de terminaison dans Vertex AI.

  • PROJECT : projet de service dans lequel vous créez des ressources d'IA Vertex.
  • VPC_PROJECT : projet dans lequel réside votre VPC client. Pour une configuration de VPC autonome, cette valeur est identique à $PROJECT. Pour une configuration de VPC partagé, il s'agit du projet hôte du VPC.
  • PROJECT=<your-service-project>
    VPC_PROJECT=<your-vpc-project>
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      https://$VERTEX_ENDPOINT/v1/projects/$PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "<your-index-endpoint-name>", privateServiceConnectConfig:
      { enablePrivateServiceConnect: true, projectAllowlist: ["'$VPC_PROJECT'", "'$PROJECT'"] }}'
    

    À propos des options de déploiement d'index

    Vous pouvez déployer votre index avec une connectivité de service automatique ou manuelle.

    • Déployer avec l'automatisation Private Service Connect (preview) : configurez une règle de connexion de service et déployez vos index. La configuration d'une règle de connexion de service vous permet de déployer sur un réseau spécifique sans créer d'adresse de calcul ni de règle de transfert à chaque fois.
    • Déployer avec une connexion manuelle : déployez votre index et créez manuellement une adresse de calcul et une règle de transfert. Vous pouvez choisir cette option si vous devez utiliser plusieurs adresses IP.

    Déployer avec l'automatisation Private Service Connect

    Vous pouvez configurer une règle de connexion de service pour ne pas avoir à créer manuellement une adresse de calcul et une règle de transfert après chaque déploiement d'index.

    1. Commencez par créer une règle de connexion de service qui spécifie le réseau, la classe de service et la région sur lesquels déployer les index. Il s'agit d'une configuration unique. Si vous l'avez déjà fait, passez à la procédure suivante.
    2. Déployez l'index.

    Limites

    L'automatisation n'autorise qu'une seule adresse IP par projet et par réseau. Si vous devez utiliser plusieurs adresses IP, consultez la section Déployer manuellement l'index.

    Créer une règle de connexion de service

    Vous devez être administrateur réseau pour créer une règle de connexion de service afin d'automatiser le déploiement de l'index.

    Pour automatiser le déploiement de l'index, procédez comme suit :

    1. Créez votre règle de connexion de service.

      • PROJECT : projet de service dans lequel vous créez des ressources Vertex AI.
      • VPC_PROJECT : projet dans lequel réside votre VPC client. Pour une configuration de VPC unique, cette valeur est identique à $PROJECT. Pour une configuration de VPC partagé, il s'agit du projet hôte du VPC.
      • NETWORK_NAME : nom du réseau sur lequel le déploiement sera effectué, au format projects//global/networks/.
      • REGION : région du réseau.
      • PSC_SUBNETS : sous-réseau Private Service Connect à utiliser.
      gcloud network-connectivity service-connection-policies create <policy_name> \
      --project=<vpc_project> --network=<network_name> # in the format projects/<project_id>/global/networks/<network_name> \
      --service-class=gcp-vertexai --region=<region> --subnets=<psc subnets>
      
    2. Affichez votre règle de connexion de service.

      gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
      

    Déployer l'index

    1. Déployez votre index.

      • PROJECT : projet de service dans lequel vous créez des ressources Vertex AI.
      • VPC_PROJECT : projet dans lequel réside votre VPC client. Pour une configuration de VPC autonome, cette valeur est identique à $PROJECT. Pour une configuration de VPC partagé, il s'agit du projet hôte du VPC.
      • NETWORK_NAME : nom du réseau sur lequel le déploiement sera effectué, au format projects//global/networks/.
      • REGION : région du réseau.
      • PSC_SUBNETS : sous-réseau Private Service Connect à utiliser.
      INDEX_ENDPOINT_ID=<>
      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json; charset=utf-8" "https://REGIONAL_ENDPOINT.googleapis.com/v1/projects/PROJECT_NUMBER/locations/REGION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex" -d '{
        "deployedIndex": {
          "id": "DEPLOYED_INDEX_ID",
          "index": "projects/PROJECT_NUMBER/locations/us-central1/indexes/INDEX_ID",
          "displayName": "DISPLAY_NAME",
          "psc_automation_configs": [
            {"project_id": "PROJECT_ID_1", "network": "NETWORK_1"},
            {"project_id": "PROJECT_ID_2", "network": "NETWORK_2" }]
        }
      }'
      

    Supprimer la règle de connexion de service

    Si vous devez supprimer la règle de connexion de service, exécutez la commande suivante :

    gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
    

    Déployer avec une connexion manuelle

    Déployez l'index et créez une règle de transfert dans votre projet VPC.

    Déployer l'index

    Maintenant que l'index est prêt, vous pouvez le déployer à l'étape suivante sur le point de terminaison que vous avez créé avec Private Service Connect activé.

    gcloud

    Cet exemple utilise la commande gcloud ai index-endpoints deploy-index.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • INDEX_ENDPOINT_ID : ID du point de terminaison de l'index.
    • DEPLOYED_INDEX_ID : chaîne spécifiée par l'utilisateur pour identifier de manière unique l'index déployé. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres ou des traits de soulignement. Consultez la page DeployedIndex.id pour connaître les consignes de format.
    • DEPLOYED_INDEX_ENDPOINT_NAME : nom à afficher du point de terminaison de l'index déployé.
    • INDEX_ID : ID de l'index.
    • LOCATION : région dans laquelle vous utilisez Vertex AI.
    • PROJECT_ID : L'ID de votre projet Google Cloud.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
        --deployed-index-id=DEPLOYED_INDEX_ID \
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \
        --index=INDEX_ID \
        --region=LOCATION \
        --project=PROJECT_ID

    Windows (PowerShell)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID `
        --deployed-index-id=DEPLOYED_INDEX_ID `
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME `
        --index=INDEX_ID `
        --region=LOCATION `
        --project=PROJECT_ID

    Windows (cmd.exe)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^
        --deployed-index-id=DEPLOYED_INDEX_ID ^
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^
        --index=INDEX_ID ^
        --region=LOCATION ^
        --project=PROJECT_ID

    REST

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • INDEX_ENDPOINT_ID : ID du point de terminaison de l'index.
    • DEPLOYED_INDEX_ID : chaîne spécifiée par l'utilisateur pour identifier de manière unique l'index déployé. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres ou des traits de soulignement. Consultez la page DeployedIndex.id pour connaître les consignes de format.
    • DEPLOYED_INDEX_ENDPOINT_NAME : nom à afficher du point de terminaison de l'index déployé.
    • INDEX_ID : ID de l'index.
    • LOCATION : région dans laquelle vous utilisez Vertex AI.
    • PROJECT_ID : L'ID de votre projet Google Cloud.
    • PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.

    Méthode HTTP et URL :

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

    Corps JSON de la requête :

    {
     "deployedIndex": {
       "id": "DEPLOYED_INDEX_ID",
       "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
       "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME"
     }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
     "metadata": {
       "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
       "genericMetadata": {
         "createTime": "2022-10-19T17:53:16.502088Z",
         "updateTime": "2022-10-19T17:53:16.502088Z"
       },
       "deployedIndexId": "DEPLOYED_INDEX_ID"
     }
    }
    

    Console

    Suivez les instructions ci-dessous pour déployer votre index.

    1. Dans la section "Vertex AI" de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.

      Accéder à Vector Search

    2. La liste de vos index actifs s'affiche.
    3. Sélectionnez le nom de l'index que vous souhaitez déployer. La page des détails de l'index s'affiche.
    4. Sur la page des détails de l'index, cliquez sur Déploiement sur le point de terminaison. Le panneau de déploiement d'index s'ouvre.
    5. Saisissez un nom à afficher. Il sert d'identifiant et ne peut pas être mis à jour.
    6. Dans la liste déroulante Point de terminaison, sélectionnez le point de terminaison sur lequel vous souhaitez déployer cet index. Remarque : Le point de terminaison n'est pas disponible si l'index y est déjà déployé.
    7. Facultatif : dans le champ Type de machine, sélectionnez une mémoire standard ou élevée.
    8. Facultatif. Sélectionnez Activer l'autoscaling pour redimensionner automatiquement le nombre de nœuds en fonction des demandes de vos charges de travail. Le nombre d'instances répliquées par défaut est de 2 si l'autoscaling est désactivé.
    9. Cliquez sur Déployer pour déployer votre index sur le point de terminaison. Remarque : Le déploiement prend environ 30 minutes.

    Créer une règle de transfert dans le projet VPC

    Une fois le déploiement d'index terminé, le point de terminaison d'index renvoie un URI de rattachement de service à la place d'une adresse IP. Vous devez créer une adresse de calcul, ainsi qu'une règle de transfert dans le projet VPC ciblant le rattachement de service à l'aide de l'adresse de calcul créée. Pour créer une adresse de calcul, utilisez l'exemple suivant :

    gcloud compute addresses create ${ADDRESS_NAME:?} \
        --region=${REGION:?} \
        --subnet=${SUBNET_NAME:?} \
        --project=${VPC_PROJECT:?}
    

    Pour créer une règle de transfert ciblant l'URI du rattachement de service à l'aide de l'adresse de calcul créée, utilisez l'exemple suivant :

    SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe {INDEX_ENDPOINT_ID}
    --format="value(deployedIndexes.privateEndpoints.serviceAttachment)"`
    
    gcloud compute forwarding-rules create ${ENDPOINT_NAME:?} \
        --network=${NETWORK_NAME:?} \
        --address=${ADDRESS_NAME:?} \
        --target-service-attachment=${SERVICE_ATTACHMENT_URI:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    (Facultatif) Créer un enregistrement DNS pour l'adresse IP

    Si vous souhaitez vous connecter et charger sans mémoriser l'adresse IP réelle, vous pouvez créer un enregistrement DNS. Cette étape est facultative.

    DNS_NAME_SUFFIX=matchingengine.vertexai.goog. # Don't forget the "." in the end.
    DNS_NAME=${INDEX_ENDPOINT_ID:?}.${REGION:?}.${DNS_NAME_SUFFIX:?}
    
    gcloud dns managed-zones create ${DNS_ZONE_NAME:?} \
        --dns-name=${DNS_NAME_SUFFIX:?} \
        --visibility=private \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    
    gcloud dns record-sets create ${DNS_NAME:?} \
        --rrdatas=${IP_ADDRESS:?} \
        --type=A --ttl=60 \
        --zone=${DNS_ZONE_NAME:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    Envoyer des requêtes au point de terminaison de l'index

    Maintenant que vous avez créé un point de terminaison avec Private Service Connect et créé l'index, vous pouvez commencer à exécuter des requêtes.

    Pour interroger votre index, consultez la page Interroger les index pour obtenir les voisins les plus proches.

    Étapes suivantes