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 :

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

    Remplacez les éléments 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_NAME : nom à afficher de l'index déployé.
    • INDEX_ID : ID de l'index.
    • PROJECT_ID : ID du projet
    • LOCATION : région dans laquelle vous utilisez Vertex AI.

    REST

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

    • LOCATION : région dans laquelle vous utilisez Vertex AI.
    • PROJECT : ID de votre projet
    • 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_NAME : nom à afficher de l'index déployé.
    • INDEX_ID : ID de l'index.
    • PROJECT_NUMBER : numéro de votre projet

    Méthode HTTP et URL :

    POST http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

    Corps JSON de la requête :

    {
      "deployedIndex": {
        "id": "DEPLOYED_INDEX_ID",
        "index": "projects/PROJECT/locations/LOCATION/indexes/INDEX_ID",
        "displayName": "DEPLOYED_INDEX_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_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
        "genericMetadata": {
          "createTime": "2020-10-19T17:53:16.502088Z",
          "updateTime": "2020-10-19T17:53:16.502088Z"
        },
        "deployedIndexId": "DEPLOYED_INDEX_ID"
      }
    }
    
    Vous pouvez interroger l'état de l'opération jusqu'à ce que la réponse indique "done": true.

    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 règle de transfert dans le projet VPC ciblant le rattachement de service. Pour créer une règle de transfert, utilisez l'exemple suivant :

    gcloud compute addresses create ${ADDRESS_NAME:?} \
        --region=${REGION:?} \
        --subnet=${SUBNET_NAME:?} \
        --project=${VPC_PROJECT:?}
    
    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