你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
查询知识库以获取答案
必须发布知识库。 发布后,将使用 generateAnswer API 在运行时预测终结点上查询知识库。 查询包含问题文本和其他设置,以帮助 QnA Maker 选择答案的最佳匹配项。
注意
QnA Maker 服务将于 2025 年 3 月 31 日停用。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。 有关语言服务中的问答功能,请参阅问答。 从 2022 年 10 月 1 日开始,你将无法创建新的 QnA Maker 资源。 有关将现有 QnA Maker 知识库迁移到问题解答的信息,请参阅迁移指南。
QnA Maker 如何处理用户查询以选择最佳答案
训练和发布的 QnA Maker 知识库通过 GenerateAnswer API 从机器人或其他客户端应用程序接收用户查询。 下图说明了接收用户查询时的过程。
排名程序过程
下表对这一过程进行了说明。
步骤 | 目的 |
---|---|
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"
}
]
}
]
}