Restituire una risposta semantica in Azure AI Search
Quando si richiamano classificazione semantica e didascalie, è possibile estrarre il contenuto dai documenti con corrispondenza maggiore che "rispondono" direttamente alla query. Una o più risposte possono essere incluse nella risposta, su cui è quindi possibile eseguire il rendering in una pagina di ricerca per migliorare l'esperienza utente nell'app.
Una risposta semantica è il contenuto verbatim nell'indice di ricerca riconosciuto da un modello di comprensione della lettura come risposta alla query posta nella richiesta. Non è una risposta generata. Per indicazioni su un modello di interazione con l'utente in stile chat che usa l'intelligenza artificiale generativa per comporre risposte dal contenuto, vedere Generazione aumentata di recupero (RAG).
Questo articolo illustra come richiedere una risposta semantica, decomprimere la risposta e scoprire quali caratteristiche del contenuto sono più favorevoli alla produzione di risposte di alta qualità.
Prerequisiti
Tutti i prerequisiti che si applicano alle query semantiche si applicano anche alle risposte, tra cui il livello di servizio e l'area.
La logica di query deve includere i parametri di query semantici "queryType=semantic", oltre al parametro "answers". I parametri obbligatori sono descritti in questo articolo.
Le stringhe di query immesse dall'utente devono essere riconoscibili come domanda (cosa, dove, quando, come).
I documenti di ricerca nell'indice devono contenere testo con le caratteristiche di una risposta e tale testo deve esistere in uno dei campi elencati nella configurazione semantica. Ad esempio, data una query "cosa è una tabella hash", se nessuno dei campi nella configurazione semantica contiene passaggi che includono "Una tabella hash è...", è improbabile che venga restituita una risposta.
Nota
A partire dalla versione 2021-04-30-Preview, le richieste di creare o aggiornare l'indice hanno iniziato a forzare un requisito "semanticConfiguration"
per specificare i campi di input usati nella classificazione semantica.
Che cos'è una risposta semantica?
Una risposta semantica è una sottostruttura di una risposta di query semantica. È costituita da uno o più passaggi verbatim estrapolati da un documento di ricerca, formulati come risposta a una query che ha un aspetto simile a una domanda. Per restituire una risposta, le espressioni o le frasi devono esistere in un documento di ricerca con le caratteristiche del linguaggio di una risposta e la query stessa deve essere posta come domanda.
Azure AI Search usa un modello di comprensione di lettura automatica per riconoscere e scegliere la risposta migliore. Il modello produce una serie di potenziali risposte dal contenuto disponibile e, quando raggiunge un livello di attendibilità sufficientemente elevato, ne propone una come risposta.
Le risposte vengono restituite come oggetto indipendente di primo livello nel payload della risposta di query, di cui è possibile scegliere di eseguire il rendering nelle pagine di ricerca, insieme ai risultati della ricerca. Strutturalmente, si tratta di un elemento di matrice all'interno della risposta costituito da testo, una chiave del documento e un punteggio di attendibilità.
Formulare una query REST per le "risposte"
Per restituire una risposta semantica, la query deve avere i parametri semantici "queryType"
, "queryLanguage"
, "semanticConfiguration"
e "answers"
. La specifica di questi parametri non garantisce una risposta, ma la richiesta deve includerli per l'elaborazione delle risposte.
{
"search": "how do clouds form",
"queryType": "semantic",
"queryLanguage": "en-us",
"semanticConfiguration": "my-semantic-config",
"answers": "extractive|count-3",
"captions": "extractive|highlight-true",
"count": "true"
}
Una stringa di query non deve essere null e deve essere formulata come domanda.
"queryType"
deve essere impostato su "semantico."queryLanguage"
deve essere uno dei valori dell'elenco di lingue supportate (API REST)."semanticConfiguration"
determina quali campi stringa forniscono token al modello di estrazione. Gli stessi campi che producono didascalie producono anche risposte. Per informazioni dettagliate, vedere Creare una configurazione semantica.Per
"answers"
, la costruzione dei parametri è"answers": "extractive"
, dove il numero predefinito di risposte restituite è uno. È possibile aumentare il numero di risposte aggiungendo un valorecount
come illustrato nell'esempio precedente, fino a un massimo di 10. La necessità di più risposte dipende dall'esperienza utente nell'app e dalla modalità di rendering dei risultati.
Decomprimere una "risposta" dalla risposta
Le risposte vengono fornite nella matrice "@search.answers"
, che viene visualizzata per prima nella risposta alla query. Ogni risposta nella matrice include:
- Chiave di documento
- Testo o contenuto della risposta, in testo normale o con formattazione
- Punteggio di attendibilità
Se una risposta è indeterminata, viene visualizzata come "@search.answers": []
. La matrice di risposte è seguita dalla matrice di valori, ovvero la risposta standard in una query semantica.
Data la query "come si formano le nuvole", l'esempio seguente illustra una risposta:
{
"@search.answers": [
{
"key": "4123",
"text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case), but not where it is descending (over the river).",
"highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case), but not where it is<em> descending</em> (over the river).",
"score": 0.94639826
}
],
"value": [
{
"@search.score": 0.5479723,
"@search.rerankerScore": 1.0321671911515296,
"@search.captions": [
{
"text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
"highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
}
],
"title": "Earth Atmosphere",
"content": "Fog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
"locations": [
"Pacific Northwest",
"North America",
"Vancouver"
]
}
]
}
Quando si progetta una pagina di risultati della ricerca che include risposte, assicurarsi di gestire i casi in cui le risposte non vengono trovate.
All'interno di @search.answers:
"key" è la chiave o l'ID del documento della corrispondenza. Data una chiave del documento, è possibile usare l'API Cerca documento per recuperare una o tutte le parti del documento di ricerca da includere nella pagina di ricerca o in una pagina di dettaglio.
"text" e "highlights" forniscono contenuto identico, sia in testo normale che con evidenziazioni.
Per impostazione predefinita, le evidenziazioni sono in stile
<em>
, su cui è possibile eseguire l'override usando i parametri highlightPreTag e highlightPostTag esistenti. Come indicato altrove, la sostanza di una risposta è contenuto verbatim estrapolato da un documento di ricerca. Il modello di estrazione cerca le caratteristiche di una risposta per trovare il contenuto appropriato, ma non compone una nuova lingua nella risposta."score" è un punteggio di attendibilità che riflette la forza della risposta. Se nella risposta sono presenti più risposte, questo punteggio viene usato per determinare l'ordine. Le risposte e le didascalie principali possono essere derivate da documenti di ricerca diversi, in cui la risposta principale ha origine da un documento e la didascalia principale da un altro, ma in generale gli stessi documenti vengono visualizzati nelle posizioni principali all'interno di ogni matrice.
Le risposte sono seguite dalla matrice "value", che include sempre punteggi, didascalie e tutti i campi recuperabili per impostazione predefinita. Se è stato specificato il parametro di selezione, la matrice "value" è limitata ai campi specificati. Per informazioni dettagliate, vedere Configurare il classificatore semantico.
Suggerimenti per la produzione di risposte di alta qualità
Per ottenere risultati ottimali, restituire risposte semantiche in un corpus di documenti con le caratteristiche seguenti:
"semanticConfiguration" deve includere campi che offrono testo sufficiente in cui è probabile che venga trovata una risposta. I campi con maggiore probabilità di contenere risposte devono essere elencati per primi in "prioritizedContentFields". Solo il testo verbatim di un documento può essere visualizzato come risposta.
Le stringhe di query non devono essere null (search=
*
) e la stringa deve avere le caratteristiche di una domanda, ad esempio "cosa è" o "come fare per", anziché una ricerca per parole chiave costituita da termini o espressioni in ordine arbitrario. Se la stringa di query non sembra essere una domanda, l'elaborazione delle risposte viene ignorata, anche se la richiesta specifica "risposte" come parametro di query.L'estrazione semantica e il riepilogo hanno limiti sul numero di token per ogni documento che possono essere analizzati in modo tempestivo. In termini pratici, se si hanno documenti di grandi dimensioni che vengono eseguiti su centinaia di pagine, provare prima a suddividere il contenuto in documenti più piccoli.