Utilisation de Private Service Connect avec Vector Search

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 VPC simple, cette valeur est identique à $PROJECT. Pour la configuration du 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`" \
      http://$VERTEX_ENDPOINT/v1/projects/$PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "<your-index-endpoint-name>", privateServiceConnectConfig:
      { enablePrivateServiceConnect: true, projectAllowlist: ["'$VPC_PROJECT'", "'$PROJECT'"] }}'
    

    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 http://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