Configurare la classificazione semantica e restituire didascalia nei risultati della ricerca

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.

Per usare la classificazione semantica:

  • Aggiungere una configurazione semantica a un indice
  • Aggiungere parametri a una richiesta di query

Prerequisiti

  • Un servizio di ricerca nel livello Basic, Standard (S1, S2, S3) o Archiviazione livello Ottimizzato (L1, L2), soggetto alla disponibilità dell'area.

  • Classificazione semantica abilitata nel servizio di ricerca.

  • Indice di ricerca esistente con contenuto RTF. La classificazione semantica si applica ai campi di testo (non vettoriali) e funziona meglio sul contenuto informativo o descrittivo.

  • 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).

1 - Scegliere un client

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

2 - Creare una configurazione semantica

Una configurazione semantica è una sezione dell'indice che stabilisce gli input dei campi per la classificazione semantica. È possibile aggiungere o aggiornare una configurazione semantica in qualsiasi momento, senza alcuna ricompilazione necessaria. Se si creano più configurazioni, è possibile specificare un valore predefinito. In fase di query specificare una configurazione semantica in una richiesta di query o lasciarla vuota per usare l'impostazione predefinita.

Una configurazione semantica ha un nome e le proprietà seguenti:

Proprietà Caratteristiche
Campo Titolo Stringa breve, idealmente sotto 25 parole. Questo campo può essere il titolo di un documento, il nome di un prodotto o un identificatore univoco. Se non si dispone di un campo appropriato, lasciarlo vuoto.
Campi contenuto Blocchi di testo più lunghi in formato in linguaggio naturale, soggetti ai limiti massimi di input dei token nei modelli di Machine Learning. Esempi comuni includono il corpo di un documento, la descrizione di un prodotto o un altro testo in formato libero.
Campi parola chiave Elenco di parole chiave, ad esempio i tag di un documento o un termine descrittivo, ad esempio la categoria di un elemento.

È possibile specificare un solo campo titolo, ma è possibile avere il numero di campi di contenuto e parola chiave desiderati. Per i campi contenuto e parola chiave, elencare i campi in ordine di priorità perché i campi con priorità inferiore potrebbero essere troncati.

In tutte le proprietà di configurazione semantica, i campi assegnati devono essere:

  • Attributi come searchable e retrievable
  • Stringhe di tipo Edm.String, Collection(Edm.String), sottocampi stringa di Collection(Edm.ComplexType)
  1. Accedere al portale di Azure e passare a un servizio di ricerca con classificazione semantica abilitata.

  2. Aprire un indice.

  3. Selezionare Configurazioni semantiche e quindi Aggiungi configurazione semantica.

    Viene visualizzata la pagina Nuova configurazione semantica con le opzioni per la selezione di un campo titolo, campi di contenuto e campi di parole chiave. Assicurarsi di elencare i campi del contenuto e i campi delle parole chiave in ordine di priorità.

    Screenshot that shows how to create a semantic configuration in the Azure portal.

    Selezionare OK per salvare le modifiche.

Suggerimento

Per un esempio di creazione di una configurazione semantica e dell'uso per eseguire una query semantica, vedere l'esempio postman di classificazione semantica.

3 - 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 pura di solo filtro, 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.

4 - 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 è stato aggiornato per includere le opzioni per la classificazione semantica.

  1. Accedi al portale di Azure.

  2. Aprire l'indice di ricerca e selezionare Esplora ricerche.

  3. Esistono due modi per specificare la query, JSON o le opzioni. Usando JSON, è possibile incollare le definizioni nell'editor di query:

    Screenshot showing JSON query syntax in the Azure portal.

  4. Usando le opzioni, specificare che si vuole usare la classificazione semantica e per creare una configurazione. Se queste opzioni non vengono visualizzate, assicurarsi che la classificazione semantica sia abilitata e aggiornare anche il browser.

    Screenshot showing query options in Search explorer.

5 - 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"
    },
  ...
]

Eseguire la migrazione dalle versioni di anteprima

Se il codice di classificazione semantica usa le API di anteprima, questa sezione illustra come eseguire la migrazione a versioni stabili. Le versioni disponibili a livello generale includono:

Modifiche al comportamento:

  • A partire dal 14 luglio 2023, la classificazione semantica è indipendente dalla lingua. Può rieseguire risultati composti da contenuti multilingue, senza pregiudizi verso una lingua specifica. Nelle versioni di anteprima, la classificazione semantica deprezza i risultati in modo diverso dalla lingua specificata dall'analizzatore di campi.

  • Nel 2021-04-30-Preview e in tutte le versioni successive( semanticConfiguration in una definizione di indice) definisce i campi di ricerca usati nella classificazione semantica. Nell'API REST 2020-06-30-Preview è searchFields stato usato (in una richiesta di query) per specificare il campo e definire la priorità. Questo approccio funzionava solo nel 2020-06-30-Preview ed è obsoleto in tutte le altre versioni.

Passaggio 1: Rimuovere queryLanguage

Il motore di classificazione semantica è ora indipendente dal linguaggio. Se queryLanguage è specificato nella logica di query, non viene più usato per la classificazione semantica, ma si applica comunque alla correzione ortografica.

  • Usare Post di ricerca e rimuovere queryLanguage per scopi di classificazione semantica.

Passaggio 2: Aggiungere semanticConfiguration

Se il codice chiama l'API REST 2020-06-30-Preview o i pacchetti BETA SDK destinati a tale versione dell'API REST, è possibile usare searchFields in una richiesta di query per specificare campi semantici e priorità. Questo codice deve ora essere aggiornato per l'uso semanticConfiguration .

Passaggi successivi

Tenere presente che la classificazione semantica e le risposte vengono compilate su un set di risultati iniziale. Qualsiasi logica che migliora la qualità dei risultati iniziali porta avanti alla classificazione semantica. Come passaggio successivo, esaminare le funzionalità che contribuiscono ai risultati iniziali, inclusi gli analizzatori che influiscono sul modo in cui le stringhe vengono tokenizzate, i profili di punteggio che possono ottimizzare i risultati e l'algoritmo di pertinenza predefinito.