你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

规划 QnA Maker 应用

若要规划 QnA Maker 应用,需要了解 QnA Maker 如何工作并与其他 Azure 服务交互。 还应扎实地掌握知识库概念。

注意

QnA Maker 服务将于 2025 年 3 月 31 日停用。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。 有关语言服务中的问答功能,请参阅问答。 从 2022 年 10 月 1 日开始,你将无法创建新的 QnA Maker 资源。 有关将现有 QnA Maker 知识库迁移到问题解答的信息,请参阅迁移指南

Azure 资源

使用 QnA Maker 创建的每个 Azure 资源都具有特定用途。 每个资源都有其自己的用途、限制和定价层。 了解这些资源的功能非常重要,这样便可以在规划过程中使用该知识。

资源 目的
QnA Maker 资源 创作和查询预测
认知搜索资源 数据存储和搜索
应用服务资源和应用计划服务资源 查询预测终结点
Application Insights 资源 查询预测遥测

资源规划

每个资源的免费层 F0 都有效,可以提供创作和查询预测体验。 可以使用此层了解创作和查询预测。 转到生产或实时方案时,请重新评估资源选择。

知识库大小和吞吐量

生成实际应用时,需针对知识库大小和预期查询预测请求规划足够的资源。

知识库大小由以下各项控制:

知识库查询预测请求由 Web 应用计划和 Web 应用控制。 若要规划定价层,请参阅建议的设置

资源共享

如果已使用其中一些资源,则可以考虑共享资源。 查看哪些资源可以共享,了解资源共享是一种高级方案。

在相同 QnA Maker 资源中创建的所有知识库会共享相同测试查询预测终结点。

了解资源选择的影响

适当的资源选择意味着知识库可成功回答查询预测。

如果知识库不能正常工作,那么通常是资源管理不当问题。

资源选择不当需要进行调查来确定需要更改的资源

知识库

知识库直接与其 QnA Maker 资源关联。 它包含用于回答查询预测请求的问题和答案 (QnA) 对。

语言注意事项

在 QnA Maker 资源上创建的第一个知识库会为资源设置语言。 对于一个 QnA Maker 资源,只能使用一种语言。

可以按语言构建 QnA Maker 资源,也可以在将查询发送到查询预测终结点之前,使用翻译器将查询从另一种语言更改为知识库语言。

引入数据源

可以使用以下引入的数据源之一来创建知识库:

  • 公共 URL
  • 专用 SharePoint URL
  • 文件

引入过程会将支持的内容类型转换为 markdown。 对答案的所有进一步编辑都是通过 markdown 来完成。 创建知识库后,可以使用格式文本创作在 QnA Maker 门户中编辑 QnA 对

数据格式注意事项

由于 QnA 对的最终格式是 markdown,因此必须了解 markdown 支持

必须从公共 URL 提供链接图像,才能在 QnA Maker 门户的测试窗格或客户端应用程序中显示这些图像。 QnA Maker 不提供内容身份验证(包括图像)。

机器人个性化

使用chit-chat 将机器人个性化添加到知识库。 这种个性化是通过采用特定对话音调(如专业和友好 )提供的答案来实现的。 此 chit-chat 作为对话集提供,你可以完全控制其添加、编辑和删除。

如果机器人连接到知识库,则建议使用机器人个性化。 即使还连接到其他服务,你也可以选择在知识库中使用 chit-chat,但应查看机器人服务如何进行交互,了解这是否是适合你使用的正确体系结构设计。

包含知识库的对话流

对话流通常以用户的问候语开头,例如 HiHello。 知识库可以使用通用答案(如 Hi, how can I help you)进行回答,也可以提供一系列可供选择的跟进提示以继续进行对话。

你应在设计对话流时考虑循环,使用户知道如何使用你的机器人,而不会在对话中被机器人放弃。 跟进提示提供 QnA 对之间的链接,这样可以实现对话流。

与协作者一起创作

协作者可以是共享知识库应用程序完整开发堆栈的其他开发者,也可以仅限于创作知识库。

知识库创作支持在 Azure 门户中应用的多个基于角色的访问权限,以限制协作者的能力范围。

与客户端应用程序集成

与客户端应用程序集成是通过向预测运行时终结点发送查询来完成。 查询通过 SDK 或基于 REST 的请求发送到特定知识库,以发送给 QnA Maker 的 Web 应用终结点。

若要正确地对客户端请求验证身份,客户端应用程序必须发送正确的凭据和知识库 ID。 如果使用 Azure AI 机器人服务,请在 Azure 门户中将这些设置配置为机器人配置的一部分。

客户端应用程序中的对话流

客户端应用程序(如 Azure 机器人)中的对话流可能在与知识库交互前后需要相应功能。

客户端应用程序是否通过提供处理跟进提示的替代方法或包括 chit-chit 来支持对话流? 如果是这样,请及早设计这些内容,并确保客户端应用程序查询可以由其他服务或是在发送到知识库时进行正确处理。

在 QnA Maker 与语言理解 (LUIS) 之间调度

客户端应用程序可以提供多种功能,其中只有一个功能由知识库回答。 其他功能仍然需要了解对话文本,并从中提取含义。

常见客户端应用程序体系结构是结合使用 QnA Maker 和语言理解 (LUIS)。 LUIS 可为任何查询(包括对其他服务的查询)提供文本分类和提取。 QnA Maker 通过知识库提供答案。

在这类共享体系结构方案中,两个服务之间的调度由 Bot Framework 中的调度工具来完成。

来自客户端应用程序的主动学习

QnA Maker 使用主动学习,通过向答案提供替代问题建议来改进知识库。 客户端应用程序负责此主动学习的一部分。 通过对话提示,客户端应用程序可以确定知识库返回了对用户无用的答案,并且可以确定更好的答案。 客户端应用程序需要将该信息发送回知识库以提高预测质量。

提供默认答案

如果知识库找不到答案,则会返回默认答案。 此答案可在 QnA Maker 门户的“设置”页面上或 API 中进行配置。

此默认答案与 Azure 机器人默认答案不同。 在 Azure 门户中,可作为配置设置的一部分来配置 Azure 机器人的默认答案。 在未满足分数阈值时,会返回该答案。

预测

预测是来自知识库的响应,它包含的信息不仅仅是答案。 若要获取查询预测响应,请使用 GenerateAnswer API

预测分数波动

分数可以基于多个因素而变化:

  • 响应 GenerateAnswer 时请求的答案数(使用 top 属性)
  • 各种可用的替代问题
  • 元数据筛选
  • 发送到 testproduction 知识库的查询

有一个两阶段答案排名

  • 认知搜索 - 第一次排名。 将允许的答案数设置得足够高,以便认知搜索可返回最佳答案,然后将其传入 QnA Maker 排名程序。
  • QnA Maker - 第二次排名。 应用特征化和机器学习来确定最佳答案。

服务更新

应用最新运行时更新以自动管理服务更新。

缩放、吞吐量和复原能力

缩放、吞吐量和复原能力取决于 Azure 资源、其定价层和任何周围的体系结构(如流量管理器

使用 Application Insights 进行的分析

对知识库的所有查询都存储在 Application Insights 中。 使用我们最常用的查询来了解指标。

开发生命周期

知识库的开发生命周期是持续的:编辑、测试和发布知识库。

QnA Maker 对的知识库开发

应基于客户端应用程序使用情况设计和开发 QnA 对。

每个对可以包含:

  • 元数据 - 可在查询时进行筛选,以便可以通过有关数据的源、内容、格式和用途的附加信息来标记 QnA 对。
  • 跟进提示 - 通过知识库帮助确定路径,使用户可到达正确的答案。
  • 替代问题 - 重要的是允许进行搜索,以便从不同形式的问题与答案匹配。 主动学习建议转变为替代问题。

DevOps 开发

开发要插入到 DevOps 管道中的知识库需要在批量测试过程中隔离知识库。

一个知识库与 QnA Maker 资源上的所有其他知识库共享认知搜索索引。 虽然知识库按分区进行隔离,但与已发布的知识库相比,共享索引可能会导致分数不同。

若要在 testproduction 知识库上具有相同的分数,请将 QnA Maker 资源隔离到单个知识库中。 在此体系结构中,资源只需要生存时间与隔离的批量测试一样长即可。

后续步骤