Entwerfen von Wissens-BotsDesign knowledge bots

gilt für: SDK v4APPLIES TO: SDK v4

Ein Wissens-Bot kann so entworfen werden, dass er Informationen zu praktisch jedem Thema bereitstellt.A knowledge bot can be designed to provide information about virtually any topic. Beispielsweise kann ein Wissens-Bot Fragen zu Veranstaltungen beantworten, wie z.B. „Welche Veranstaltungen zu Bots finden bei dieser Konferenz statt?“, „Wann gibt es die nächste Reggae-Show?“ oder „Wer ist Tame Impala?“For example, one knowledge bot might answer questions about events such as, "What bot events are there at this conference?", "When is the next Reggae show?", or "Who is Tame Impala?" Ein anderer Bot kann IT-bezogene Fragen beantworten, z.B. „Wie aktualisiere ich mein Betriebssystem?“Another might answer IT-related questions such as "How do I update my operating system?" oder „Wo kann ich mein Kennwort zurücksetzen?“or "Where do I go to reset my password?" Noch ein anderer Bot kann Fragen zu Kontakten beantworten, z.B. „Wer ist Klaus Buzov?“Yet another might answer questions about contacts such as "Who is John Doe?" oder „Wie lautet die E-Mail-Adresse von Laura Becker?“or "What is Jane Doe's email address?"

Unabhängig vom jeweiligen Anwendungsfall, für den ein Wissens-Bot konzipiert ist, ist das grundlegende Ziel immer das gleiche: Suchen und Zurückgeben der vom Benutzer angeforderten Informationen durch Nutzung von Datenbeständen, z.B. relationaler Daten in einer SQL-Datenbank, JSON-Daten in einem nicht relationalen Speicher oder PDF-Dateien in einem Dokumentspeicher.Regardless of the use case for which a knowledge bot is designed, its basic objective is always the same: find and return the information that the user has requested by leveraging a body of data, such as relational data in a SQL database, JSON data in a non-relational store, or PDFs in a document store.

Die Suchfunktion kann ein wertvolles Tool in einem Bot sein.Search functionality can be a valuable tool within a bot.

Mithilfe einer „Fuzzysuche“ kann ein Bot Informationen zurückgeben, die wahrscheinlich relevant für die Frage des Benutzers sind, ohne dass vom Benutzer eine genau Eingabe erforderlich ist.First, "fuzzy search" enables a bot to return information that's likely to be relevant to the user's question, without requiring that the user provide precise input. Wenn der Benutzer beispielsweise einen Wissens-Bot für Musik nach Informationen zu „Impala“ (anstelle von „Tame Impala“) fragt, kann der Bot mit Informationen antworten, die höchstwahrscheinlich für diese Eingabe relevant sind.For example, if the user asks a music knowledge bot for information about "impala" (instead of "Tame Impala"), the bot can respond with information that's most likely to be relevant to that input.

Fuzzysuche

Suchbewertungen geben den Grad der Zuverlässigkeit für die Ergebnisse einer bestimmten Suche an und ermöglichen es einem Bot, die Ergebnisse entsprechend zu sortieren oder sogar die Kommunikation auf Grundlage des Zuverlässigkeitsgrads anzupassen.Search scores indicate the level of confidence for the results of a specific search, enabling a bot to order its results accordingly, or even tailor its communication based upon confidence level. Wenn der Zuverlässigkeitsgrad hoch ist, kann die Antwort des Bots z.B. folgendermaßen lauten: „Hier ist die Veranstaltung, die Ihrer Suche am besten entspricht:“For example, if confidence level is high, the bot may respond with "Here is the event that best matches your search:".

Suchvertrauen hoch

Wenn der Zuverlässigkeitsgrad niedrig ist, kann die Antwort des Bots lauten: „Hmm... haben Sie nach einer dieser Veranstaltungen gesucht?“If confidence level is low, the bot may respond with "Hmm... were you looking for any of these events?"

Search Confidence Low

Verwenden der Suche zum Führen einer KonversationUsing Search to Guide a Conversation

Wenn Ihr Ziel für das Erstellen eines Bots das Bereitstellen von Basisfunktionalität einer Suchmaschine ist, benötigen Sie vielleicht gar keinen Bot.If your motivation for building a bot is to enable basic search engine functionality, then you may not need a bot at all. Was bietet eine Konversationsoberfläche, das eine typische Suchmaschine in einem Webbrowser den Benutzern nicht bieten kann?What does a conversational interface offer that users can't get from a typical search engine in a web browser?

Wissens-Bots sind in der Regel dann am effektivsten, wenn sie zum Führen einer Konversation entworfen werden.Knowledge bots are generally most effective when they are designed to guide the conversation. Eine Konversation besteht aus einem wechselseitigen Austausch zwischen Benutzer und Bot, der dem Bot Gelegenheit bietet, klärende Fragen zu stellen, Optionen anzubieten und Ergebnisse zu prüfen, und das auf eine Weise, die bei einer einfachen Suche nicht möglich ist.A conversation is composed of a back-and-forth exchange between user and bot, which presents the bot with opportunities to ask clarifying questions, present options, and validate outcomes in a way that a basic search is incapable of doing. Beispielsweise führt der folgende Bot einen Benutzer durch eine Konversation, mit der ein Dataset facettiert und gefiltert wird, bis die Informationen gefunden sind, nach denen der Benutzer sucht.For example, the following bot guides a user through a conversation that facets and filters a dataset until it locates the information that the user is seeking.

Search Guided Conversation Schritt 1

Search Guided Conversation Schritt 2

Search Guided Conversation Schritt 3

Search Guided Conversation Schritt 4

Durch Verarbeitung der Benutzereingabe in jedem Schritt und Anzeige der jeweiligen Optionen führt der Bot den Benutzer zu den gesuchten Informationen.By processing the user's input in each step and presenting the relevant options, the bot guides the user to the information that they're seeking. Nachdem der Bot diese Informationen bereitgestellt hat, kann er auch Anleitungen dazu geben, wie in Zukunft auf effizientere Weise nach ähnlichen Informationen gesucht werden kann.Once the bot delivers that information, it can even provide guidance about more efficient ways to find similar information in the future.

Trainierte Suche

Mithilfe von Azure Search können Sie einen effizienten Suchindex erstellen, der von einem Bot mühelos durchsucht, facettiert und gefiltert werden kann.By using Azure Search, you can create an efficient search index that a bot can easily search, facet, and filter. Nehmen wir als Beispiel einen Suchindex, der über das Azure-Portal erstellt wurde.Consider a search index that is created using the Azure portal.

Azure-Portalsuche

Sie möchten auf alle Eigenschaften des Datenspeichers zugreifen können und legen deshalb jede Eigenschaft als „abrufbar“ fest.You want to be able to access all properties of the data store, so you set each property as "retrievable." Sie möchten Musiker anhand des Namens finden können und legen deshalb die Eigenschaft Name als „suchbar“ fest.You want to be able to find musicians by name, so you set the Name property as "searchable." Zum Schluss möchten Sie Epochen von Musikern facettieren und filtern können und kennzeichnen daher die Eigenschaft Eras (Epochen) als „facettenreich“ und „filterbar“.Finally, you want to be able to facet filter over musicians' eras, so you mark the Eras property as both "facetable" and "filterable."

Durch Facettieren werden die Werte ermittelt, die im Datenspeicher für eine bestimmte Eigenschaft vorhanden sind, zusammen mit der Größenordnung der einzelnen Werte.Faceting determines the values that exist in the data store for a given property, along with the magnitude of each value. Der folgende Screenshot zeigt beispielsweise, dass fünf verschiedene Epochen im Datenspeicher vorhanden sind:For example, this screenshot shows that there are 5 distinct eras in the data store:

Facetten

Durch das Filtern wiederum werden nur die angegebenen Instanzen einer bestimmten Eigenschaft ausgewählt.Filtering, in turn, selects only the specified instances of a certain property. Sie könnten die Ergebnisse oben z.B. so filtern, dass nur die Elemente enthalten sind, bei denen Era den Wert „Romantic“ aufweist.For example, you could filter the result set above to contain only items where Era is equal to "Romantic."

Hinweis

Sehen Sie sich einen Beispielbot als ein umfassendes Beispiel für einen Wissens-Bots an, der mit Azure Document DB, Azure Search und Microsoft Bot Framework erstellt wurde.See a sample bot for a complete example of a knowledge bot that is created using Azure Document DB, Azure Search, and the Microsoft Bot Framework.

Der Einfachheit halber enthält das obige Beispiel einen Suchindex, der über das Azure-Portal erstellt wurde.For the sake of simplicity, the example above shows a search index that is created using the Azure portal. Indizes können auch programmgesteuert erstellt werden.Indices can also be created programmatically.

QnA MakerQnA Maker

Einige Wissens-Bots haben einfach zum Ziel, häufig gestellte Fragen (FAQs) zu beantworten.Some knowledge bots may simply aim to answer frequently asked questions (FAQs). QnA Maker ist ein leistungsfähiges Tool, das speziell für diesen Anwendungsfall entworfen wurde.QnA Maker is a powerful tool that's designed specifically for this use case. QnA Maker verfügt über die integrierte Möglichkeit, Fragen und Antworten von einer vorhandenen Website mit häufig gestellten Fragen zu extrahieren, und ermöglicht Ihnen außerdem, eine eigene benutzerdefinierte Liste von Fragen und Antworten manuell zu konfigurieren.QnA Maker has the built-in ability to scrape questions and answers from an existing FAQ site, plus it also allows you to manually configure your own custom list of questions and answers. QnA Maker kann natürliche Sprache verarbeiten, sodass auch Antworten auf Fragen bereitgestellt werden können, die etwas anders formuliert sind als erwartet.QnA Maker has natural language processing abilities, enabling it to even provide answers to questions that are worded slightly differently than expected. Die Möglichkeit zum Verstehen der Sprachsemantik ist jedoch nicht vorhanden.However, it does not have semantic language understanding abilities. Das Tool kann beispielsweise nicht feststellen, dass ein Welpe eine Art von Hund ist.It cannot determine that a puppy is a type of dog, for example.

Mithilfe der QnA Maker-Weboberfläche können Sie eine Wissensdatenbank mit drei Frage-und-Antwort-Paaren konfigurieren:Using the QnA Maker web interface, you can configure a knowledge base with three question and answer pairs:

Konfigurieren der KB

Anschließend können Sie diese testen, indem Sie eine Reihe von Fragen stellen:Then, you can test it by asking a series of questions:

Test-KB

Der Bot beantwortet die Fragen korrekt, die den in der Wissensdatenbank konfigurierten Fragen direkt zugeordnet werden.The bot correctly answers the questions that directly map to the ones that were configured in the knowledge base. Die Antwort auf die Frage „Kann ich meinen Tee mitbringen?“ ist jedoch falsch, da diese Frage von der Struktur her der Frage „Kann ich meinen Wodka mitbringen“ am ähnlichsten ist.However, it incorrectly responds to the question "can I bring my tea?", because this question is most similar in structure to the question "can I bring my vodka?." QnA Maker gibt eine falsche Antwort, weil die Bedeutung von Wörtern grundsätzlich nicht verstanden wird.The reason QnA Maker gives an incorrect answer is that it does not inherently understand the meaning of words. Das Tool weiß nicht, dass „Tee“ ein alkoholfreies Getränk ist.It does not know that "tea" is a type of nonalcoholic drink. Daher lautet die Antwort „Alkohol ist nicht erlaubt“.Therefore, it answers "Alcohol is not allowed."

Tipp

Erstellen Sie Frage-und-Antwort-Paare, und testen und trainieren Sie dann Ihren Bot mithilfe der Schaltfläche „Überprüfen“ unter der Konversation, um eine alternative Antwort für jede falsch gegebene Antwort auszuwählen.Create your QnA pairs and then test and re-train your bot by using the "Inspect" button under the conversation to select an alternative answer for each incorrect answer that is given.

LUISLUIS

Einige Wissens-Bots erfordern Funktionen zur Verarbeitung natürlicher Sprache (Natural Language Processing, NLP), damit sie Nachrichten eines Benutzers analysieren und so die Absicht des Benutzers ermitteln können.Some knowledge bots require natural language processing (NLP) capabilities so that they can analyze a user's messages to determine the user's intent. Language Understanding (LUIS) bietet eine schnelle und effektive Möglichkeit, um Bots diese NLP-Funktionen hinzuzufügen.Language Understanding (LUIS) provides a fast and effective means of adding NLP capabilities to bots. Mit LUIS können Sie vorhandene, vordefinierte Modelle aus Bing und Cortana verwenden, wenn diese Ihren Anforderungen entsprechen, und auch eigene spezielle Modelle erstellen.LUIS enables you to use existing, pre-built models from Bing and Cortana whenever they meet your needs, as well as allowing you to create specialized models of your own.

Beim Arbeiten mit großen Datasets, ist es nicht unbedingt sinnvoll, ein NLP-Modell mit jeder Variation einer Entität zu trainieren.When working with huge datasets, it's not necessarily feasible to train an NLP model with every variation of an entity. In einem Bot zur Wiedergabe von Musik kann ein Benutzer beispielsweise „Spiel Reggae“, „Spiel Bob Marley“ oder „Spiel One Love“ als Nachricht angeben.In a music playing bot, for example, a user might message "Play Reggae", "Play Bob Marley", or "Play One Love". Obwohl ein Bot jede dieser Nachrichten der Absicht „PlayMusic“ zuordnen kann, ohne mit jedem Künstler, Genre und Titelnamen trainiert zu sein, könnte ein NLP-Modell nicht feststellen, ob die Entität ein Genre, Künstler oder Titel ist.Although a bot could map each of these messages to the intent "playMusic", without being trained with every artist, genre and song name, an NLP model would not be able to identify whether the entity is a genre, artist or song. Durch Verwendung eines NLP-Modells zum Erkennen der generischen Entität vom Typ „Musik“ kann der Bot den Datenspeicher nach dieser Entität durchsuchen und von dort aus fortfahren.By using an NLP model to identify the generic entity of type "music", the bot could search its data store for that entity, and proceed from there.

Kombinieren von Search, QnA Maker und/oder LUISCombining Search, QnA Maker, and/or LUIS

Search, QnA Maker und LUIS sind jeweils für sich leistungsstarke Tools, doch können sie auch kombiniert werden, um Wissens-Bots zu erstellen, die über mehrere dieser Funktionen verfügen.Search, QnA Maker and LUIS are each powerful tools in their own right, but they can also be combined to build knowledge bots that possess more than one of those capabilities.

In dem Botbeispiel für Musikfestivals weiter oben führt der Bot die Konversation durch Anzeigen von Schaltflächen für die Auflistung.In the music festival bot example covered earlier, the bot guides the conversation by showing buttons that represent the lineup. Dieser Bot könnte aber auch mithilfe von LUIS natürliche Sprache verstehen, damit Absichten und Entitäten in Fragen erkannt werden, wie z.B. „Welche Art von Musik macht Romit Girdhar?“However, this bot could also incorporate natural language understanding by using LUIS to determine intent and entities within questions such as "what kind of music does Romit Girdhar play?". Der Bot könnte dann eine Suche in einem Azure Search-Index nach dem Namen dieses Musikers ausführen.The bot could then search against an Azure Search index using musician name.

Es wäre nicht machbar, das Modell mit jedem möglichen Musikernamen zu trainieren, da es so viele mögliche Werte gibt, doch könnten Sie genügend repräsentative Beispiele für LUIS angeben, damit die vorliegende Entität richtig erkannt wird.It wouldn't be feasible to train the model with every possible musician name since there are so many potential values, but you could provide enough representative examples for LUIS to properly identify the entity at hand. Sie könnten beispielsweise Ihr Modell trainieren, indem Sie Beispiele für Musiker angeben:For example, consider that you train your model by providing examples of musicians:

Train Model Step 1  Train Model Step 2Train Model Step 1 Train Model Step 2

Wenn Sie dieses Modell mit neuen Äußerungen testen, wie z.B. „Welche Art von Musik machen die Beatles?“, kann LUIS erfolgreich die Absicht „AnswerGenre“ und die Entität „die Beatles“ erkennen.When you test this model with new utterances like, "what kind of music do the beatles play?", LUIS successfully determines the intent "answerGenre" and the identifies entity "the beatles." Wenn Sie aber eine längere Frage stellen, z.B. „Welche Art von Musik macht The Devil Makes Three“ erkennt LUIS „the devil“ als Entität.However, if you submit a longer question such as "what kind of music does the devil makes three play?", LUIS identifies "the devil" as the entity.

Score

Durch Trainieren des Modells mit Beispielentitäten, die für das zugrunde liegende Dataset repräsentativ sind, können Sie die Genauigkeit des Sprachverständnisses bei Ihrem Bot erhöhen.By training the model with example entities that are representative of the underlying dataset, you can increase the accuracy of your bot's language understanding.

Tipp

Im Allgemeinen ist es besser für das Modell, sich durch Erkennen zu vieler Wörter bei der Entitätserkennung zu irren (z.B. „Bitte Niklas Gasper“ bei der Äußerung „Bitte Niklas Gasper anrufen“ erkennen), als wenn zu wenig Wörter erkannt werden (z.B. „Niklas“ bei der Äußerung „Bitte Niklas Gasper anrufen“).In general, it is better for the model to err by identifying excess words in its entity recognition, e.g., identify "John Smith please" from the utterance "Call John Smith please", rather than identify too few words, e.g., identify "John" from the utterance "Call John Smith please". Der Suchindex ignoriert nicht relevante Wörter wie „Bitte“ im Ausdruck „Bitte Niklas Gasper“.The search index will ignore irrelevant words such as "please" in the phrase "John Smith please".

LUIS und QnA MakerLUIS and QnA Maker

Bei einigen Wissens-Bots wird möglicherweise QnA Maker verwendet, um grundlegende Fragen zu beantworten, in Kombination mit LUIS, um Absichten zu ermitteln, Entitäten zu extrahieren und ausführlichere Dialoge aufzurufen.Some knowledge bots might use QnA Maker to answer basic questions in combination with LUIS to determine intents, extract entities and invoke more elaborate dialogs. Nehmen wir als Beispiel einen einfachen Bot für ein IT-Helpdesk.For example, consider a simple IT Help Desk bot. Bei diesem Bot wird QnA Maker verwendet, um grundlegende Fragen zu Windows oder Outlook zu beantworten, doch müssen möglicherweise auch Szenarien wie das Zurücksetzen von Kennwörtern ermöglicht werden, die eine Absichtserkennung und eine wechselseitige Kommunikation zwischen Benutzer und Bot erfordern.This bot may use QnA Maker to answer basic questions about Windows or Outlook, but it might also need to facilitate scenarios like password reset, which require intent recognition and back-and-forth communication between user and bot. Es gibt mehrere Möglichkeiten, wie ein Bot eine Kombination aus LUIS und QnA Maker implementieren kann:There are a few ways that a bot may implement a hybrid of LUIS and QnA Maker:

  1. Gleichzeitiges Aufrufen von QnA Maker und LUIS und Bereitstellen von Antworten für den Benutzer anhand von Informationen aus dem ersten Tool, das ein Ergebnis mit einem bestimmten Schwellenwert zurückgibt.Call both QnA Maker and LUIS at the same time, and respond to the user by using information from the first one that returns a score of a specific threshold.
  2. Anfängliches Aufrufen von LUIS, und wenn keine Absicht einen bestimmten Schwellenwert erreicht, d.h. eine Absicht vom Typ „None“ ausgelöst wird, Aufrufen von QnA Maker.Call LUIS first, and if no intent meets a specific threshold score, i.e., "None" intent is triggered, then call QnA Maker. Alternative: Erstellen einer LUIS-Absicht für QnA Maker und Bereitstellen von QnA-Beispielfragen für das LUIS-Modell, die „QnAIntent“ zugeordnet sind.Alternatively, create a LUIS intent for QnA Maker, feeding your LUIS model with example QnA questions that map to "QnAIntent."
  3. Anfängliches Aufrufen von QnA Maker, und wenn keine Antwort einen bestimmten Schwellenwert erreicht, anschließendes Aufrufen von LUIS.Call QnA Maker first, and if no answer meets a specific threshold score, then call LUIS.

Das Bot Framework SDK bietet integrierte Unterstützung für LUIS und QnA Maker.The Bot Framework SDK provide built-in support for LUIS and QnA Maker. Dadurch können Sie mithilfe von LUIS und/oder QnA Maker Dialoge auslösen oder Fragen automatisch beantworten, ohne benutzerdefinierte Aufrufe der beiden Tools implementieren zu müssen.This enables you to trigger dialogs or automatically answer questions using LUIS and/or QnA Maker without having to implement custom calls to either tool. Weitere Informationen finden Sie unter Verwenden mehrerer LUIS- und QnA-Modelle mit Orchestrator.See how to Use multiple LUIS and QnA models with Orchestrator for more information.

Tipp

Wenn Sie eine Kombination von LUIS, QnA Maker und/oder Azure Search implementieren, testen Sie Eingaben mit jedem der Tools, um den Schwellenwert für die einzelnen Modelle zu bestimmen.When implementing a combination of LUIS, QnA Maker, and/or Azure Search, test inputs with each of the tools to determine the threshold score for each of your models. LUIS, QnA Maker und Azure Search generieren jeweils Bewertungen anhand verschiedener Kriterien, sodass die mit diesen Tools generierten Bewertungen nicht direkt vergleichbar sind.LUIS, QnA Maker, and Azure Search each generate scores by using a different scoring criteria, so the scores generated across these tools are not directly comparable. Darüber hinaus werden Bewertungen in LUIS und QnA Maker normalisiert.Additionally, LUIS and QnA Maker normalize scores. Eine bestimmte Bewertung kann in einem LUIS-Modell als „gut“, in einem anderen jedoch ganz anders angesehen werden.A certain score may be considered 'good' in one LUIS model but not so in another model.

BeispielcodeSample code

  • Ein Beispiel, das die Erstellung eines einfachen Wissens-Bots mit dem Bot Framework SDK für .NET veranschaulicht, finden Sie auf GitHub im Beispiel für einen Wissens-Bot.For a sample that shows how to create a basic knowledge bot using the Bot Framework SDK for .NET, see the Knowledge Bot sample in GitHub.