Zurückgeben einer semantischen Antwort in Azure KI Search

Beim Aufrufen von semantischen Rangfolgen und Beschriftungen können Sie optional Inhalte aus den am besten passenden Dokumenten extrahieren, die die Abfrage direkt „beantworten“. Das Abfrageergebnis kann aus einer oder mehreren Antworten bestehen, die Sie dann auf einer Suchseite rendern können, um die Benutzeroberfläche Ihrer App zu verbessern.

Eine semantische Antwort ist wortgetreu wiedergegebener Inhalt in Ihrem Suchindex, den ein Modell für maschinelles Leseverständnis als Antwort auf die Abfrage in der Anforderung erkannt hat. Es handelt sich dabei nicht um eine generierte Antwort. Einen Leitfaden zu einem Benutzerinteraktionsmodell im Chatstil, das generative künstliche Intelligenz (KI) verwendet, um Antworten aus Ihren Inhalten zu verfassen, finden Sie unter Retrieval Augmented Generation (RAG).

In diesem Artikel wird beschrieben, wie Sie eine semantische Antwort anfordern und entpacken, und Sie erfahren, welche Inhaltsmerkmale am ehesten zu qualitativ hochwertigen Antworten führen.

Voraussetzungen

Alle für Semantikabfragen geltenden Voraussetzungen gelten auch für Antworten, einschließlich der Dienstebene und der Region.

  • Die Abfragelogik muss die Semantikabfrageparameter „queryType=semantic“ sowie den Parameter „anwers“ enthalten. Die erforderlichen Parameter werden in diesem Artikel erläutert.

  • Vom Benutzer eingegebene Abfragezeichenfolgen müssen wie eine Frage formuliert werden (was, wo, wann, wie).

  • Die Dokumente für die Suche im Index müssen Text mit den Merkmalen einer Antwort enthalten, der in einem der in der semantischen Konfiguration aufgeführten Felder stehen muss. Wenn z. B. eine Abfrage „Was ist eine Hashtabelle“ lautet und keines der Felder in der semantischen Konfiguration Textstellen mit „Eine Hashtabelle ist ...“ enthält, ist es unwahrscheinlich, dass eine Antwort zurückgegeben wird.

Hinweis

Ab 2021-04-30-Preview wurde in Anforderungen zum Erstellen oder Aktualisieren des Index eine "semanticConfiguration"-Anforderung für die Angabe von Eingabefeldern erzwungen, die in der semantischen Rangfolge verwendet werden.

Was ist eine semantische Antwort?

Eine semantische Antwort ist eine Unterstruktur einer Semantikabfrage-Antwort. Sie besteht aus einem oder mehreren wörtlich aus einem durchsuchten Dokument übernommenen Abschnitten, die als Antwort auf eine Abfrage formuliert sind, die wie eine Frage aussieht. Damit eine Antwort zurückgegeben wird, muss ein durchsuchtes Dokument Formulierungen oder Sätze enthalten, die die sprachlichen Merkmale einer Antwort aufweisen, und die Abfrage selbst muss eine Frage sein.

Azure KI Search verwendet ein Modell für maschinelles Leseverständnis, um die beste Antwort zu erkennen und auszuwählen. Das Modell erzeugt eine Reihe potenzieller Antworten aus dem verfügbaren Inhalt und schlägt eine Antwort vor, wenn eine ausreichend hohe Konfidenz erreicht wird.

Antworten werden als unabhängige Objekte der obersten Ebene in den Nutzdaten für das Abfrageergebnis zurückgegeben. Sie können auswählen, ob diese Objekte auf den Suchseiten zusammen mit den Suchergebnissen gerendert werden sollen. Strukturell gesehen handelt es sich um ein Array-Element innerhalb der Antwort, das aus Text, einem Dokumentenschlüssel und einem Vertrauensergebnis besteht.

Formulieren einer REST-Abfrage für „Antworten“

Damit eine semantische Antwort zurückgegeben wird, muss die Abfrage den "queryType"-Wert „semantic“ sowie die Parameter "queryLanguage", "semanticConfiguration" und "answers" enthalten. Die Angabe dieser Parameter garantiert keine Antwort, aber die Anforderung muss sie enthalten, damit die Antwortverarbeitung erfolgen kann.

{
    "search": "how do clouds form",
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config",
    "answers": "extractive|count-3",
    "captions": "extractive|highlight-true",
    "count": "true"
}
  • Abfragezeichenfolgen dürfen nicht NULL sein und sollten als Fragen formuliert werden.

  • "queryType" muss auf „semantic“ festgelegt sein.

  • "queryLanguage" muss einer der Werte in der Liste der unterstützten Sprachen (REST-API) sein.

  • "semanticConfiguration" bestimmt, welche Zeichenfolgenfelder Token für das Extraktionsmodell bereitstellen. Die gleichen Felder, die Beschriftungen liefern, liefern auch Antworten. Weitere Informationen finden Sie unter Erstellen einer semantischen Konfiguration.

  • Die grundlegende Struktur für den Parameter "answers" ist "answers": "extractive", wobei standardmäßig eine Antwort zurückgegeben wird. Sie können die Anzahl der Antworten erhöhen, indem Sie wie im obigen Beispiel gezeigt eine Anzahl (count) von maximal zehn hinzufügen. Ob Sie mehr als eine Antwort benötigen, hängt von der Benutzeroberfläche Ihrer App ab sowie davon, wie die Ergebnisse gerendert werden sollen.

Entpacken einer Antwort aus dem Abfrageergebnis

Antworten werden im Array "@search.answers" bereitgestellt, das ganz oben im Abfrageergebnis angezeigt wird. Jede Antwort im Array enthält Folgendes:

  • Dokumentschlüssel
  • Text oder Inhalt der Antwort, im Nur-Text-Format oder mit Formatierung
  • Genauigkeitsbewertung

Wenn die Antwort unklar ist, wird "@search.answers": [] angezeigt. Auf das Antwortarray folgt das Wertarray, das die Standardantwort in einer Semantikabfrage ist.

Anhand der Abfrage „Wie bilden sich Clouds“ veranschaulicht das folgende Beispiel eine Antwort:

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

Berücksichtigen Sie beim Entwerfen einer Suchergebnisseite, auf der Antworten angezeigt werden, auch Fälle, in denen keine Antwort gefunden wird.

Innerhalb von @search.answers:

  • Mit „key“ ist der Dokumentschlüssel oder die Dokument-ID des Treffers gemeint. Mit einem Dokumentschlüssel können Sie die API für die Dokumentsuche verwenden, um einzelne oder alle Teile des durchsuchten Dokuments abzurufen, um diese auf der Suchseite oder einer Detailseite anzuzeigen.

  • Der Inhalt von „text“ und „highlights“ ist identisch, einmal als Nur-Text und einmal mit Hervorhebungen.

    Hervorhebungen werden standardmäßig als <em> formatiert. Dies kann mit den Parametern highlightPreTag und highlightPostTag überschrieben werden. Wie bereits erwähnt, besteht eine Antwort aus wörtlich aus einem durchsuchten Dokument übernommenen Inhalten. Das Extraktionsmodell sucht nach Antwortmerkmalen, um die richtigen Inhalte zu finden, verfasst im Abfrageergebnis jedoch keinen neuen Text.

  • Bei dem Wert für „score“ handelt es sich um eine Konfidenzbewertung, die widerspiegelt, wie gut die entsprechende Antwort ist. Wenn das Abfrageergebnis mehrere Antworten enthält, wird basierend auf dieser Bewertung die Reihenfolge festgelegt. Die besten Antworten und Beschriftungen können aus verschiedenen durchsuchten Dokumenten stammen. So kann die beste Antwort aus einem Dokument stammen und die beste Beschriftung aus einem anderen. Im Allgemeinen werden jedoch in jedem Array dieselben Dokumente an den höheren Positionen aufgeführt.

Auf die Antworten folgt das Array „value“, das immer Bewertungen, Beschriftungen und alle Felder enthält, die standardmäßig abgerufen werden können. Wenn Sie den Parameter „select“ verwendet haben, enthält das Array „value“ nur die von Ihnen angegebenen Felder. Ausführliche Informationen finden Sie unter Konfigurieren des semantischen Sortierers.

Tipps für qualitativ hochwertige Antworten

Für optimale Ergebnisse sollte der Korpus mit Dokumenten für die semantischen Antworten über die folgenden Eigenschaften verfügen:

  • Die „semanticConfiguration“ muss Felder enthalten, die genügend Text enthalten, in dem wahrscheinlich eine Antwort gefunden wird. Felder, die eher Antworten enthalten, sollten zuerst in „prioredContentFields“ aufgeführt werden. Es kann nur ein wortgetreuer Text aus einem Dokument als Antwort angezeigt werden.

  • Abfragezeichenfolgen dürfen nicht NULL sein (search = *). Außerdem sollte die Zeichenfolge im Gegensatz zu einer Schlüsselwortsuche (Liste mit beliebigen aufeinanderfolgenden Begriffen oder Formulierungen) Fragemerkmale wie „was ist“ oder „wie kann man“ aufweisen. Wenn es keine Antwort auf die Abfragezeichenfolge zu geben scheint, wird die Antwortverarbeitung übersprungen, auch wenn in der Anforderung der Abfrageparameter „answers“ angegeben wurde.

  • Bei der semantischen Extraktion und Zusammenfassung gibt es Einschränkungen in Bezug darauf, wie viele Token pro Dokument schnell analysiert werden können. Für die Praxis bedeutet dies Folgendes: Wenn Sie über große Dokumente mit Hunderten von Seiten verfügen, versuchen Sie zunächst, deren Inhalt in überschaubarere Teile aufzuteilen.

Nächste Schritte