Creare una query che richiama la classificazione semantica e restituisce didascalie semantiche

Importante

La ricerca semantica è disponibile in anteprima pubblica in condizioni supplementari per l'utilizzo. È disponibile tramite la versione portale di Azure, l'API REST di anteprima e gli SDK beta. Queste funzionalità sono fatturabili. Per altre informazioni, vedere Disponibilità e prezzi.

La ricerca semantica è una funzionalità premium di Ricerca cognitiva di Azure che richiama un algoritmo di classificazione semantica su un set di risultati e restituisce didascalie semantiche (e, facoltativamente, risposte semantiche),con evidenziazioni sui termini e le frasi più rilevanti. Sia le didascalie che le risposte vengono restituite nelle richieste di query formulate usando il tipo di query "semantico".

Le didascalie e le risposte vengono estratte in modo dettagliato dal testo nel documento di ricerca. Il sottosistema semantico determina quale parte del contenuto ha 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 ricerca semantica.

Prerequisiti

  • Un servizio di ricerca cognitivo a un livello Standard (S1, S2, S3), che si trova in una di queste aree: Stati Uniti centro-settenali, Stati Uniti occidentali, Stati Uniti occidentali 2, Stati Uniti orientali 2, Europa settentrionale ed Europa occidentale. Se si dispone di un servizio S1 o versione successiva esistente in una di queste aree, è possibile iscriversi per l'anteprima senza dover creare un nuovo servizio.

  • Registrati per la versione di anteprima. Il turnaround previsto è di circa due giorni lavorativi.

  • Indice di ricerca esistente con contenuto in una lingua supportata. La ricerca semantica funziona meglio con contenuto informativo o descrittivo.

  • Un client di ricerca per l'invio di query.

    Il client di ricerca deve supportare le API REST di anteprima nella richiesta di query. È possibile usare Postman, Visual Studio Codeo il codice che effettua chiamate REST alle API di anteprima. È anche possibile usare Esplora ricerche in portale di Azure per inviare una query semantica. È anche possibile usare Azure.Search.Documents 11.3.0-beta.2.

  • Una richiesta di query deve includere e altri parametri descritti in questo queryType=semantic articolo.

Che cos'è un tipo di query semantica?

In Ricerca cognitiva una query è una richiesta con parametri che determina l'elaborazione delle query e la forma della risposta. Una query semantica include parametri che richiamano il modello di reranking semantico in grado di valutare il contesto e il significato dei risultati corrispondenti, alzare di livello le corrispondenze più rilevanti all'inizio e restituire risposte semantiche e didascalie.

La richiesta seguente è rappresentativa di una query semantica minima (senza risposte).

POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=2020-06-30-Preview      
{    
    "search": " Where was Alan Turing born?",    
    "queryType": "semantic",  
    "searchFields": "title,url,body",  
    "queryLanguage": "en-us"  
}

Come per tutte le query in Ricerca cognitiva, la richiesta è destinata alla raccolta di documenti di un singolo indice. Inoltre, una query semantica viene sottoposta alla stessa sequenza di analisi, analisi, analisi e assegnazione dei punteggi di una query non semantica.

La differenza risiede nella pertinenza e nell'assegnazione dei punteggi. Come definito in questa versione di anteprima, una query semantica è una query i cui risultati vengono classificati di nuovo usando un modello linguistico semantico, offrendo un modo per visualizzare le corrispondenze ritenute più rilevanti dal classificatore semantico, anziché i punteggi assegnati dall'algoritmo di classificazione della somiglianza predefinito.

Solo le prime 50 corrispondenze dei risultati iniziali possono essere classificate semanticamente e tutti i risultati includono didascalie nella risposta. Facoltativamente, è possibile specificare un answer parametro nella richiesta per estrarre una potenziale risposta. Per altre informazioni, vedere Risposte semantiche.

Eseguire query in portale di Azure

Esplora ricerche è stato aggiornato per includere le opzioni per le query semantiche. Queste opzioni diventano visibili nel portale dopo aver completato i passaggi seguenti:

  1. Aprire il portale con la sintassi seguente: https://portal.azure.com/?feature.semanticSearch=true , in un servizio di ricerca per cui è abilitata l'anteprima.

  2. Fare clic su Esplora ricerche nella parte superiore della pagina di panoramica.

  3. Scegliere un indice con contenuto in una lingua supportata.

  4. In Esplora ricerche impostare le opzioni di query che consentono query semantiche, searchFields e correzione ortografica. È anche possibile incollare i parametri di query necessari nella stringa di query.

Opzioni di query in Esplora ricerche

Eseguire query con REST

Usare Cerca documenti (anteprima REST) per formulare la richiesta a livello di codice. Una risposta include automaticamente didascalie ed evidenziazione. Se si vogliono correggere l'ortografia o le risposte nella risposta, speller aggiungere answers o alla richiesta.

L'esempio seguente usa hotels-sample-index per creare una richiesta di query semantica con controllo ortografico, risposte semantiche e didascalie:

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview      
{
    "search": "newer hotel near the water with a great restaurant",
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Category,Description",
    "speller": "lexicon",
    "answers": "extractive|count-3",
    "highlightPreTag": "<strong>",
    "highlightPostTag": "</strong>",
    "select": "HotelId,HotelName,Description,Category",
    "count": true
}

Nella tabella seguente vengono riepilogati i parametri utilizzati in una query semantica. Per un elenco di tutti i parametri in una richiesta, vedere Cercare documenti (anteprima REST)

Parametro Tipo Descrizione
queryType string I valori validi includono simple, full e semantic. Per le query semantiche è necessario il valore "semantic".
QueryLanguage string Obbligatorio per le query semantiche. Il lessico specificato si applica ugualmente alla classificazione semantica, alle didascalie, alle risposte e al controllo ortografico. Per altre informazioni, vedere Lingue supportate (informazioni di riferimento sull'API REST).
searchFields string Elenco delimitato da virgole di campi ricercabili. Specifica i campi in cui si verifica la classificazione semantica, da cui vengono estratti i sottotitoli e le risposte.

A differenza dei tipi di query semplici e completi, l'ordine in cui sono elencati i campi determina la precedenza. Per altre istruzioni sull'utilizzo, vedere Passaggio 2: Impostare searchFields.
Speller string Parametro facoltativo, non specifico delle query semantiche, che corregge i termini con errori di ortografia prima che raggiungano il motore di ricerca. Per altre informazioni, vedere Aggiungere la correzione ortografica alle query.
risposte string Parametri facoltativi che specificano se le risposte semantiche vengono incluse nel risultato. Attualmente, viene implementato solo "estrattore". Le risposte possono essere configurate per restituire un massimo di dieci. Il valore predefinito è uno. Questo esempio mostra un conteggio di tre risposte: extractive\|count-3 . Per altre informazioni, vedere Restituire risposte semantiche.

Formulare la richiesta

Questa sezione illustra la formulazione delle query.

Passaggio 1: Impostare queryType e queryLanguage

Aggiungere i parametri seguenti al resto. Entrambi i parametri sono obbligatori.

"queryType": "semantic",
"queryLanguage": "en-us",

QueryLanguage deve essere una lingua supportata e deve essere coerente con qualsiasi analizzatore di linguaggio assegnato alle definizioni dei campi nello schema dell'indice. Ad esempio, le stringhe in francese sono indicizzate usando un analizzatore della lingua francese (ad esempio "fr.microsoft" o "fr.lucene"), quindi anche queryLanguage deve essere una variante della lingua francese.

In una richiesta di query, se si usa anche la correzione ortografica ,la queryLanguage impostata si applica ugualmente al correttore ortografico, alle risposte e alle didascalie. Non è disponibile alcun override per le singole parti. Il controllo ortografico supporta un numero inferioredi lingue, pertanto se si usa tale funzionalità, è necessario impostare queryLanguage su una di tale elenco.

Anche se il contenuto di un indice di ricerca può essere composto in più lingue, l'input della query è molto probabilmente in una sola. Il motore di ricerca non verifica la compatibilità di queryLanguage, language analyzer e il linguaggio in cui è composto il contenuto, quindi assicurarsi di impostare l'ambito delle query di conseguenza per evitare di produrre risultati non corretti.

Passaggio 2: Impostare searchFields

Aggiungere searchFields alla richiesta. È facoltativo ma fortemente consigliato.

"searchFields": "HotelName,Category,Description",

Il parametro searchFields viene usato per identificare i passaggi da valutare per la "somiglianza semantica" con la query. Per l'anteprima, non è consigliabile lasciare vuoto searchFields perché il modello richiede un suggerimento su quali campi sono i più importanti da elaborare.

A differenza di altri parametri, searchFields non è nuovo. È possibile che si sta già usando searchFields nel codice esistente per query Lucene semplici o complete. In tal caso, rivedere come viene usato il parametro in modo da poter controllare l'ordine dei campi quando si passa a un tipo di query semantico.

Tipi di dati consentiti

Quando si imposta searchFields, scegliere solo i campi dei tipi di dati supportati seguenti. Se si include un campo non valido, non si verifica alcun errore, ma questi campi non verranno usati nella classificazione semantica.

Tipo di dati Esempio da hotels-sample-index
Edm.String HotelName, Category, Description
Edm.ComplexType Address.StreetNumber, Address.City, Address.StateProvince, Address.PostalCode
Collection(Edm.String) Tag (elenco di stringhe delimitato da virgole)
Ordine dei campi in searchFields

L'ordine dei campi è fondamentale perché il classificatore semantico limita la quantità di contenuto che può elaborare, offrendo comunque un tempo di risposta ragionevole. È più probabile che il contenuto dei campi all'inizio dell'elenco sia incluso. Il contenuto della fine potrebbe essere troncato se viene raggiunto il limite massimo. Per altre informazioni, vedere Pre-elaborazione durante la classificazione semantica.

  • Se si specifica un solo campo, scegliere un campo descrittivo in cui trovare la risposta alle query semantiche, ad esempio il contenuto principale di un documento.

  • Per due o più campi in searchFields:

    • Il primo campo deve essere sempre conciso ,ad esempio un titolo o un nome, idealmente una stringa inferiore a 25 parole.

    • Se l'indice include un campo URL leggibile, ad esempio , anziché con lo stato attivo del computer, ad esempio , posizionarlo per secondo nell'elenco (o prima se non è presente alcun campo titolo www.domain.com/name-of-the-document-and-other-details www.domain.com/?id=23463&param=eis conciso).

    • Seguire i campi precedenti con altri campi descrittivi, in cui è possibile trovare la risposta alle query semantiche, ad esempio il contenuto principale di un documento.

Passaggio 3: Rimuovere o aggiungere tra parentesi quadre le funzionalità di query che ignorano l'assegnazione dei punteggi di pertinenza

Diverse funzionalità di query in Ricerca cognitiva non vengono classificate per pertinenza e alcune ignorano completamente il motore di ricerca full-text. Se la logica di query include le funzionalità seguenti, non si otterrà punteggi di pertinenza o classificazione semantica sui risultati:

  • Filtri, query di ricerca fuzzy ed espressioni regolari consentono di eseguire l'iterazione su testo non in formato nontoken, ricercando corrispondenze verbatim nel contenuto. I punteggi di ricerca per tutti i moduli di query precedenti sono uniformi 1.0 e non forniscono input significativi per la classificazione semantica.

  • Anche l'ordinamento (clausole orderBy) in campi specifici eseguirà l'override dei punteggi di ricerca e del punteggio semantico. Dato che il punteggio semantico viene usato per ordinare i risultati, inclusa la logica di ordinamento esplicita verrà restituito un errore HTTP 400.

Passaggio 4: Aggiungere risposte

Facoltativamente, aggiungere "risposte" se si vuole includere un'elaborazione aggiuntiva che fornisce una risposta. Per informazioni dettagliate su questo parametro, vedere Come specificare risposte semantiche.

"answers": "extractive|count-3",

Le risposte (e le didascalie) vengono estratte dai passaggi trovati nei campi elencati in searchFields. Questo è il motivo per cui si vogliono includere campi con contenuto in searchFields, in modo da poter ottenere le risposte migliori in una risposta. Le risposte non sono garantite per ogni richiesta. La query deve essere simile a una domanda e il contenuto deve includere testo simile a una risposta.

Passaggio 5: Aggiungere altri parametri

Impostare gli altri parametri desiderati nella richiesta. Parametri come correttore ortografico, selezionee conteggio migliorano la qualità della richiesta e la leggibilità della risposta.

"speller": "lexicon",
"select": "HotelId,HotelName,Description,Category",
"count": true,
"highlightPreTag": "<mark>",
"highlightPostTag": "</mark>",

L'evidenziazione dello stile viene applicata alle didascalie nella risposta. È possibile usare lo stile predefinito o, facoltativamente, personalizzare lo stile di evidenziazione applicato alle didascalie. Le didascalie applicano la formattazione di evidenziazione sui passaggi chiave del documento che riepilogano la risposta. Il valore predefinito è <em>. Se si vuole specificare il tipo di formattazione(ad esempio, sfondo giallo), è possibile impostare highlightPreTag ed highlightPostTag.

Eseguire query con Azure SDK

Le versioni beta degli SDK di Azure includono il supporto per la ricerca semantica. Poiché gli SDK sono versioni beta, non sono disponibili documentazione o esempi, ma è possibile fare riferimento alla sezione PRECEDENTE dell'API REST per informazioni dettagliate sul funzionamento delle API.

Azure SDK Pacchetto
.NET Pacchetto Azure.Search.Documents 11.3.0-beta.2
Java com.azure:azure-search-documents 11.4.0-beta.2
JavaScript azure/search-documents 11.2.0-beta.2
Python azure-search-documents 11.2.0b3

Valutare la risposta

Come per tutte le query, una risposta è costituita da tutti i campi contrassegnati come recuperabili o solo da quelli elencati nel parametro select. Include il punteggio di pertinenza originale e può anche includere un conteggio o risultati in batch, a seconda di come è stata formulata la richiesta.

In una query semantica la risposta include elementi aggiuntivi: un nuovo punteggio di pertinenza con classificazione semantica, didascalie in testo normale e con evidenziazioni e, facoltativamente, una risposta.

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. Ciò è 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 primo selettore. Le didascalie vengono restituite automaticamente, con testo normale e versioni evidenziate. Le risposte vengono omesse dall'esempio perché non è stato possibile determinarne una per la query e il corpus specifici.

"@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

Tenere presenti che la classificazione semantica e le risposte vengono compilate su un set di risultati iniziale. Qualsiasi logica che migliora la qualità dei risultati iniziali verrà inoltrata alla ricerca semantica. Come passaggio successivo, esaminare le funzionalità che contribuiscono ai risultati iniziali, inclusi gli analizzatori che influiscono sulla modalità di tokenizzazione delle stringhe, i profili di punteggio in grado di ottimizzare i risultati e l'algoritmo di pertinenza predefinito.