Filtrare con la comprensione del linguaggio naturale

Questa pagina spiega come applicare la comprensione del linguaggio naturale per creare automaticamente filtri per le query di ricerca e, di conseguenza, per migliorare la qualità dei risultati restituiti.

Puoi utilizzare questa funzionalità con le app di ricerca connesse a datastore di dati strutturati.

Informazioni sulla comprensione delle query in linguaggio naturale

Se hai un'app di ricerca personalizzata con dati strutturati, le query in linguaggio naturale dei tuoi utenti possono essere riformattate come query filtrate. In questo modo, i risultati di ricerca possono essere di qualità migliore rispetto alla ricerca di parole nella stringa di query.

L'utilizzo della comprensione delle query in linguaggio naturale è più semplice e flessibile rispetto alla scrittura di espressioni di filtro personalizzate. Per informazioni sulla scrittura di espressioni di filtro, vedi Filtrare la ricerca personalizzata per dati strutturati o non strutturati.

Questa funzionalità è spiegata al meglio attraverso esempi:

Esempio: estrazione dei campi dalle query

Questa funzionalità di comprensione delle query in linguaggio naturale viene spiegata attraverso l'esempio della ricerca di un hotel.

Prendi la seguente query eseguita su un datastore strutturati per un sito di hotel: "Trova un hotel adatto alle famiglie con almeno quattro stelle che costi meno di 300 a notte, che mi permetta di portare il mio cane e che abbia il Wi-Fi gratuito".

Senza la comprensione delle query in linguaggio naturale, l'app di ricerca cerca documenti che contengono le parole nella query.

Grazie alla comprensione delle query in linguaggio naturale e ai dati strutturati in modo appropriato, la ricerca è più efficace perché parte del linguaggio naturale nella query viene sostituito con filtri. Se i dati strutturati hanno campi per star_rating (numeri), price (numeri) e amenities (stringhe), la query può essere riscritta come i seguenti filtri più una query residua:

  • Filtri estratti dalla query in linguaggio naturale:

    {     "star_rating": ≥4,     "price": ≤300,     "amenities": "Wifi", "Pets Allowed" } 
  • Query residua, riformulata dopo l'estrazione dei filtri:

    family-friendly

Esempio: con un filtro di geolocalizzazione

Questo esempio è simile a quello precedente, tranne per il fatto che include un filtro di geolocalizzazione, che è un tipo speciale di filtro estratto. Vertex AI Search è in grado di riconoscere le località in una query e creare filtri di prossimità per le località.

Considera la seguente query effettuata su un sito di attività commerciali a livello statale: "Trova un hotel chic ed elegante con almeno 4 stelle a San Francisco".

Grazie alla comprensione delle query in linguaggio naturale e al filtro di geolocalizzazione, la ricerca viene riformulata come filtri e una query residua:

  • Filtri estratti dalla query in linguaggio naturale, per almeno 4 stelle e in un raggio di 10 km da San Francisco:

    {     "star_rating": ≥4,     "location": GEO_DISTANCE(\"San Francisco, CA\", 10000) } 

    In questo esempio, GEO_DISTANCE è un indirizzo, ma in altre query potrebbe essere scritto come latitudine e longitudine, anche se la query originale conteneva un indirizzo.

  • Query residua, riformulata dopo l'estrazione dei filtri:

    chic and stylish in San Francisco

    Sebbene il filtro di geolocalizzazione sia stato creato, il nome del luogo rimane nella query residua. È diverso dagli altri filtri, ad esempio star_rating.

Limitazioni

Si applicano le seguenti limitazioni alla comprensione delle query in linguaggio naturale:

  • La comprensione delle query in linguaggio naturale non può essere applicata alle app di ricerca ibrida. Se provi a utilizzare la comprensione delle query in linguaggio naturale con un'app di ricerca ibrida, viene visualizzato un errore.

  • La comprensione delle query in linguaggio naturale funziona solo per le app di ricerca personalizzate che utilizzano datastore strutturati.

  • L'utilizzo della comprensione delle query in linguaggio naturale aumenta la latenza, quindi potresti scegliere di non utilizzarla se la latenza è un problema.

  • Per la geolocalizzazione, la posizione deve essere descritta in modo esplicito. Non puoi utilizzare posizioni come "vicino a me" o "casa".

  • Il raggio per la geolocalizzazione è di 10 km e non è configurabile.

Prima di iniziare

Prima di iniziare a utilizzare la comprensione delle query in linguaggio naturale, devi attivarla per gli archivi di dati strutturati collegati alle app che prevedi di utilizzare.

Per attivare la comprensione delle query in linguaggio naturale:

REST

  1. Trova l'ID datastore. Se hai già l'ID del tuo datastore, vai al passaggio successivo.

    1. Nella Google Cloud console, vai alla pagina AI Applications e nel menu di navigazione, fai clic su Datastore.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

    3. Nella pagina Dati del datastore, recupera l'ID datastore.

  2. Esegui questo comando curl:

    curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \ -d '{       "naturalLanguageQueryUnderstandingConfig": {         "mode": "ENABLED"       }     }' 

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search.
  3. Ripeti i passaggi 1 e 2 per ogni datastore.

  4. Attendi circa 24 ore.

    Se provi a utilizzare la comprensione delle query in linguaggio naturale prima che l'datastore sia pronto, la risposta che ricevi è la stessa di quando filterExtractionCondition è impostato su DISABLED.

Cerca, convertendo le query in linguaggio naturale in filtri

Per eseguire una ricerca su una query in linguaggio naturale e ottenere risultati ottimizzati per le query in linguaggio naturale, segui questi passaggi:

REST

  1. Esegui questo comando curl, che chiama il metodo search:

     curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \   -H "Content-Type: application/json" \   "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \   -d '{         "query": "QUERY",         "naturalLanguageQueryUnderstandingSpec": {           "filterExtractionCondition": "ENABLED"         }       }' 

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • APP_ID: l'ID dell'app Vertex AI Search per cui vuoi eseguire query. L'app deve essere collegata a un datastore che contiene dati strutturati. L'app non può essere un'app di ricerca combinata.
    • QUERY: la query è scritta in linguaggio naturale.

Cerca, convertendo le località nelle query in filtri di geolocalizzazione

Per eseguire una ricerca su una query in linguaggio naturale e ottenere risultati ottimizzati per le query in linguaggio naturale, inclusa la vicinanza alle località, procedi nel seguente modo:

REST

  1. Esegui questo comando curl, che chiama il metodo search:

     curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \   -H "Content-Type: application/json" \   "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \   -d '{         "query": "QUERY",         "naturalLanguageQueryUnderstandingSpec": {           "filterExtractionCondition": "ENABLED",           "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]"         }       }' 

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • APP_ID: l'ID dell'app Vertex AI Search per cui vuoi eseguire query. L'app deve essere collegata a un datastore che contiene dati strutturati. L'app non può essere un'app di ricerca combinata.
    • QUERY: la query è scritta in linguaggio naturale.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: un elenco di valori di tipo geolocation. Se il tipo di valore non è geolocation, questo campo viene ignorato.