发布于: Mar 14, 2022

各项元素如何融合于一处

首先,TensorIoT 部署了自定义 Amazon Lex 搜索 intent,其将在聊天机器人接收到无法回答的问题或话语时触发。该团队使用 Amazon Web Services Lambda 开发出 intent 对话与实现代码 hook,用以管理对话流程与实现 API。经过开发、测试与合并之后,这一全新搜索 intent 被正式纳入 Citibot的开发版本,用以确保所有原始 intent 皆可正常起效。
 
接下来,TensorIoT 需要创建搜索查询引擎。之所以选择 Amazon Kendra,是因为这项服务能够将各类数据源与数据类型集成至 Citibot 的现有技术栈当中。TensorIoT 与 Citibot 开发团队确定了政府数据源目标组,其中包括负责常规检查的疾控中心网站(用于获取 COVID-19 数据)与多个城市网站(用于获取市政数据)。以此为基础,聊天机器人即可随时更新关于病毒传播及社交隔离的最新指南。
 

下图所示,为 Citibot 通用搜索解决方案中所使用的各个数据源。

接下来,团队研究了最适合的信息保存与 Amazon Kendra 接入格式及数据存储容器选项。TensorIoT 对 Amazon Kendra 的训练效果充满信心,指定由其系统处理并索引各数据源,并从各类数据格式(例如 .pdf、.csv 以及  .html 文件)中提取含义。为了提高 Amazon Kendra 的处理效率,TensorIoT 团队还通过智能方式将数据划分为更易于查询的信息块,通过中继机制将信息块返回至用户处。将 .csv、.pdf 与 .html 文件相结合,TensorIoT 得以提供完整的数据内容,并为后续产品构建及开发奠定了坚实的基础。
 
TensorIoT 团队随后使用 NodeJS 与 JavaScript 库 Cheerio 开发出通用型 Web 连接器,借此抓取受信任的网站并将信息结果保存在数据存储内。由于 COVID-19 相关信息经常变动,因此 TensorIoT 创建出一份 Amazon DynamoDB 表,用于存储所有网站内容并定期为更新信息编制索引。
 
根据来自目标网站的其他信息,TensorIoT 与 Citibot 团队决定使用 Amazon Simple Storage Service、 Amazon S3 存储桶进行数据存储。Amazon Kendra 则为保存在 Amazon Web Services 内的所有非结构化数据提供基于机器学习(ML)的搜索功能,并为 Amazon S3、SharePoint、Salesforce、ServiceNow、RDS 数据库以及 OneDrive 等流行资源提供易于使用的原生连接器。通过统一从同一 S3 存储桶内提取来自疾控中心网站的 .html 页面与 .pdf 文件,开发团队得以将索引与数据源保持同步,随时提供可用数据。他们还使用 Amazon Kendra 从抓取到的 .html 页面中提取元数据文件,通过城市名称等文件属性进一步改善答案结果。
 

下图所示,为 Citibot 用于调整搜索结果的属性示例。

在没有进行任何模型训练的情况下,TensorIoT 与 Citibot 能够直接将 Amazon Kendra 指向他们的内容存储位置,并从最相关的文件内容中提取答案为自然语言查询问题提供特定答案(例如「如何保护自己免受 COVID-19 病毒侵害?」)。
 
为了测试这套解决方案的实际效果,工程师们使用带有测试输入的示例事件脚本进行了场景模拟,借此确认每个问题或每段话语能否获得有效的文本摘录内容及答案链接。此外,该团队还使用负面反馈 API,用于标记用户表示不满意的答案,引导 Citibot 重新访问这类未能起到帮助效果的搜索答案。这部分数据帮助他们针对特定问题,对聊天机器人所给出的回应做出持续改进。
 
在精选内容搜索方面,开发人员可以上传 .csv 常见问题解答文件,借此对各类常见问题进行快速、高效解答。他们还上传了一个包含相关问题与答案的独立 .csv 文件,配合一项完整的搜索引擎微服务以提高用户应答的准确性、简单性与连通性。
 
在短短几周之内,TensorIoT 还构建了多个自定义查询逻辑与反馈提交 API,并将其添加至 Amazon Lex 机器人当中,希望在无需人工干预或广泛搜索的前提下提高用户所获得的答案质量。Amazon Kendra 通过 API(例如提交反馈 API)公开这些服务,允许最终用户与搜索结果进行交互。凭借着一系列自定义 Amazon Lex intent 与 Lambda 函数,该团队得以高效处理传入查询、构建起一项强大的搜索服务。
 
下图所示,为这套解决方案使用 Amazon Lex 与 Lambda 的具体方式。

TensorIoT 解决方案在设计之初就考虑到整合需求,保证 Citibot 能够轻而易举地向其中添加新的城市,并面向各自社区传递信息。TensorIoT 团队需要解决的下一个挑战,在于利用特定城市信息增强搜索结果的相关性。与 Amazon Lex 中其他会话及请求属性相结合,TensorIoT 为 Amazon Kendra 提供一套搜索过滤器,能够针对特定城市进行数据查询优化。如果未指定城市,则系统默认使用用户发起当前呼叫时所处的位置。通过部署 TensorIoT 自定义搜索 intent、搜索过滤器、数据源填充以及新的 API 选项,该团队一步步将这套搜索引擎集成到现有聊天机器人方案当中。

实际部署

为了部署这套 TensorIoT 解决方案,开发团队将新的 Amazon Lex 自定义搜索 intent Citibot 整合起来,并测试了机器人成功回应查询的能力。TensorIoT 通过 Twilio 使用 Citibot 提供的示例电话号码,配合往来短信验证每段对话的答疑效果。

借助 Amazon Kendra 的支持,TensorIoT 团队不再需要任何第三方搜索引擎,而是将精力集中在开发用于信息收集的自动化解决方案身上。在聊天机器人更新完成之后,该团队通过软件开发工具包(SDK)的版本升级完成了服务的重新部署。升级之后的聊天机器人可以使用 Amazon Kendra 搜索功能,根据文档整理内容为更广泛的用户提问提供答案。经过此次迭代,Citibot 的服务质量明显高于各地之前使用的呼叫应答工具。

当结合使用 Amazon LexAmazon Kendra 时,以特定设计的内容形式存储信息特别有用。Amazon Kendra 拥有强大的定制化信息检索能力,而 Amazon Lex 则通过无代理语音交互将信息以语音形式播放给最终用户。

总结

在今天的用例中,我们了解到 TensorIoT 如何使用多项 Amazon Web Services 服务提升解决方案的实际价值。除 COVID-19 疫情之外,各城市也可以继续使用由 Amazon Kendra 驱动的聊天机器人,帮助居民快速了解特定公共设施的开放时间、道路封闭情况以及紧急事件相关信息。根据实际用例,大家可以轻松创建自定义 Amazon Web Services Kendra 主题,借此满足用户对于各类信息的查询需求。

事实证明,TensorIoT 搜索引擎能够高效解决各类现实问题,保证居民社区通过文本内容保持知情权与治理联系。本文中的示例应用主要用于增强客户支持服务,但其中的解决思路也同样适用于学校、银行、本地企业以及各非营利性组织的内部知识库搜索场景。借助 Amazon Web Services TensorIoTCitibot 等厂商得以运用 Amazon Kendra 的强大技术能力,显著改善现有聊天机器人的运行效果。

相关文章