Condividi tramite


Aggiungere una classificazione semantica alle query in Azure AI Search

È possibile applicare la classificazione semantica alle query di testo, alle query ibride e alle query vettoriali se i documenti di ricerca contengono campi stringa e la query vettoriale ha una rappresentazione di testo nel documento di ricerca.

Questo articolo illustra come richiamare il ranker semantico nelle query. Si presuppone che si usino le API stabili o di anteprima più recenti. Per informazioni su versioni precedenti, vedere Eseguire la migrazione del codice di classificazione semantica.

Prerequisiti

Nota

I sottotitoli e le risposte vengono estratti verbatim dal testo nel documento di ricerca. Il sottosistema semantico usa la comprensione della lettura automatica per riconoscere il contenuto con le caratteristiche di una didascalia o di una risposta, ma non compone nuove frasi o frasi. Per questo motivo, il contenuto che include spiegazioni o definizioni funziona meglio per la classificazione semantica. Per l'interazione in stile chat con le risposte generate, vedere Retrieval Augmented Generation (RAG).

Scegliere un client

È possibile usare uno degli strumenti e degli SDK seguenti per compilare una query che usa la classificazione semantica:

Evitare funzionalità che ignorano l'assegnazione dei punteggi per pertinenza

Alcune funzionalità di query ignorano l'assegnazione dei punteggi di pertinenza, che li rende incompatibili con la classificazione semantica. Se la logica di query include le funzionalità seguenti, non è possibile classificare semanticamente i risultati:

  • Una query con search=* o una stringa di ricerca vuota, ad esempio una query di sola filtro pura, non funzionerà perché non esiste nulla per misurare la pertinenza semantica, per cui il punteggi risultanti sono zero. La query deve fornire termini o frasi che possono essere valutate durante l'elaborazione.

  • L'ordinamento (clausole orderBy) in campi specifici sostituisce i punteggi di ricerca e un punteggio semantico. Dato che il punteggio semantico dovrebbe fornire la classificazione, l'aggiunta di una clausola orderby genera un errore HTTP 400 se si applica la classificazione semantica sui risultati ordinati.

Configurare la query

Per impostazione predefinita, le query non usano la classificazione semantica. Per usare la classificazione semantica, è possibile usare due parametri diversi. Ogni parametro supporta un set diverso di scenari.

Le query semantiche, specificate tramite search più queryTypeo tramite semanticQuery, devono essere testo normale e non possono essere vuote. Le query vuote non comportano l'applicazione di una classificazione semantica ai risultati.

Parametro del ranker semantico Ricerca testo normale Sintassi di ricerca testo semplice Sintassi di ricerca full-text Ricerca vettoriale Ricerca ibrida Risposte semantiche e didascalie
queryType-semantic 1
semanticQuery="<your plain text query>"2

1 queryType=semantic non può supportare valori espliciti simple o full perché il queryType parametro viene usato per semantic. I comportamenti effettivi delle query sono i valori predefiniti del parser semplice.

2 Il semanticQuery parametro può essere usato per tutti i tipi di query. Tuttavia, non è supportato in Esplora ricerche portale di Azure.

Indipendentemente dal parametro scelto, l'indice deve contenere campi di testo con contenuto semantico avanzato e una configurazione semantica.

Esplora ricerche include opzioni per la classificazione semantica. Tenere presente che non è possibile impostare il semanticQuery parametro nella portale di Azure.

  1. Accedere al portale di Azure.

  2. Aprire un indice di ricerca e selezionare Esplora ricerche.

  3. Selezionare Opzioni query. Se è già stata definita una configurazione semantica, è selezionata per impostazione predefinita. Se non è disponibile, creare una configurazione semantica per l'indice.

    Screenshot che mostra le opzioni di query in Esplora ricerche.

  4. Immettere una query, ad esempio "hotel storico con buon cibo" e selezionare Cerca.

  5. In alternativa, selezionare visualizzazione JSON e incollare le definizioni nell'editor di query. Il portale di Azure non supporta l'uso semanticQuerydi , quindi è necessaria l'impostazione queryType su"semantic":

    Screenshot che mostra la sintassi delle query JSON nel portale di Azure.

    Esempio JSON per impostare il tipo di query sulla semantica che è possibile incollare nella visualizzazione:

    {
      "search": "funky or interesting hotel with good food on site",
      "count": true,
      "queryType": "semantic",
      "semanticConfiguration": "my-semantic-config",
      "captions": "extractive|highlight-true",
      "answers": "extractive|count-3",
      "highlightPreTag": "<strong>",
      "highlightPostTag": "</strong>",
      "select": "HotelId,HotelName,Description,Category"
    }
    

Valutare la risposta

Solo le prime 50 corrispondenze dei risultati iniziali possono essere classificate semanticamente. Come per tutte le query, una risposta è costituita da tutti i campi contrassegnati come recuperabili o solo da tali campi elencati nel parametro select. Una risposta include il punteggio di pertinenza originale e può includere anche un conteggio o risultati in batch, a seconda del modo in cui è stata formulata la richiesta.

Nella classificazione semantica, la risposta ha più elementi: un nuovo punteggio di pertinenza classificato semanticamente, una didascalia facoltativa in testo normale e con evidenziazioni e una risposta facoltativa. Se i risultati non includono questi elementi aggiuntivi, la query potrebbe non essere configurata correttamente. Come primo passaggio per la risoluzione del problema, controllare la configurazione semantica per assicurarsi che sia specificata sia nella definizione dell'indice che nella query.

In un'app client è possibile strutturare la pagina di ricerca in modo da includere una didascalia come descrizione della corrispondenza, anziché l'intero contenuto di un campo specifico. Questo approccio è utile quando i singoli campi sono troppo densi per la pagina dei risultati della ricerca.

La risposta per la query di esempio precedente ("hotel interessante con ristorante in loco e accogliente lobby o area condivisa") restituisce tre risposte ("answers": "extractive|count-e"). Le didascalie vengono restituite perché la proprietà "captions" è impostata, con testo normale e versioni evidenziate. Se non è possibile determinare una risposta, viene omessa dalla risposta. Per brevità, questo esempio mostra solo le tre risposte e i tre risultati di punteggio più alti della query.

{
  "@odata.count": 29,
  "@search.answers": [
    {
      "key": "24",
      "text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "score": 0.9340000152587891
    },
    {
      "key": "40",
      "text": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
      "highlights": "Only 8 miles from Downtown. <strong>On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, </strong>All non-smoking<strong> hotel.</strong> Only 15 miles from airport.",
      "score": 0.9210000038146973
    },
    {
      "key": "38",
      "text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our<strong> shared living space </strong>to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "score": 0.9200000166893005
    }
  ],
  "value": [
    {
      "@search.score": 3.2328331,
      "@search.rerankerScore": 2.575303316116333,
      "@search.captions": [
        {
          "text": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
          "highlights": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our<strong> penthouse </strong>suites offer views for miles and the rooftop<strong> plaza </strong>is open to all guests from sunset to 10 p.m. Enjoy a<strong> complimentary continental breakfast in the lobby, </strong>and free Wi-Fi<strong> throughout </strong>the hotel."
        }
      ],
      "HotelId": "50",
      "HotelName": "Head Wind Resort",
      "Description": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
      "Category": "Suite"
    },
    {
      "@search.score": 0.632956,
      "@search.rerankerScore": 2.5425150394439697,
      "@search.captions": [
        {
          "text": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
          "highlights": "Every stay starts with a warm cookie. Amenities like the<strong> Counting Sheep sleep experience, </strong>our<strong> Wake-up glorious breakfast buffet and spacious workout facilities </strong>await."
        }
      ],
      "HotelId": "34",
      "HotelName": "Lakefront Captain Inn",
      "Description": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
      "Category": "Budget"
    },
    {
      "@search.score": 3.7076726,
      "@search.rerankerScore": 2.4554927349090576,
      "@search.captions": [
        {
          "text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
          "highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
        }
      ],
      "HotelId": "24",
      "HotelName": "Uptown Chic Hotel",
      "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "Category": "Suite"
    },
   . . .
  ]
}

Carichi di lavoro previsti

Per la classificazione semantica, è consigliabile che un servizio di ricerca supporti fino a 10 query simultanee per replica.

Il servizio limita le richieste di classificazione semantica se i volumi sono troppo elevati. Un messaggio di errore che include queste frasi indica che il servizio è in fase di classificazione semantica:

Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded

Se si prevedono requisiti di velocità effettiva coerenti vicino, a o superiore a questo livello, inviare un ticket di supporto in modo che sia possibile effettuare il provisioning per il carico di lavoro.

Passaggi successivi

La classificazione semantica può essere usata nelle query ibride che combinano la ricerca di parole chiave e la ricerca vettoriale in una singola richiesta e in una risposta unificata.