Configurare la ricerca vettoriale con Private Service Connect

Private Service Connect consente il consumo privato di servizi su reti VPC appartenenti a gruppi, team, progetti o organizzazioni diversi. Puoi pubblicare e utilizzare servizi utilizzando indirizzi IP che che definisci e che sono interni alla tua rete VPC e, per Vector Search per eseguire ricerche di somiglianze vettoriali.

L'attivazione di Private Service Connect su un endpoint di ricerca di vettori è adatta per casi d'uso che:

  1. Richiedere bassa latenza e una connessione sicura ai backend di servizio di ricerca vettoriale.
  2. Dispongono di spazio IP limitato per la prenotazione esclusiva del peering VPC.
  3. È necessario accedere ai backend di servizio da più reti VPC degli utenti.

Per scoprire di più sulla configurazione di Private Service Connect, consulta la Panoramica di Private Service Connect nella documentazione di Virtual Private Cloud (VPC).

Crea l'endpoint indice

Per creare un endpoint con Private Service Connect abilitato, devi definirlo al momento della creazione dell'endpoint. Questa operazione è simile alla creazione di altri endpoint in Vertex AI.

  • PROJECT: il progetto di servizio in cui stai creando le risorse Vertex AI.
  • VPC_PROJECT: il progetto in cui si trova il VPC del client. Per la versione autonoma configurazione VPC, è uguale a $PROJECT. Per la configurazione della rete VPC condivisa, si tratta del progetto host 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'"] }}'
    

    Informazioni sulle opzioni di deployment dell'indice

    Puoi eseguire il deployment dell'indice con connettività dei servizi automatica o manuale.

    • Esegui il deployment con l'automazione di Private Service Connect (anteprima): Configura un criterio di connessione al servizio ed esegui il deployment dei tuoi indici. L'impostazione di un il criterio di connessione al servizio consente di eseguire il deployment su una rete specifica creando ogni volta un indirizzo di computing e una regola di forwarding.
    • Esegui il deployment con connessione manuale: esegui il deployment dell'indice e manualmente un indirizzo di computing e una regola di forwarding. Potresti scegliere questa opzione se devi utilizzare più indirizzi IP.

    Esegui il deployment con l'automazione di Private Service Connect

    Puoi configurare un criterio di connessione al servizio in modo da non dover creare manualmente un indirizzo di calcolo e una regola di inoltro dopo ogni deployment dell'indice.

    1. Innanzitutto, crea un criterio di connessione al servizio che specifichi rete, classe di servizio e regione in cui eseguire il deployment degli indici. Si tratta di un configurazione una tantum. Se lo hai già fatto, vai alla procedura successiva.
    2. Esegui il deployment dell'indice.

    Limitazioni

    Automation consente un solo indirizzo IP per progetto per rete. Se devi utilizzare più indirizzi IP, consulta Eseguire il deployment manuale dell'indice.

    Crea un criterio di connessione al servizio

    Devi essere un amministratore di rete per creare un criterio di connessione al servizio per automatizzando il deployment degli indici.

    Per automatizzare il deployment dell'indice, segui questi passaggi:

    1. Crea il criterio di connessione al servizio.

      • PROJECT: il progetto di servizio in cui stai creando le risorse Vertex AI.
      • VPC_PROJECT: il progetto in cui si trova il VPC del client. Per configurazione VPC singola, sarà uguale a $PROJECT. Per la configurazione della rete VPC condivisa, si tratta del progetto host VPC.
      • NETWORK_NAME: il nome della rete in cui eseguire il deployment, nella formato projects//global/networks/.
      • REGION: la regione della rete.
      • PSC_SUBNETS: la subnet Private Service Connect da utilizzare.
      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. Visualizza il criterio di connessione al servizio.

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

    Esegui il deployment dell'indice

    1. Esegui il deployment dell'indice.

      • PROJECT: il progetto di servizio in cui stai creando le risorse Vertex AI.
      • VPC_PROJECT: il progetto in cui si trova il VPC del client. Per la configurazione di un VPC autonomo, è uguale a $PROJECT. Per La configurazione del VPC condiviso è il progetto host VPC.
      • NETWORK_NAME: il nome della rete in cui eseguire il deployment, nel formato projects//global/networks/.
      • REGION: la regione della rete.
      • PSC_SUBNETS: la subnet Private Service Connect da utilizzare.
      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" }]
        }
      }'
      

    Elimina criterio di connessione al servizio

    Se devi eliminare il criterio di connessione al servizio, esegui questo comando:

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

    Esegui il deployment con connessione manuale

    Esegui il deployment dell'indice e crea una regola di forwarding nel tuo progetto VPC.

    Esegui il deployment dell'indice

    Ora che l'indice è pronto, in questo passaggio lo esegui nell'endpoint che hai creato con Private Service Connect abilitato.

    gcloud

    In questo esempio viene utilizzato il comando gcloud ai index-endpoints deploy-index.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • INDEX_ENDPOINT_ID: l'ID dell'endpoint indice.
    • DEPLOYED_INDEX_ID: una stringa specificata dall'utente per identificare in modo univoco l'indice di cui è stato eseguito il deployment. Deve iniziare con una lettera e contenere solo lettere, numeri o trattini bassi. Consulta DeployedIndex.id per le linee guida per il formato.
    • DEPLOYED_INDEX_ENDPOINT_NAME: nome visualizzato dell'endpoint indice di cui è stato eseguito il deployment.
    • INDEX_ID: l'ID dell'indice.
    • LOCATION: la regione in cui utilizzi Vertex AI.
    • PROJECT_ID: il tuo ID progetto Google Cloud.

    Esegui il seguente comando:

    Linux, macOS o 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

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • INDEX_ENDPOINT_ID: l'ID dell'endpoint indice.
    • DEPLOYED_INDEX_ID: una stringa specificata dall'utente per identificare in modo univoco l'indice di cui è stato eseguito il deployment. Deve iniziare con una lettera e contenere solo lettere, numeri o trattini bassi. Consulta DeployedIndex.id per le linee guida per il formato.
    • DEPLOYED_INDEX_ENDPOINT_NAME: nome visualizzato dell'endpoint indice di cui è stato eseguito il deployment.
    • INDEX_ID: l'ID dell'indice.
    • LOCATION: la regione in cui stai utilizzando Vertex AI.
    • PROJECT_ID: il tuo ID progetto Google Cloud.
    • PROJECT_NUMBER: il numero di progetto generato automaticamente per il tuo progetto.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
     "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

    Utilizza queste istruzioni per eseguire il deployment del tuo indice.

    1. Nella sezione Vertex AI della console Google Cloud, vai alla sezione Esegui il deployment e utilizza. Seleziona Vector Search (Ricerca vettoriale).

      Vai a Ricerca vettoriale

    2. Viene visualizzato un elenco degli indici attivi.
    3. Seleziona il nome dell'indice di cui vuoi eseguire il deployment. Si apre la pagina dei dettagli dell'indice.
    4. Nella pagina dei dettagli dell'indice, fai clic su Esegui il deployment nell'endpoint. Viene visualizzato il riquadro di implementazione dell'indice.
    5. Inserisci un nome visualizzato, che funge da ID e non può essere aggiornato.
    6. Dal menu a discesa Endpoint, seleziona l'endpoint in cui vuoi eseguire il deployment dell'indice. Nota: l'endpoint non è disponibile se è già stato eseguito il deployment dell'indice.
    7. (Facoltativo) Nel campo Tipo di macchina, seleziona Standard o con memoria elevata.
    8. Facoltativo. Seleziona Attiva la scalabilità automatica per ridimensionare automaticamente il numero di nodi in base alle esigenze dei tuoi carichi di lavoro. Il numero predefinito di repliche è 2 se la scalabilità automatica è disabilitata.
    9. Fai clic su Esegui il deployment per eseguire il deployment dell'indice nell'endpoint. Nota: il deployment richiede circa 30 minuti.

    Crea una regola di inoltro nel progetto VPC

    Al termine del deployment dell'indice, l'endpoint dell'indice restituisce un URI di allegato del servizio anziché un indirizzo IP. Devi creare un indirizzo di calcolo e una regola di inoltro nel progetto VPC che abbia come target l'attacco del servizio utilizzando l'indirizzo di calcolo creato. Per creare un indirizzo di computing, usa l'esempio seguente:

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

    Per creare una regola di forwarding che abbia come target l'URI del collegamento al servizio utilizzando l'indirizzo di computing creato, usa l'esempio seguente:

    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:?}
    

    (Facoltativo) Crea il record DNS per l'indirizzo IP

    Se vuoi connetterti e caricare senza memorizzare l'indirizzo IP effettivo, puoi creare un record DNS. Questo passaggio è facoltativo.

    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:?}
    

    Invia query all'endpoint indice

    Ora che hai creato un endpoint con Private Service Connect e l'indice, puoi iniziare a eseguire query.

    Per eseguire query sull'indice, vedi Eseguire query sugli indici per ottenere i vicini più prossimi.

    Passaggi successivi