Creare una query semantica in Ricerca di intelligenza artificiale di Azure

Questo articolo illustra come richiamare una classificazione semantica su un set di risultati, promuovendo i risultati più pertinenti semanticamente all'inizio dello stack. È anche possibile ottenere didascalia semantiche, con evidenziazioni sui termini e le frasi più rilevanti e risposte semantiche.

Prerequisiti

  • Servizio di ricerca, livello Basic o superiore, con classificazione semantica.

  • Indice di ricerca esistente con una configurazione semantica e contenuto RTF.

  • Esaminare la classificazione semantica se è necessaria un'introduzione alla funzionalità.

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 un 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 Recupero della generazione aumentata (RAG).

Scegliere un client

Scegliere un client di ricerca che supporti la classificazione semantica. Di seguito sono riportate alcuni opzioni:

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

Diverse funzionalità di query in Ricerca intelligenza artificiale di Azure ignorano il punteggio di pertinenza o sono altrimenti 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. La query deve fornire termini o frasi che possono essere valutate durante l'elaborazione.

  • Una query composta nella sintassi Lucene completa (queryType=full) non è compatibile con la classificazione semantica (queryType=semantic). Il modello semantico non supporta la sintassi Lucene completa.

  • 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

In questo passaggio aggiungere parametri alla richiesta di query. Per avere esito positivo, la query deve essere una ricerca full-text (usando il search parametro per passare una stringa) e l'indice deve contenere campi di testo con contenuto semantico avanzato e una configurazione semantica.

Esplora ricerche include opzioni per la classificazione semantica.

  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 showing query options in Search explorer.

  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:

    Screenshot showing JSON query syntax in the Azure portal.

    Ecco alcuni testo JSON che è possibile incollare nella visualizzazione:

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

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, un didascalia facoltativo 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 un 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 restituisce la corrispondenza seguente come selezione superiore. Le didascalie vengono restituite perché la proprietà "didascalia s" è impostata, con testo normale e versioni evidenziate. Le risposte vengono omesse dall'esempio perché non è stato possibile determinare per questa particolare query e corpus.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

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.