首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QNA制造商没有退回准确的匹配

QNA制造商没有退回准确的匹配
EN

Stack Overflow用户
提问于 2019-05-16 14:35:10
回答 1查看 366关注 0票数 3

QNA制造商并没有从知识库中返回准确的匹配信息。

因此,我们一直在使用僵尸生成器-ai库调用QNA制造商。然而,QNA制造商并没有返回知识库中的精确匹配。但是,如果我检查一下qnamaker.ai门户的测试特性,它就能工作了。

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

代码语言:javascript
复制
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制造商的端点,并将返回结果。相反,它返回一个空白数组。

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

以下是研究结果:

不带isTest =真

代码语言:javascript
复制
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
}

With isTest = true

代码语言:javascript
复制
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,因为我直接使用它们的库来实现这一点。

有人能帮忙吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-05-17 01:29:16

最可能的原因是你没有发布知识库

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

更新:

当一个资源中存在多个QnA时,测试环境会受到其他KBs的影响。生产环境与其他KBs分离。这是由于测试环境中的KBs共享Azure搜索索引。一个解决办法是在使用测试环境时资源中只有一个KB。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56171009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档