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

在 QnA Maker 中测试知识库

测试 QnA Maker 知识库是迭代过程的重要部分,可以提高返回响应的准确性。 可以通过增强的聊天界面测试知识库,该界面还允许你进行编辑。

注意

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

在 QnA Maker 门户中以交互方式测试

  1. 通过在“我的知识库”页上选择知识库名称来访问知识库。
  2. 若要访问“测试”滑出面板,请在应用程序的顶部面板中选择“测试”。
  3. 在文本框中输入查询,然后选择 Enter。
  4. 知识库中最匹配的答案将作为响应返回。

清除测试面板

若要从测试控制台中清除所有输入的测试查询及其结果,请选择“测试”面板左上角的“重新开始”

关闭测试面板

若要关闭“测试”面板,请再次选择“测试”按钮。 当“测试”面板处于打开状态时,无法编辑知识库内容。

检查分数

在“检查”面板中检查测试结果的详细信息。

  1. 打开“测试”滑出面板后,选择“检查”以获取有关该响应的更多详细信息。

    检查响应

  2. 此时将显示“检查”面板。 此面板包括评分最高的意向以及任何已识别的实体。 此面板显示所选陈述的结果。

更正评分最高的答案

如果评分最高的答案不正确,请从列表中选择正确答案,然后选择“保存并训练”

更正评分最高的答案

添加替代问题

可以将问题的替代形式添加到给定答案中。 在文本框中键入备用答案,然后选择 Enter 以添加它们。 选择“保存并训练”以存储更新。

添加替代问题

添加新答案

如果匹配的任何现有答案不正确或知识库中不存在答案(在知识库中找不到良好匹配),则可以添加新答案。

在答案列表的底部,使用文本框输入新答案并按 Enter 进行添加。

选择“保存并训练”保存此答案。 现在,新的问答对已添加到知识库中。

注意

只有在按下“保存并训练”按钮时,才会保存对知识库的所有编辑。

测试已发布的知识库

可以在测试窗格中测试知识库的已发布版本。 发布知识库后,选择“已发布的知识库”框,然后发送查询以从已发布的知识库中获取结果。

针对已发布的知识库进行测试

使用工具进行批处理测试

如果要执行以下操作,请使用批处理测试工具:

  • 确定一组问题的最佳答案和分数
  • 验证一组问题的预期答案

先决条件

登录 QnA Maker 门户

登录 QnA Maker 门户。

根据多轮示例 .docx 文件创建新知识库

  1. 从工具栏中选择“创建知识库”。

  2. 跳过“步骤 1”(因为你应该已经有了一项 QnA Maker 资源),转到“步骤 2”来选择现有的资源信息:

    • Microsoft Entra ID
    • Azure 订阅名称
    • Azure QnA 服务名称
    • 语言 - 英语
  3. 输入名称 Multi-turn batch test quickstart 作为知识库的名称。

  4. 步骤 4 中,按照下表配置设置:

    设置
    允许从 URL、.pdf 或 .docx 文件进行多轮提取。 已选中
    默认答案文本 Batch test - default answer not found.
    + 添加文件 选择先决条件中列出的已下载 .docx 文件。
    聊天内容 选择“专业”
  5. 在“步骤 5”中,选择“创建 KB” 。

    创建过程完成后,门户会显示可编辑的知识库。

保存、训练和发布知识库

  1. 从工具栏选择“保存并训练”,以便保存知识库。

  2. 从工具栏选择“发布”,然后再次选择“发布”,以便发布知识库。 发布以后,即可从公共 URL 终结点对知识库进行查询。 发布完成后,保存在“发布”页上显示的主机 URL 和终结点密钥信息。

    所需数据 示例
    发布的主机 https://YOUR-RESOURCE-NAME.azurewebsites.net
    发布的密钥 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(在 Endpoint 后显示的 32 个字符的字符串)
    应用 ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(在 POST 中显示的 36 个字符的字符串)

使用问题 ID 创建批量测试文件

若要使用批量测试工具,请通过文本编辑器创建名为 batch-test-data-1.tsv 的文件。 此文件应采用 UTF-8 format 格式,并且需通过制表符隔离以下列。

TSV 输入文件字段 说明 示例
知识库 ID 在“发布”页上找到的知识库 ID。 通过在单个文件中使用不同的知识库 ID,对单个文件中同一服务的多个知识库同时进行测试。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(在 POST 中显示的 36 个字符的字符串)
问题 用户会输入的问题文本。 最多 1,000 个字符。 How do I sign out?
元数据标记 可选 topic:power 使用 key:value 格式
Top 参数 可选 25
预期的答案 ID 可选 13

对于此知识库,请只将 2 个必需列的 3 行添加到文件。 第一个列是知识库 ID,第二个列应该是以下问题列表:

第 2 列 - 问题
Use Windows Hello to sign in
Charge your Surface Pro 4
Get to know Windows 10

这些问题是知识库中原封不动的措辞,应该返回 100 作为置信度分数。

接下来,请使用同一知识库 ID 添加一些与这些问题类似的问题(但并不是与随后的 3 行问题完全相同):

第 2 列 - 问题
What is Windows Hello?
How do I charge the laptop?
What features are in Windows 10?

注意

确保仅使用制表符分隔符来分隔每个列。 前导空格或尾随空格会添加到列数据,当类型或大小不正确时会导致程序引发异常。

在 Excel 中打开时,批量测试文件如下图所示。 为了安全起见,已将知识库 ID 替换为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。 进行你自己的批量测试时,请确保列显示你的知识库 ID。

从批量测试输入第一版 .tsv 文件

测试批处理文件

在命令行处使用以下 CLI 格式运行批量测试程序。

YOUR-RESOURCE-NAMEENDPOINT-KEY 替换为你自己的服务名称值和终结点密钥值。 这些值可以在 QnA Maker 门户的“设置”页上找到。

batchtesting.exe batch-test-data-1.tsv https://YOUR-RESOURCE-NAME.azurewebsites.net ENDPOINT-KEY out.tsv

测试完成后,会生成 out.tsv 文件:

从批量测试输出第一版 .tsv 文件

为了安全起见,已将知识库 ID 替换为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。 进行你自己的批量测试时,此列会显示你的知识库 ID。

第 4 列中置信度分数的测试输出显示,头 3 个问题按预期返回了分数 100,因为每个问题与其在知识库中显示的完全相同。 最后 3 个问题包含新的有关问题的措辞,不返回 100 作为置信度分数。 若要提高测试和用户的分数,需向知识库添加更多备用问题。

使用可选字段进行测试

了解格式和流程以后,即可生成测试文件,以便通过数据源(例如聊天日志)针对知识库运行测试。

由于数据源和流程已自动化,因此可以使用不同的设置多次运行测试文件,以便确定正确的值。

例如,如果你有一个聊天日志且希望确定哪个聊天日志文本适用于哪些元数据字段,则请创建一个测试文件并设置每个行的元数据字段。 运行测试,然后查看与元数据匹配的行。 通常情况下,匹配结果应该为正,但应查看假正结果。 假正是指与元数据匹配但基于不应匹配的文本的行。

使用输入批量测试文件中的可选字段

通过以下图表了解如何查找可选数据的字段值。

列号 可选列 数据位置
3 metadata 针对现有的key:value对导出现有的知识库。
4 top 建议使用默认值 25
5 问答集 ID 针对 ID 值导出现有的知识库。 另请注意,ID 已在输出文件中返回。

向知识库添加元数据

  1. 在 QnA 门户中的“编辑”页上,向以下问题添加元数据 topic:power

    问题
    Charge your Surface Pro 4
    Check the battery level

    两个 QnA 对已设置元数据。

    提示

    若要查看每个集的元数据和 QnA ID,请导出知识库。 选择“设置”页,然后选择以 .xls 文件形式“导出”。 找到此下载的文件,使用 Excel 将其打开,查看其中的元数据和 ID。

  2. 依次选择“保存并训练”、“发布”页、“发布”按钮。 这些操作使更改适用于批量测试。 从“设置”页下载知识库。

    下载的文件有适用于元数据的正确格式,以及正确的问答集 ID。 在下一部分使用这些字段

    导出的包含元数据的知识库

创建另一个批量测试

有两个用于批量测试的主要方案:

  • 处理聊天日志文件 - 确定上一个未见问题的排名最靠前的答案 - 最常见的情况是你需要处理查询的日志文件,例如某个聊天机器人的用户问题。 只使用所需列创建批处理文件测试。 测试会返回每个问题的排名最靠前的答案。 这并不意味着排名最靠前的答案是正确答案。 完成此测试以后,请转到验证测试。
  • 验证测试 - 验证预期的答案。 此测试要求批量测试中的所有问题和匹配的预期答案均已验证。 这可能需要进行一些手动处理。

以下过程假设方案是处理聊天日志

  1. 创建新的批量测试文件,使之包括可选数据 batch-test-data-2.tsv。 添加来自原始批量测试输入文件中的 6 行,然后为每行添加元数据、top 值和 QnA 对 ID。

    若要模拟按照知识库检查聊天日志中的新文本这一自动化过程,请将每个列的元数据设置为同一值:topic:power

    从批量测试输入第二版 .tsv 文件

  2. 再次运行测试,更改输入和输出文件的名称,表明这是第二次测试。

    从批量测试输出第二版 .tsv 文件

测试结果和自动测试系统

此测试输出文件可以作为自动持续测试管道的一部分进行分析。

此特定测试输出应这样解读:每一行都使用元数据进行了筛选,由于每一行都与知识库中的元数据不匹配,因此会返回这些不匹配行的默认答案(“no good match found in kb”)。 那些匹配的行则返回 QnA ID 和分数。

所有行都返回了标签“incorrect”,因为没有任何行与预期的答案 ID 匹配。

你应该可以通过这些结果了解到,你可以采用聊天日志并使用文本作为每行的查询。 在不了解数据的情况下,可以通过结果了解数据的大量相关信息,方便以后使用:

  • 元数据
  • QnA ID
  • score

使用元数据进行筛选是否有利于测试? 是/否。 测试系统应该为每个元数据对创建测试文件,并创建没有元数据对的测试。

清理资源

如果不打算继续测试知识库,请删除批处理文件工具和测试文件。

如果不打算继续使用此知识库,请按以下步骤删除知识库:

  1. 在 QnA Maker 门户中,从顶部菜单选择“我的知识库”。
  2. 在知识库列表中,选择本快速入门的知识库所在行的“删除”图标。

有关该工具的参考文档包括:

  • 该工具的命令行示例
  • TSV 输入和输出文件的格式

后续步骤