node.js - QNA Maker 未返回精确匹配项

标签 node.js azure azure-cognitive-search azure-qna-maker

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

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

最佳答案

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

使用"isTest": true,您正在请求测试知识库而不是已发布的知识库。引用这个document了解更多详情。

更新:

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

关于node.js - QNA Maker 未返回精确匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56171009/

相关文章:

c# - Azure 搜索文档添加自定义分析器、分词器和分词过滤器

mongodb - 限制嵌入文档的大小

node.js - Cloudfoundry 上的非 http TCP 连接

azure - 如何在Xamarin移动应用程序中安全地调用具有函数级别授权的Azure Function?

azure - 作为 ARM 部署的一部分,KeyVault API 其余调用失败

Azure 搜索结果突出显示片段

node.js - 将 QnA 用户问题和答案添加到 Node JS 中的 Insights 遥测

node.js - ParseServer 上的 serverURL 和 publicServerURL 之间的区别

azure - 无法将 Azure VMSS 扩展到超过 15 个实例

azure - ARM 模板 listkeys() 无法找到 Azure 搜索