规划自定义问题解答应用

若要规划自定义问题解答应用,需要了解自定义问题解答如何工作并与其他 Azure 服务交互。 还应扎实地掌握项目概念。

Azure 资源

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

资源 目的
语言资源资源 创作、查询预测终结点和遥测
Azure AI 搜索资源 数据存储和搜索

资源规划

对于管理 API 和预测 API,自定义问题解答吞吐量的上限目前都是每秒 10 个文本记录。 若要以每秒 10 个文本记录作为服务的目标,建议使用 Azure AI 搜索的 S1(1 个实例)SKU。

语言资源

启用了自定义问答功能的单个语言资源可以托管多个项目。 项目的数量由 Azure AI 搜索定价层支持的索引数量确定。 详细了解索引与项目的关系

项目大小和吞吐量

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

项目大小由以下项控制:

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

了解资源选择的影响

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

如果项目不能正常工作,那么通常是因为资源管理不当。

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

Project

项目直接与其语言资源关联。 它包含用于回答查询预测请求的问题和答案 (QnA) 对。

语言注意事项

现在可以在启用了自定义问答功能的同一语言资源中拥有不同语言的项目。 当你创建第一个项目时,可以选择是要将资源用于同一语言(该语言将应用于所有后续项目)的项目,还是要在每次创建项目时都进行语言选择。

引入数据源

自定义问答还支持非结构化内容。 你可以上传包含非结构化内容的文件。

目前我们不支持非结构化内容的 URL。

引入过程会将支持的内容类型转换为 markdown。 对答案的所有进一步编辑都是通过 markdown 来完成。 创建项目后,可以使用富文本创作在 Language Studio 中编辑 QnA 对。

数据格式注意事项

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

机器人个性化

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

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

包含项目的对话流

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

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

与协作者一起创作

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

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

与客户端应用程序集成

与客户端应用程序集成是通过向预测运行时终结点发送查询来完成。 查询通过一个 SDK 或一个针对自定义问题解答 Web 应用终结点的基于 REST 的请求发送到特定项目。

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

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

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

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

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

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

提供默认答案

如果项目找不到答案,则会返回默认答案。 此答案可在“设置”页面上进行配置。

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

预测

预测是来自项目的响应,它包含的信息不仅仅是答案。 若要获取查询预测响应,请使用自定义问题解答 API。

预测分数波动

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

  • 为了响应 top 属性而请求的答案数
  • 各种可用的替代问题
  • 元数据筛选
  • 发送到 testproduction 项目的查询。

使用 Azure Monitor 进行分析

对于自定义问题解答,遥测通过 Azure Monitor 服务来提供。 使用我们最常用的查询来了解指标。

开发生命周期

项目的开发生命周期是持续的:编辑、测试和发布项目。

问答对的项目开发

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

每个对可以包含:

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

DevOps 开发

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

一个项目与语言资源上的所有其他项目共享 Azure AI 搜索索引。 虽然项目按分区进行隔离,但与已发布的项目相比,共享索引可能会导致分数不同。

若要在 testproduction 项目上得到相同的分数,请将语言资源隔离到单个项目中。 在此体系结构中,资源只需要生存时间与隔离的批量测试一样长即可。

后续步骤