Ricerca utilizzando gli embedding

Per le istanze di negozi online create per la pubblicazione online ottimizzata, puoi eseguire una ricerca di somiglianze vettoriali per recuperare un elenco di simili semanticamente o correlati entità, chiamate anche vicini più prossimi approssimati. Puoi eseguire ricerche in base a un ID entità o un incorporamento.

Per cercare i vicini più prossimi approssimati, devi prima effettuare le seguenti operazioni:

Questa pagina descrive come eseguire le seguenti operazioni:

Prima di iniziare

Esegui l'autenticazione su Vertex AI, se non l'hai ancora fatto.

Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Recupera il nome di dominio dell'endpoint pubblico per l'archivio online

Quando crei un'istanza del negozio online per la pubblicazione online ottimizzata, Vertex AI Feature Store genera un nome di dominio dell'endpoint pubblico per il negozio online. Prima di poter iniziare a cercare i vicini più vicini da una visualizzazione delle funzionalità nel negozio online, devi recuperare il nome di dominio dell'endpoint pubblico dai dettagli del negozio online.

Utilizza l'esempio seguente per recuperare i dettagli di un'istanza del negozio online.

REST

Per recuperare i dettagli di una risorsa FeatureOnlineStore nel progetto, invia una richiesta GET utilizzando il metodo featureOnlineStores.get.

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

  • LOCATION_ID: regione in cui si trova il negozio online, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREONLINESTORE_NAME: il nome dell'istanza del negozio online.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

Nel passaggio successivo avrai bisogno del valore PUBLIC_ENDPOINT_DOMAIN_NAME della risposta per recuperare i vicini più prossimi approssimativi.

Recupera i vicini più prossimi approssimativi di un'evidenziazione

Utilizza il seguente esempio per utilizzare un embedding per eseguire la ricerca di entità semanticamente correlate specificando un embedding.

REST

Per cercare i vicini più prossimi di un incorporamento, invia una richiesta POST utilizzando il metodo featureViews.searchNearestEntities.

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

  • PUBLIC_ENDPOINT_DOMAIN_NAME: il nome di dominio dell'endpoint pubblico per l'istanza del negozio online recuperata utilizzando il metodo featureOnlineStores.get.
  • PROJECT_ID: l'ID del tuo progetto.
  • LOCATION_ID: regione in cui si trova l'istanza del negozio online, ad esempio us-central1.
  • FEATUREONLINESTORE_NAME: il nome dell'istanza del negozio online contenente la visualizzazione delle caratteristiche in cui vuoi cercare le corrispondenze approssimative del vicino più prossimo.
  • FEATUREVIEW_NAME: il nome della visualizzazione delle caratteristiche in cui vuoi cercare le corrispondenze approssimative del vicino più prossimo.
  • EMBEDDING: l'embedding per cui vuoi recuperare le corrispondenze approssimative del vicino più prossimo. Un embedding è rappresentato da un array di valori double.
  • RETURN_FULL_ENTITY: (facoltativo) specifica se vuoi includere o escludere le caratteristiche per le entità nella risposta. Per includere le funzionalità insieme alle entità nella risposta, inserisci true. Il valore predefinito è false.
  • NEIGHBOR_COUNT: numero di vicini più prossimi approssimativi che vuoi recuperare.

Metodo HTTP e URL:

POST https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities

Corpo JSON della richiesta:

{
  "query": {
    "embedding": {
      "value": EMBEDDING
    },
    "neighbor_count": NEIGHBOR_COUNT
  },
  "return_full_entity": RETURN_FULL_ENTITY
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "nearestNeighbors": {
    "neighbors": [
    {
      "entityId": "305281",
      "distance": -41.115459442138672
    },
    {
      "entityId": "80280",
      "distance": -38.703567504882812
    },
    {
      "entityId": "80280",
      "distance":-38.703567504882812
    },
    {
      "entityId": "903779",
      "distance": -38.214759826660156
    },
    {
      "entityId": "1008145",
      "distance": -36.271354675292969
    },
    {
      "entityId": "606431",
      "distance": -34.791431427001953
    } ]
  }
}

Recuperare i vicini più prossimi approssimativi di un'entità

Usa il seguente esempio per usare un incorporamento per eseguire una ricerca semanticamente specificando un ID entità.

REST

Per cercare un ID entità nei vicini più prossimi, invia una richiesta POST utilizzando il metodo featureViews.searchNearestEntities .

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

  • PUBLIC_ENDPOINT_DOMAIN_NAME: il nome di dominio dell'endpoint pubblico per l'istanza del negozio online recuperato utilizzando il metodo featureOnlineStores.get.
  • PROJECT_ID: l'ID del tuo progetto.
  • LOCATION_ID: regione in cui si trova l'istanza del negozio online, ad esempio us-central1.
  • FEATUREONLINESTORE_NAME: il nome dell'istanza del negozio online contenente la visualizzazione delle caratteristiche in cui vuoi cercare le corrispondenze approssimative del vicino più prossimo.
  • FEATUREVIEW_NAME: il nome della visualizzazione delle caratteristiche in cui vuoi cercare le corrispondenze approssimative del vicino più prossimo.
  • ENTITY_ID: ID entità dell'entità per cui vuoi recuperare le corrispondenze approssimative del vicino più prossimo.
  • RETURN_FULL_ENTITY: facoltativo. Specifica se vuoi includere o escludere le funzionalità per le entità nella risposta. Per includere le funzionalità insieme alle entità nella risposta, inserisci true. Il valore predefinito è false.
  • NEIGHBOR_COUNT: numero di vicini più prossimi approssimativi che vuoi recuperare.

Metodo HTTP e URL:

POST https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities

Corpo JSON della richiesta:

{
  "query": {
    "entity_id": ENTITY_ID,
    "neighbor_count": NEIGHBOR_COUNT
  },
  "return_full_entity": RETURN_FULL_ENTITY
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "nearestNeighbors": {
    "neighbors": [
    {
      "entityId": "305281",
      "distance": -41.115459442138672
    },
    {
      "entityId": "80280",
      "distance": -38.703567504882812
    },
    {
      "entityId": "80280",
      "distance":-38.703567504882812
    },
    {
      "entityId": "903779",
      "distance": -38.214759826660156
    },
    {
      "entityId": "1008145",
      "distance": -36.271354675292969
    },
    {
      "entityId": "606431",
      "distance": -34.791431427001953
    } ]
  }
}