Returnera ett semantiskt svar i Azure Cognitive Search

Viktigt

Semantisk sökning är i offentlig förhandsversion under kompletterande användningsvillkor. Den är tillgänglig via Azure-Portal, förhandsversion av REST API och beta-SDK:er. Den här funktionen kan faktureras (se Tillgänglighet och priser).

När du anropar semantisk rangordning och undertexter kan du eventuellt extrahera innehåll från de mest matchande dokumenten som "besvarar" frågan direkt. Ett eller flera svar kan inkluderas i svaret, som du sedan kan återge på en söksida för att förbättra användarupplevelsen för din app.

I den här artikeln får du lära dig hur du begär ett semantiskt svar, packar upp svaret och vilka innehållsegenskaper som är mest gynnsamma för att skapa högkvalitativa svar.

Krav

Alla krav som gäller för semantiska frågor gäller även för svar, inklusive tjänstnivå och region.

  • Frågelogik måste innehålla de semantiska frågeparametrarna "queryType=semantic" plus parametern "answers". Obligatoriska parametrar beskrivs i den här artikeln.

  • Frågesträngar som användaren anger måste vara identifierbara som en fråga (vad, var, när, hur).

  • Sökdokument i indexet måste innehålla text som har ett svars egenskaper och texten måste finnas i ett av fälten som anges i semantikkonfigurationen. Om till exempel en fråga "what is a hash table" (vad är en hashtabell) inte innehåller några av fälten i semantikkonfigurationen som innehåller "A hash table is ..." (En hash-tabell är ...) returneras ett osannolikt svar.

Vad är ett semantiskt svar?

Ett semantiskt svar är en understruktur av ett semantiskt frågesvar. Den består av en eller flera ordagranna passager från ett sökdokument, formulerade som ett svar på en fråga som ser ut som en fråga. Om du vill returnera ett svar måste fraser eller meningar finnas i ett sökdokument som har språkegenskaperna för ett svar, och själva frågan måste ställas som en fråga.

Cognitive Search använder en modell för maskinläsningsförståelse för att välja det bästa svaret. Modellen genererar en uppsättning potentiella svar från det tillgängliga innehållet, och när den når en tillräckligt hög konfidensnivå kommer den att föreslå en som ett svar.

Svar returneras som ett oberoende objekt på den översta nivån i nyttolasten för frågesvar som du kan välja att rendera på söksidor, längs sökresultat. Strukturellt är det ett matriselement i svaret som består av text, en dokumentnyckel och en konfidenspoäng.

Formulera en REST-fråga för "svar"

Metoden för att lista fält i prioritetsordning har ändrats, med "semanticConfiguration" som ersätter "searchFields". Om du för närvarande använder "searchFields" uppdaterar du koden till API-versionen 2021-04-30-Preview och använder "semanticConfiguration" i stället.

Om du vill returnera ett semantiskt svar måste frågan ha parametrarna "queryType", "queryLanguage", "semanticConfiguration" och "answers". Att ange dessa parametrar garanterar inte något svar, men begäran måste innehålla dem för att svarsbearbetningen ska kunna utföras.

Parametern "semanticConfiguration" krävs. Det definieras i ett sökindex och refereras sedan till i en fråga enligt nedan.

{
    "search": "how do clouds form",
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config",
    "answers": "extractive|count-3",
    "captions": "extractive|highlight-true",
    "count": "true"
}
  • En frågesträng får inte vara null och ska formuleras som en fråga.

  • "queryType" måste anges till "semantisk".

  • "queryLanguage" måste vara ett av värdena från listan över språk som stöds (REST API).

  • En "semanticConfiguration" avgör vilka strängfält som tillhandahåller token till extraheringsmodellen. Samma fält som producerar undertexter ger också svar. Mer information finns i Skapa en semantisk konfiguration .

  • För "svar" är "answers": "extractive"parameterkonstruktionen , där standardantalet svar som returneras är ett. Du kan öka antalet svar genom att lägga till ett count som visas i exemplet ovan, upp till högst 10. Om du behöver mer än ett svar beror på appens användarupplevelse och hur du vill rendera resultat.

Packa upp ett "svar" från svaret

Svar finns i matrisen "@search.answers" , som visas först i frågesvaret. Varje svar i matrisen innehåller:

  • Dokumentnyckel
  • Svarstext eller innehåll i oformaterad text eller med formatering
  • Förtroendepoäng

Om ett svar är obestämd visas svaret som "@search.answers": []. Svarsmatrisen följs av värdematrisen, som är standardsvaret i en semantisk fråga.

Med frågan "hur bildar moln" illustrerar följande exempel ett svar:

{
    "@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"
            ]
        }
    ]
}

När du utformar en sökresultatsida som innehåller svar ska du se till att hantera fall där svar inte hittas.

Inom @search.answers:

  • "key" är dokumentnyckeln eller ID:t för matchningen. Med en dokumentnyckel kan du använda API:et för uppslagsdokument för att hämta alla delar av sökdokumentet som ska ingå på söksidan eller på en detaljsida.

  • "text" och "highlights" ger identiskt innehåll, både i oformaterad text och med markeringar.

    Som standard är markeringar formaterade som <em>, som du kan åsidosätta med hjälp av de befintliga parametrarna highlightPreTag och highlightPostTag. Som nämnts på annat håll är innehållet i ett svar ordagrant innehåll från ett sökdokument. Extraheringsmodellen söker efter egenskaper hos ett svar för att hitta rätt innehåll, men skriver inte nytt språk i svaret.

  • "score" är en förtroendepoäng som återspeglar svarets styrka. Om det finns flera svar i svaret används den här poängen för att fastställa ordningen. De vanligaste svaren och topptexterna kan härledas från olika sökdokument, där det översta svaret kommer från ett dokument och den översta beskrivningen från ett annat, men i allmänhet ser du samma dokument på de översta positionerna i varje matris.

Svar följs av matrisen "value", som alltid innehåller poäng, undertexter och alla fält som kan hämtas som standard. Om du har angett select-parametern är matrisen "value" begränsad till de fält som du har angett. Mer information finns i Konfigurera semantisk rangordning .

Tips för att skapa högkvalitativa svar

För bästa resultat returnerar du semantiska svar på ett dokumentkorus med följande egenskaper:

  • "SemanticConfiguration" måste innehålla fält som erbjuder tillräckligt med text där ett svar sannolikt kommer att hittas. Fält som är mer benägna att innehålla svar bör anges först i "prioritizedContentFields". Endast ordagrann text från ett dokument kan visas som ett svar.

  • Frågesträngar får inte vara null (search=*) och strängen ska ha egenskaperna för en fråga, till skillnad från en nyckelordssökning (en sekventiell lista med godtyckliga termer eller fraser). Om frågesträngen inte verkar vara svar hoppas svarsbearbetningen över, även om begäran anger "svar" som en frågeparameter.

  • Semantisk extrahering och sammanfattning har gränser för hur många token per dokument som kan analyseras i tid. Om du har stora dokument som körs på hundratals sidor kan du försöka dela upp innehållet i mindre dokument först.

Nästa steg