Freigeben über


Abrufen einer Antwort aus einer QNA Maker-Wissensdatenbank

Hinweis

Der QnA Maker-Dienst wird am 31. März 2025 außer Betrieb gesetzt. Eine neuere Version der Funktionalität „Fragen und Antworten“ ist jetzt als Teil von Azure KI Language verfügbar. Antworten auf Fragen innerhalb des Sprachdiensts finden Sie unter Fragen und Antworten. Ab dem 1. Oktober 2022 können Sie keine neuen QnA Maker-Ressourcen mehr erstellen. Informationen zum Migrieren vorhandener QnA Maker-Wissensdatenbanken für Fragen und Antworten finden Sie im Migrationsleitfaden.

Hinweis

Diese Dokumentation gilt nicht für das neueste Release. Informationen zur Verwendung der neuesten Fragen-und-Antworten-API finden Sie im Erstellungshandbuch für Fragen und Antworten.

In diesem Schnellstart auf cURL-Basis wird Schritt für Schritt erläutert, wie Sie eine Antwort aus einer Wissensdatenbank abrufen.

Voraussetzungen

  • Sie benötigen Folgendes:
    • Neueste Version von cURL.
    • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Eine über das Azure-Portal erstellte QnA Maker-Ressource. Merken Sie sich Ihre Microsoft Entra ID, das Abonnement und den QnA-Ressourcennamen, die Sie beim Erstellen der Ressource ausgewählt haben.
  • Eine trainierte und veröffentlichte Wissensdatenbank mit Fragen und Antworten, die in der vorherigen Schnellstartanleitung erstellt und mit Metadaten und Smalltalk konfiguriert wurde.

Hinweis

Wenn Sie bereit sind, eine Antwort auf eine Frage aus Ihrer Wissensdatenbank zu generieren, müssen Sie Ihre Wissensdatenbank trainieren und veröffentlichen. Wenn Ihre Wissensdatenbank veröffentlicht wird, werden auf der Seite Veröffentlichen die HTTP-Anforderungseinstellungen zum Generieren einer Antwort angezeigt. Die Registerkarte cURL enthält die Einstellungen, die zum Generieren einer Antwort über das Befehlszeilentool erforderlich sind.

Filtern von Antworten mithilfe von Metadaten

Verwenden Sie die Wissensdatenbank aus der vorherigen Schnellstartanleitung, um eine Antwort auf der Grundlage von Metadaten abzufragen.

  1. Wählen Sie auf der Seite Einstellungen der Wissensdatenbank die Registerkarte cURL aus, um einen cURL-Beispielbefehl anzuzeigen, mit dem eine Antwort auf der Grundlage der Wissensdatenbank generiert wird.

  2. Kopieren Sie den Befehl in eine Bearbeitungsumgebung (beispielsweise eine Textdatei), um ihn zu bearbeiten. Bearbeiten Sie den Fragewert so, dass die Metadaten von service:qna_maker als Filter für die Frage-Antwort-Paare verwendet werden.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'top':30, 'question':'size','strictFilters': [{'name':'service','value':'qna_maker'}]}"
    

    Die Frage ist nur ein einzelnes Wort (size), wodurch jedes der beiden Frage-Antwort-Paare zurückgegeben werden kann. Das Array strictFilters gibt die Antwort aus und reduziert sie ausschließlich auf die qna_maker-Antworten.

  3. Die Ausgabe enthält nur die Antwort, die den Filterkriterien entspricht. Die folgende cURL-Antwort wurde aus Gründen der Lesbarkeit formatiert:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Wenn ein Frage-Antwort-Paar nicht mit dem Suchbegriff, aber mit dem Filter übereinstimmt, wird es nicht zurückgegeben. Stattdessen wird die allgemeine Antwort No good match found in KB. zurückgegeben.

Verwenden der Abfrageeigenschaft „debug“

Hinweis

Es wird nicht empfohlen, die debug-Eigenschaft für Abhängigkeiten zu verwenden. Diese Eigenschaft wurde hinzugefügt, um dem Produktteam bei der Problembehandlung zu helfen.

Anhand von Debuginformationen können Sie besser nachvollziehen, wie die zurückgegebene Antwort ermittelt wurde. Dies ist zwar hilfreich, aber nicht unbedingt erforderlich. Wenn Sie eine Antwort mit Debuginformationen generieren möchten, fügen Sie die Eigenschaft debug hinzu:

Debug: {Enable:true}
  1. Bearbeiten Sie den cURL-Befehl, um die debug-Eigenschaft einzuschließen und weitere Informationen anzuzeigen.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'Debug':{'Enable':true}}"
    
  2. Die Antwort enthält die relevanten Informationen über die Antwort. In der folgenden JSON-Ausgabe wurden einige Debugdetails durch Auslassungspunkte ersetzt, um die Ausgabe zu verkürzen.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Verwenden der Testversion der Wissensdatenbank

Wenn Sie eine Antwort von der Testversion der Wissensdatenbank erhalten möchten, verwenden Sie die Texteigenschaft isTest.

Die Eigenschaft ist ein boolescher Wert.

isTest:true

Der cURL-Befehl sieht wie folgt aus:

curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'IsTest':true}"

In der JSON-Antwort wird das gleiche Schema verwendet wie in der Abfrage der veröffentlichten Wissensdatenbank.

Hinweis

Da der Testindex von allen Wissensdatenbanken in der Ressource genutzt wird, kann es zu geringfügigen Abweichungen kommen, selbst wenn die Testversion und die veröffentlichte Version der Wissensdatenbank exakt gleich sind.

Abfragen einer Smalltalk-Antwort mithilfe von cURL

  1. Verwenden Sie im cURL-fähigen Terminal eine Benutzeraussage zur Beendigung der Bot-Konversation (etwa Thank you als Frage). Es müssen keine weiteren Eigenschaften festgelegt werden.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'thank you'}"
    
  2. Führen Sie den cURL-Befehl aus, um die JSON-Antwort mit der Bewertung und der Antwort auf die Frage zu erhalten.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Da die Frage Thank you exakt einer Smalltalk-Frage entspricht, ist QnA Maker zu 100 Prozent überzeugt. QnA Maker hat auch alle dazugehörigen Fragen sowie die Metadateneigenschaft mit den Informationen zum Metadatentag für Smalltalk zurückgegeben.

Verwenden von Schwellenwert und Standardantwort

Sie können einen Mindestschwellenwert für die Antwort anfordern. Sollte der Schwellenwert nicht erreicht werden, wird die Standardantwort zurückgegeben.

  1. Fügen Sie die Eigenschaft threshold hinzu, um für size eine Antwort mit einem Schwellenwert von mindestens 80 Prozent anzufordern. Diese Antwort sollte von der Wissensdatenbank nicht gefunden werden, da die Frage mit 71 Prozent bewertet wurde. Stattdessen wird die Standardantwort zurückgeben, die Sie beim Erstellen der Wissensdatenbank angegeben haben.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':80.00}"
    
  2. Führen Sie den cURL-Befehl aus, um die JSON-Antwort zu erhalten.

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    QnA Maker hat als Bewertung den Wert 0 (nicht überzeugt) zurückgegeben. Darüber hinaus wurde die Standardantwort zurückgegeben.

  3. Ändern Sie den Schwellenwert in 60 Prozent, und wiederholen Sie die Abfrage:

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':60.00}"
    

    Die Antwort wurde vom zurückgegebenen JSON-Code gefunden.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Verwenden unstrukturierter Datenquellen

Wir unterstützen jetzt die Möglichkeit, unstrukturierte Dokumente hinzuzufügen, die nicht zum Extrahieren von Fragen und Antworten verwendet werden können. Der Benutzer kann wählen, ob beim Abrufen einer Antwort auf die Abfrage unstrukturierte Datasets in die GenerateAnswer-API aufgenommen werden sollen. Wir unterstützen keine unstrukturierten Datasets im allgemein verfügbaren Dienst. Diese Option ist nur in der benutzerdefinierten Fragebeantwortung enthalten.

In diesem Schnellstart für die REST-Clienterweiterung von Visual Studio Code wird Schritt für Schritt erläutert, wie Sie eine Antwort aus einer Wissensdatenbank abrufen.

Voraussetzungen

  • Eine über das Azure-Portal erstellte QnA Maker-Ressource. Merken Sie sich Ihre Microsoft Entra ID, das Abonnement und den QnA-Ressourcennamen, die Sie beim Erstellen der Ressource ausgewählt haben.
  • Eine trainierte und veröffentlichte Wissensdatenbank mit Fragen und Antworten, die in der vorherigen Schnellstartanleitung erstellt und mit Metadaten und Smalltalk konfiguriert wurde.

Hinweis

Wenn Sie bereit sind, eine Antwort auf eine Frage aus Ihrer Wissensdatenbank zu generieren, müssen Sie Ihre Wissensdatenbank trainieren und veröffentlichen. Wenn Ihre Wissensdatenbank veröffentlicht wird, werden auf der Seite Veröffentlichen die HTTP-Anforderungseinstellungen zum Generieren einer Antwort angezeigt. Auf der Registerkarte Postman werden die erforderlichen Einstellungen zum Generieren einer Antwort angezeigt.

Einrichten der REST-Clienterweiterung von Visual Studio Code für Anforderungen

In dieser Schnellstartanleitung werden die gleichen Einstellungen für die POST-Anforderung mit der REST-Clienterweiterung von Visual Studio Code verwendet. Anschließend wird der an den Dienst gesendete JSON-Code des POST-Texts basierend auf der gewünschten Abfrage konfiguriert.

Verwenden Sie dieses Verfahren, um die REST-Clienterweiterung von Visual Studio Code zu konfigurieren, und lesen Sie dann die einzelnen nachfolgenden Abschnitte, um den JSON-Code für den POST-Text zu konfigurieren.

  1. Wählen Sie auf der Seite Einstellungen der Wissensdatenbank die Registerkarte Postman aus. Dort wird die Konfiguration zum Generieren einer Antwort auf der Grundlage der Wissensdatenbank angezeigt. Kopieren Sie die folgenden Informationen zur Verwendung in der REST-Clienterweiterung von Visual Studio Code.

    Name Einstellung Zweck und Wert
    POST /knowledgebases/replace-with-your-knowledge-base-id/generateAnswer HTTP-Methode und Route für die URL.
    Host https://YOUR-RESOURCE_NAME.azurewebsites.net/qnamaker Der URL-Host. Verketten Sie den Host- und den POST-Wert, um die vollständige generateAnswer-URL zu erhalten.
    Authorization EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Headerwert für die Autorisierung der an Azure gerichteten Anforderung
    Content-type application/json Headerwert für Ihren Inhalt.
    {"question":"<Your question>"} Text der POST-Anforderung als JSON-Objekt. Dieser Wert ändert sich in jedem der folgenden Abschnitte abhängig vom Zweck der jeweiligen Abfrage.

    Wichtig

    Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

  2. Verwenden Sie die REST-Clienterweiterung von Visual Studio Code, um eine neue grundlegende POST-Anforderung mit den Einstellungen Ihrer veröffentlichten Wissensdatenbank zu erstellen. Ändern Sie in den folgenden Abschnitten den JSON-Code im POST-Text, um die Abfrage für Ihre Wissensdatenbank zu ändern.

Filtern von Antworten mithilfe von Metadaten

In einer vorherigen Schnellstartanleitung wurden zwei Frage-Antwort-Paaren Metadaten zur Unterscheidung von zwei Fragen hinzugefügt. Fügen Sie die Metadaten der Abfrage hinzu, um den Filter auf das relevante Frage-Antwort-Paar zu beschränken.

  1. Ändern Sie in der REST-Clienterweiterung von Visual Studio Code nur den Abfrage-JSON-Code, indem Sie die Eigenschaft strictFilters mit dem Name/Wert-Paar service:qna_maker hinzufügen. Der JSON-Code im Text sollte wie folgt aussehen:

    {
        'question':'size',
        'strictFilters': [
            {
                'name':'service','value':'qna_maker'
            }
        ]
    }
    

    Die Frage ist nur ein einzelnes Wort (size), wodurch jedes der beiden Frage-Antwort-Paare zurückgegeben werden kann. Das Array strictFilters gibt die Antwort aus und reduziert sie ausschließlich auf die qna_maker-Antworten.

  2. Die Ausgabe enthält nur die Antwort, die den Filterkriterien entspricht.

    Die folgende Antwort wurde formatiert, um die Lesbarkeit zu verbessern:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Wenn ein Frage-Antwort-Paar nicht mit dem Suchbegriff, aber mit dem Filter übereinstimmt, wird es nicht zurückgegeben. Stattdessen wird die allgemeine Antwort No good match found in KB. zurückgegeben.

Verwenden der Abfrageeigenschaft „debug“

Hinweis

Es wird nicht empfohlen, die debug-Eigenschaft für Abhängigkeiten zu verwenden. Diese Eigenschaft wurde hinzugefügt, um dem Produktteam bei der Problembehandlung zu helfen.

Anhand von Debuginformationen können Sie besser nachvollziehen, wie die zurückgegebene Antwort ermittelt wurde. Dies ist zwar hilfreich, aber nicht unbedingt erforderlich. Wenn Sie eine Antwort mit Debuginformationen generieren möchten, fügen Sie die Eigenschaft debug hinzu:

  1. Ändern Sie in der REST-Clienterweiterung von Visual Studio Code nur den JSON-Textkörper, indem Sie die Eigenschaft debug hinzufügen. Der JSON-Code sollte wie folgt aussehen:

    {
        'question':'size',
        'Debug': {
            'Enable':true
        }
    
    }
    
  2. Die Antwort enthält die relevanten Informationen über die Antwort. In der folgenden JSON-Ausgabe wurden einige Debugdetails durch Auslassungspunkte ersetzt.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Verwenden der Testversion der Wissensdatenbank

Wenn Sie eine Antwort von der Testversion der Wissensdatenbank erhalten möchten, verwenden Sie die Texteigenschaft isTest.

Ändern Sie in der REST-Clienterweiterung von Visual Studio Code nur den JSON-Textkörper, indem Sie die Eigenschaft isTest hinzufügen. Der JSON-Code sollte wie folgt aussehen:

{
    'question':'size',
    'isTest': true
}

In der JSON-Antwort wird das gleiche Schema verwendet wie in der Abfrage der veröffentlichten Wissensdatenbank.

Hinweis

Da der Testindex von allen Wissensdatenbanken in der Ressource genutzt wird, kann es zu geringfügigen Abweichungen kommen, selbst wenn die Testversion und die veröffentlichte Version der Wissensdatenbank exakt gleich sind.

Abfragen einer Smalltalk-Antwort

  1. Ändern Sie in der REST-Clienterweiterung von Visual Studio Code nur den JSON-Textkörper in eine die Unterhaltung beendende Benutzeranweisung. Der JSON-Code sollte wie folgt aussehen:

    {
        'question':'thank you'
    }
    
  2. Die Antwort enthält die Bewertung und die Antwort.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Da die Frage Thank you exakt einer Smalltalk-Frage entspricht, ist QnA Maker zu 100 Prozent überzeugt. QnA Maker hat auch alle dazugehörigen Fragen sowie die Metadateneigenschaft mit den Informationen zum Metadatentag für Smalltalk zurückgegeben.

Verwenden von Schwellenwert und Standardantwort

Sie können einen Mindestschwellenwert für die Antwort anfordern. Sollte der Schwellenwert nicht erreicht werden, wird die Standardantwort zurückgegeben.

  1. Ändern Sie in der REST-Clienterweiterung von Visual Studio Code nur den JSON-Textkörper in eine die Unterhaltung beendende Benutzeranweisung. Der JSON-Code sollte wie folgt aussehen:

    {
        'question':'size',
        'scoreThreshold':80.00
    }
    

    Diese Antwort sollte von der Wissensdatenbank nicht gefunden werden, da die Frage mit 71 Prozent bewertet wurde. Stattdessen sollte die Standardantwort zurückgeben werden, die Sie beim Erstellen der Wissensdatenbank angegeben haben.

    Die zurückgegebene JSON-Antwort sieht wie folgt aus (einschließlich Bewertung und Antwort):

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    QnA Maker hat als Bewertung den Wert 0 (nicht überzeugt) zurückgegeben. Darüber hinaus wurde die Standardantwort zurückgegeben.

  2. Ändern Sie den Schwellenwert in 60 Prozent, und wiederholen Sie die Abfrage:

    {
        'question':'size',
        'scoreThreshold':60.00
    }
    

    Die Antwort wurde vom zurückgegebenen JSON-Code gefunden.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Verwenden Sie unstrukturierte Datenquellen.

Wir unterstützen jetzt die Möglichkeit, unstrukturierte Dokumente hinzuzufügen, die nicht zum Extrahieren von Fragen und Antworten verwendet werden können. Der Benutzer kann wählen, ob beim Abrufen einer Antwort auf die Abfrage unstrukturierte Datasets in die GenerateAnswer-API aufgenommen werden sollen. Unstrukturierte Datensätze werden im allgemein verfügbaren Dienst nicht unterstützt. Dies wird nur bei der benutzerdefinierten Fragebeantwortung unterstützt.

Nächste Schritte

Weitere Informationen zu Metadaten: