QNA Maker不返回完全匹配项

时间:2019-05-16 14:35:10

标签: node.js azure azure-search qnamaker

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,因为我直接使用它们的库来执行此操作。

有人可以帮忙吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

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

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

更新

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