共用方式為

将多个类别添加到 FAQ 机器人

本教程中,您将学习如何:

  • 使用元数据将项目和问题答案对标记为不同的类别
  • 为每个域创建单独的项目
  • 为每个域创建单独的语言资源

生成 FAQ 机器人时,可能会遇到需要跨多个域处理查询的用例。 假设Microsoft营销团队希望构建一个客户支持机器人,该机器人可回答多个 Surface 产品的常见用户查询。 为了简单起见,我们使用两个 FAQ URL( Surface PenSurface Earbuds )来创建项目。

使用特定于域的元数据创建项目

内容作者可以使用文档提取问题答案对,或向项目添加自定义问答对。 若要将问题和答案分组到特定域或类别中,可以添加元数据。

对于 Surface 产品上的机器人,可以按照以下步骤创建一个机器人来回答两种产品类型的查询:

  1. 通过选择 “添加源>URL> ”,然后在添加每个 URL 后 添加所有 URL,将以下常见问题解答 URL 添加为源:

    Surface 触控笔常见问题解答
    Surface Earbuds 常见问题解答

  2. 在此项目中,我们为两个不同的产品设置了一组问答对。 我们的目标是明确区分这些产品,以便用户可以在特定产品的问答集中搜索相关响应。

在此示例中,我们添加了一个元数据,其中包含 产品 作为密钥, surface_pensurface_earbuds 作为值(无论适用)。 可以扩展此示例以提取多个产品的数据,并为每个产品添加不同的值。

  1. 现在,为了限制系统在特定产品中搜索响应,需要在自定义问答 REST API 中将该产品作为筛选器传递。

    可以从“部署项目”窗格检索 REST API 预测 URL:

    在 API 调用的 JSON 正文中,我们传递 了surface_pen 作为元数据 产品的值。 因此,系统仅查找具有相同元数据的 QnA 对中的响应。

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    可以通过以下方式根据用户输入获取元数据值:

    • 通过机器人客户端显式将域作为用户的输入。 例如,启动对话时,可以将产品类别作为用户的输入。

      获取元数据输入

    • 基于机器人上下文隐式标识域。 例如,如果前面的问题在特定 Surface 产品上,客户端可以将其保存为上下文。 如果用户在下一个查询中未指定产品,则可以将机器人上下文作为元数据传递给生成答案 API。

      传递上下文

    • 从用户查询中提取实体,以标识要用于元数据筛选器的域。 可以使用其他 Azure AI 服务 ,例如命名实体识别(NER)聊天语言理解 进行实体提取。

      从查询中提取元数据

项目有多大?

最多可以向单个项目添加 50000 个问答对。 如果数据超过 50,000 个问答对,应考虑拆分项目。

为每个域创建单独的项目

还可以为每个域创建一个单独的项目,并单独维护项目。 所有 API 要求用户传递项目名称,以便对项目进行任何更新或获取用户问题的答案。

当服务收到用户问题时,需要传递 projectName 显示的 REST API 终结点,以便从相关项目中提取响应。 可以在“获取预测 URL”下的“部署项目”页中找到 URL:

https://chinaeast2.api.cognitive.azure.cn/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

为每个域创建单独的语言资源

假设Microsoft营销团队希望构建一个客户支持机器人来回答 Surface 和 Xbox 产品上的用户查询。 他们计划分配不同的团队来访问 Surface 和 Xbox 上的项目。 在这种情况下,应创建两个自定义问题解答资源-一个用于 Surface,另一个用于 Xbox。 可以为访问同一资源的用户定义不同的角色。