【问题标题】:QNA Maker not returning exact matchesQNA Maker 不返回完全匹配
【发布时间】:2019-10-03 21:02:34
【问题描述】:

QNA Maker 未从知识库返回精确匹配。

所以我们一直在使用 botbuilder-ai 库来调用 QNA 制造商。但是 QNA Maker 没有返回知识库中的完全匹配。但是,如果我在 qnamaker.ai 门户的测试功能中检查它,它就可以工作。

这是我用来提取结果的代码。

const this.qnaRecognizer = new QnAMaker(
                {
                    knowledgeBaseId: keyvault.QnAMakerSecret.knowledgebaseID,
                    endpointKey: keyvault.QnAMakerSecret.qnaAuthKEY,
                    host: keyvault.QnAMakerSecret.qnaEndPointHost,
                },
                {
                    scoreThreshold: QNA_CONFIDENCE_THRESHOLD,
                    top: QNA_NUM_OF_RESULTS,
                }
            );
const qnaResult = await this.qnaRecognizer.getAnswers(step.context);

正如预期的那样,它会调用 QNA Maker 的端点并返回结果。相反,它返回一个空白数组。

现在,我监控了 qnamaker.ai 调用,并注意到当它们调用 API 时,它们又传递了一个参数,即 isTest = true

结果如下:

没有 isTest = true

URL: https://qnamaker-host.azurewebsites.net/qnamaker/knowledgebases/<kbid>/generateAnswer
Method: POST
Result: {
    "answers": [
        {
            "questions": [],
            "answer": "No good match found in KB.",
            "score": 0,
            "id": -1,
            "source": null,
            "metadata": []
        }
    ],
    "debugInfo": null
}

用 isTest = true

URL: https://qnamaker-host.azurewebsites.net/qnamaker/knowledgebases/<kbid>/generateAnswer
Method: POST
Result: {
    "answers": [
        {
            "questions": [
                "Who are you?"
            ],
            "answer": "I am an intelligent bot",
            "score": 100,
            "id": 2,
            "source": "Editorial",
            "metadata": [
                {
                    "name": "_id",
                    "value": "<removed>"
                }
            ],
            "context": {
                "isContextOnly": false,
                "prompts": []
            }
        }
    ],
    "debugInfo": null
}

现在,在这种情况下,如果不设置 isTest = true,我应该会期待相同的行为。此外,在每个 API 中,我都无法通过 isTest = true,因为我直接使用他们的库来执行此操作。

有人可以帮忙吗? 提前致谢。

【问题讨论】:

    标签: node.js azure azure-cognitive-search qnamaker


    【解决方案1】:

    最可能的原因是你没有publish the knowledge base

    使用"isTest": true,您请求的是测试知识库而不是已发布的知识库。有关详细信息,请参阅此document

    更新:

    当资源中存在多个 KB 时,QnA Maker 存在设计限制,测试环境会受到其他 KB 的影响。生产环境与其他 KB 隔离。这是因为 Azure 搜索索引在测试环境中的 KB 之间共享。一种解决方法是在使用测试环境时资源中只有 1 KB。

    【讨论】:

    • @DhrumanBhadeshiya 资源中是否存在多个 KB?如果是这样,请参阅我的更新答案。
    • 我在这里有点困惑。 QNA Maker的生产环境和测试环境是什么意思?有什么开关可以改变吗?
    • 另外,我没有在我的机器人中使用测试环境。我的机器人正在调用生产环境本身。虽然我没有从生产 KB 中得到结果。
    • @DhrumanBhadeshiya 您的资源中有多个 KB 吗?是的,如果你没有使用 IsTest=true,它会调用生产环境
    • 是的,我在一个资源中有多个 KB。而且我没有从我的机器人中使用 isTest=true 。我只是在调试。但即使在发布机器人并且不使用 isTest=true 之后,我也没有得到结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多