查詢知識庫以取得答案
知識庫必須發佈。 發佈之後,就能使用 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="
}
您可以透過設定屬性 (例如 scoreThreshold、top 和 strictFilters) 來控制回應。
搭配多回合功能使用交談內容,可讓交談持續改進問題和答案,以找出最終的正確答案。
來自可產生答案之呼叫的回應
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"
}
]
}
]
}