我正在Microsoft Azure环境中开发一个机器人,该机器人能够用四种语言回答问题。总体方案如下:将用户的输入提交给Azure TextAnalytics,并使用推导的语言(在认知服务(LUIS和QnA Maker)的帮助下)将它们路由到知识库(以他们的语言)给他们问题的答案。
Qna Maker通过Azure搜索服务管理KB的数据。但是,一旦将一个KB分配给一个KB,就会在后者中创建一个索引(kbId),该索引定义了-我假设-该搜索服务将管理的所有KB的语言。
资源冗余和最重要的是成本变得越来越愚蠢:需要为每种语言创建QnA Maker;每种语言并行提供1个QnA认知服务,1个应用程序服务,1个搜索服务(以及可选的1个应用程序见解)是荒谬的。当然,Azure中必须存在替代方案。但是我发现很难找到它们,因为kbId索引是唯一的,它仅接受一种语言,并且一旦创建就无法更新。
我真的很想知道其他人是否遇到过此类问题。如果存在解决方案(除了昂贵的解决方案可以复制一切),或者如果我可能错过了Azure QnA Maker的某些东西,那么……
非常感谢您的帮助!
答案 0 :(得分:1)
Microsoft提供的文档中有一篇关于该主题的好文章。
它说:
QnA Maker支持多种语言的知识库内容。然而, 每个QnA Maker服务都应保留为一种语言。的 针对特定QnA Maker服务创建了第一个知识库 设置该服务的语言。请参阅此处以获取受支持的列表 语言。
根据数据内容自动识别语言 来源被提取。创建新的QnA Maker服务后, 该服务中的新知识库,您可以验证该语言 已正确设置。
因此,很抱歉,但是,当您说以下内容时,您是对的:
但是,一旦将KB分配给一个,就会创建一个索引(kbId) 在后者中,它定义了-我假设-所有KB的语言 该搜索服务将对其进行管理。
=>您必须在Azure中创建几个 QnA Maker Service ,每种语言都创建一个。
链接:https://docs.microsoft.com/en-us/azure/cognitive-services/QnAMaker/how-to/language-knowledge-base
注意:此链接还提供了一种检查检测到的搜索服务语言的方法
答案 1 :(得分:1)
确实,QnA制造商仅支持您选择的一种语言来创建知识库。
但是可以创建一个支持多种语言的聊天机器人。我们需要使用 Azure文本翻译服务。因此,步骤将是:
请使用以下有用的链接来实现此目的:
https://desflanagan.ie/2016/10/25/build-a-multi-language-bot/
https://docs.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-reference
答案 2 :(得分:0)
在针对三种不同语言实施QnA时,我面临着完全相同的挑战。
文档中有一个更明确的提及:
语言分析器一旦设置就无法更改。此外,语言分析器适用于QnA Maker服务中的所有知识库。如果计划使用不同语言的知识库,则应在单独的QnA Maker服务下创建它们。
来源:https://docs.microsoft.com/en-us/azure/cognitive-services/QnAMaker/overview/languages-supported
我还担心为每个QnA拥有专用实例的成本。这就是为什么我寻求解决方案。
QnA Maker的大部分成本来自以下事实:每个实例下方都有自己的应用程序服务计划,而Azure门户不允许您将新实例指向现有的应用程序服务计划。但是,您可以通过ARM模板执行此操作。
这是我的方法:
也可以通过简单地创建您的第一个QnA Maker实例来存档步骤1和2,该实例创建一个新的资源组和您可以在步骤3中指向的应用程序服务计划。
在我的示例场景中,这导致3个不同的QnA Maker实例在同一App Service计划上运行,至少从UI角度来看,节省了当前服务版本的限制所强制执行的大部分成本。
免责声明::我看不到Microsoft为什么从UI阻止此方案,因此有可能由于某种原因不支持我的解决方案。恕我直言>如果让我做API,就应该支持它。
奖金:还有一个参数文件,用于使用免费层(每个租户只有一个),您可以将其用于测试目的。在这里,我混合了我的知识库,但它们并不关心语言问题,因为它只是用于快速而肮脏的测试。
如果您在使用我的样品时遇到麻烦,请告诉我。
答案 3 :(得分:0)
我遇到了相同的问题,并且-如先前的答案所述-确认此限制。当您将多个知识库分配给同一Azure服务时,链接的Azure搜索服务中的分析器设置将从新索引的第一个知识库中获取。我看不到解决方法。
主要问题是Azure搜索服务-每个租户仅允许一个“免费” SKU,因此这会强制每种语言使用付费实例。在我的环境中,这是一个关键问题,在很多情况下都无法解决(例如,通常您希望有单独的实例进行测试和生产)。
从技术角度来看,我不清楚为什么存在此限制。每个知识库都有一个独立的索引,您始终会向QnA Maker服务查询特定的知识库。因此,应该有可能为Azure服务中的每个索引定义分析器配置。我为此创建了一个功能请求:https://feedback.azure.com/forums/34192--general-feedback/suggestions/38372725-qna-maker-support-knowledge-bases-for-different-l。随便投票吧。
答案 4 :(得分:0)
我不知道您是否找到解决方案,但是我所做的是创建新的QnA制造商服务并将 Web应用程序与其他QnA制造商服务计划合并,因为文件数量将被分割我能够将QnA认知应用程序的定价层更改为免费,以便进行搜索,我建议按原样保留搜索服务,根据Microsoft的答复如下:
要使用多种语言和多种知识库,用户必须 为每种语言创建QnA Maker资源。这将创建一个 每种语言单独的Azure搜索服务。混合不同的语言 单个Azure搜索服务中的知识库将导致 结果相关性下降。
总而言之,价格是按需支付的,所以现在额外增加的是文档数量和10美元的东西。