你当前正在访问 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 从机器人或其他客户端应用程序接收用户查询。 下图说明了接收用户查询时的过程。

The ranking model process for a user query

排名程序过程

下表对这一过程进行了说明。

步骤 目的
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"
                }
            ]
        }
    ]
}

后续步骤