查詢知識庫以取得答案

知識庫必須發佈。 發佈之後,就能使用 generateAnswer API,在執行階段預測端點上查詢知識庫。 此查詢包括問題文字和其他設定,可協助 QnA Maker 選取最可能與答案相符的項目。

注意

QnA Maker 服務即將於 2025 年 3 月 31 日淘汰。 較新版的問題和解答功能現在隨附於 Azure AI 語言。 如需瞭解語言服務內的問題解答功能,請參閱問題解答。 從 2022 年 10 月 1 日開始,您將無法建立新的 QnA Maker 資源。 如需將現有的 QnA Maker 知識庫移轉至問題解答的相關資訊,請參閱移轉指南

QnA Maker 如何處理使用者查詢來選取最佳答案

已定型且發佈的 QnA Maker 知識庫會在 GenerateAnswer API 中,從 Bot 或其他用戶端應用程式中收到使用者查詢。 下圖說明收到使用者查詢時的程序。

使用者查詢的排名模型流程

排名工具程序

下表說明此程序。

步驟 目的
1 用戶端應用程式會將使用者查詢傳送到 GenerateAnswer API
2 QnA Maker 使用語言偵測、拼字檢查及斷詞工具來對使用者查詢進行前置處理。
3 此前置處理可用來改變使用者查詢,以取得最佳搜尋結果。
4 這個已改變的查詢會傳送至 Azure AI 搜尋服務索引,以接收前 top 個結果數目。 如果這些結果中沒有正確的答案,請稍微提高 top 的值。 一般來說,將 top 的值設為 10,在 90% 的查詢中都適用。 Azure 搜尋會在此步驟中篩選停用字詞 (英文)。
5 QnA Maker 使用語法和語意型特徵化,來判斷使用者查詢與所擷取 QnA 結果之間的相似性。
6 機器學習的排名工具模型會使用步驟 5 中的不同功能,來判斷信賴分數和新的排名順序。
7 新的結果會以排名的順序傳回到用戶端應用程式。

使用的功能包括但不限於文字層級的語意、語料庫中的詞彙層級重要性,以及深入學習的語意模型,以判斷兩個文字字串之間的相似性和相關性。

使用端點的 HTTP 要求和回應

當您發佈知識庫時,此服務會建立可整合到您應用程式的 REST 架構 HTTP 端點,通常是聊天機器人。

用來產生答案的使用者查詢要求

使用者查詢是終端使用者對於知識庫所提出的問題,例如 How do I add a collaborator to my app?。 查詢通常採用的是自然語言格式或代表問題的一些關鍵字,例如 help with collaborators。 查詢會在您的用戶端應用程式中,從 HTTP 要求傳送到您的知識庫。

{
    "question": "How do I add a collaborator to my app?",
    "top": 6,
    "isTest": true,
    "scoreThreshold": 20,
    "strictFilters": [
    {
        "name": "QuestionType",
        "value": "Support"
    }],
    "userId": "sd53lsY="
}

您可以透過設定屬性 (例如 scoreThresholdtopstrictFilters) 來控制回應。

搭配多回合功能使用交談內容,可讓交談持續改進問題和答案,以找出最終的正確答案。

來自可產生答案之呼叫的回應

HTTP 回應是根據最符合指定使用者查詢的項目,從知識庫擷取的答案。 回應會包括答案和預測分數。 如果您向 top 屬性要求一個以上的最佳答案,您就會得到一個以上的最佳答案,各有一個分數。

{
    "answers": [
        {
            "questions": [
                "How do I add a collaborator to my app?",
                "What access control is provided for the app?",
                "How do I find user management and security?"
            ],
            "answer": "Use the Azure portal to add a collaborator using Access Control (IAM)",
            "score": 100,
            "id": 1,
            "source": "Editorial",
            "metadata": [
                {
                    "name": "QuestionType",
                    "value": "Support"
                },
                {
                    "name": "ToolDependency",
                    "value": "Azure Portal"
                }
            ]
        }
    ]
}

下一步