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, migliorare la qualità dei risultati restituiti.

Puoi utilizzare questa funzionalità con le app di ricerca collegate ai datastore di dati strutturati.

Informazioni sulla comprensione delle query in linguaggio naturale

Se hai un'app di ricerca generica con dati strutturati, le query in linguaggio naturale dei tuoi utenti possono essere riformattate come query filtrate. In questo modo puoi ottenere risultati di ricerca 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 su come scrivere espressioni di filtro, consulta Filtrare la ricerca generica per dati strutturati o non strutturati.

Questa funzionalità è meglio spiegata con esempi:

Esempio: estrazione dei campi dalle query

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

Prendi la seguente query effettuata a un datastore strutturato per il sito di un hotel: "Trova un hotel adatto alle famiglie con almeno quattro stelle che costi meno di 300 € a notte, che mi consenta 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 i documenti che contengono le parole nella query.

Con la comprensione delle query in linguaggio naturale e i dati strutturati in modo appropriato, la ricerca viene resa più efficace sostituendo parte del linguaggio naturale nella query con i 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à.

Prendi in considerazione la seguente query effettuata su un sito aziendale a livello di stato: "Trova un hotel elegante e alla moda con almeno 4 stelle a San Francisco".

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

  • Filtri estratti dalla query in linguaggio naturale, per una classificazione di almeno 4 stelle e nel 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

    Anche se il filtro di geolocalizzazione è stato creato, il nome del luogo rimane nella query residuale. È diverso dagli altri filtri, come star_rating.

Limitazioni

Alla comprensione delle query in linguaggio naturale si applicano le seguenti limitazioni:

  • La comprensione delle query in linguaggio naturale non può essere applicata alle app di ricerca combinata. Viene visualizzato un errore se provi a utilizzare la comprensione delle query in linguaggio naturale con un'app di ricerca combinata.

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

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

  • Per la geolocalizzazione, la posizione deve essere descritta esplicitamente. Non puoi utilizzare località come "qui vicino" 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 accumuli di dati strutturati collegati alle app che prevedi di utilizzare.

Per attivare la comprensione delle query in linguaggio naturale:

REST

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

    1. Nella console Google Cloud, vai alla pagina Agent Builder e nel menu di navigazione fai clic su Data Store.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

    3. Nella pagina Dati del tuo datastore, ottieni l'ID datastore.

  2. Esegui il seguente 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"
          }
        }'
    
    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello datastore di 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 lo datastore sia pronto, la risposta che ricevi è la stessa che otterresti se filterExtractionCondition fosse impostato su DISABLED.

Ricerca, conversione di 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 il seguente 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 progetto Google Cloud.
    • APP_ID: l'ID dell'app Vertex AI Search su cui vuoi eseguire una query. L'app deve essere collegata a un datastore contenente dati strutturati. L'app non può essere un'app di ricerca combinata.
    • QUERY: la query è scritta in un linguaggio naturale.

Ricerca, conversione delle 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 il seguente 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 progetto Google Cloud.
    • APP_ID: l'ID dell'app Vertex AI Search su cui vuoi eseguire una query. L'app deve essere collegata a un datastore contenente dati strutturati. L'app non può essere un'app di ricerca combinata.
    • QUERY: la query è scritta in un 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.