发布日期:2022-09-02 21:17浏览次数:
英文原文:Enhancing enterprise search with Amazon Kendra
Amazon Kendra是一项易于使用的企业级搜索服务,可帮助您向应用程序中添加搜索功能,保证最终用户得以轻松从企业内部存储的不同数据源中查找信息——具体包括收据、业务文档、技术手册、销售报告、公司内部词汇表以及内部网站等等。您可以从Amazon Simple Storage Service (Amazon S3) 以及OneDrive等存储解决方案当中获取这些信息,也可以面向SalesForce、SharePoint及Service Now等应用程序,或者Amazon Relational Database Service (Amazon RDS)等关系数据库执行搜索。
在输入问题时,该服务将使用机器学习(ML)算法理解上下文,并返回相关度最高的结果——包括准确答案或者完整文档。更重要的是,大家无需具备任何机器学习经验即可完成操作。Amazon Kendra还为大家提供能够轻松与新的应用程序或现有应用程序相集成的代码。
本文将向您介绍如何使用Amazon Kendra功能创建企业内部搜索系统,借此构建解决方案以创建并查询自己的搜索索引。在本文的示例中,我们将使用HTML格式的Amazon.com帮助文档作为数据源,但Amazon Kendra也支持微软Office(.doc、.ppt等)、PDF以及其他多种文本格式。
本文将向大家介绍如何使用Amazon Kendra在AWS上创建企业搜索引擎。您可以在一个小时之内配置起新的Amazon Kendra索引,且无需掌握深度技术或者丰富的机器学习经验。
本文还将演示如何通过添加常见问题答案,在自定义应用程序中部署Amazon Kendra与同步数据源,借此配置起定制化Amazon Kendra使用体验。后文将详细阐述并解答这些问题。
在本轮演练中,大家需要做好如下准备:
我们首先需要将文档上传至S3存储桶当中,而后才能在Amazon Kendra中创建索引。本节将介绍如何创建S3存储桶、获取文件并将其加载至存储桶当中。完成本节中的所有步骤之后,您便拥有了可供Amazon Kendra使用的数据源。
kendrapost-{your account id}
.在存储桶内,大家现在应该看到两个文件夹:amazon_help_docs
(包含3100个对象)以及faqs(包含1个对象)。
以下截屏所示,为 amazon_help_docs
文件的内容。
以下截屏所示,为faqs
文件的内容。
索引是Amazon Kendra中的一种组件,可提供文档及常见问题的搜索结果。在完成本节的所有步骤之后,您将可以使用索引搜索来自不同数据源的文档。关于索引的更多详细信息,请参阅索引。
要创建您的第一个Amazon Kendra索引,请完成以下操作步骤:
kendra-blog-index
My first Kendra index
-index-role
(您的角色名称应使用 AmazonKendra-YourRegion-
前缀)(在默认情况下,您的数据将使用Amazon Kendra所拥有的密钥进行加密。)
关于Amazon Kendra创建的IAM角色的更多详细信息,请参阅先决条件。
Amazon Kendra提供两个版本。其中Kendra Enterprise版主要为生产类工作负载提供高可用性服务,Kendra Developer版则适用于构建概念验证与试验。在本文中,我们将使用Developer版。
关于免费层、文档大小限制以及各Amazon Kendra版本总体存储空间的更多详细信息,请参阅Amazon Kendra计费标准。
索引创建过程最多可能需要30分钟。在创建完成之后,您将在页面上方看到一条消息,提示您索引已经成功创建。
数据源是指存储文档以进行索引的位置。您可以将数据源与Amazon Kendra索引自动同步,保证搜索能够正确反映源存储库内的新文档、更新文档或者已删除文档。
在完成本节中的所有步骤之后,您将拥有一个与Amazon Kendra相链接的数据源。关于更多详细信息,请参阅从数据源中添加文档。
在继续下一步之前,请保证索引已经创建完成,且索引状态显示为Active。
kendra-blog-index
页面中,选择Add data sources。Amazon Kendra支持六种数据源类型:Amazon S3, SharePoint Online, ServiceNow, OneDrive, Salesforce online以及Amazon RDS。在本文中,我们使用Amazon S3。
关于Amazon Kendra所支持的各种不同数据源的详细信息,请参阅从数据源中添加文档。
amazon_help_docs
。AWS services documentation
。kendrapost-{your account id}
。在默认情况下,元数据文件将与文档存储在同一目录当中。如果要将这些文件放置在其他文件夹中,可以通过添加前缀实现。关于更多详细信息,请参阅S3文档元数据。
source-role
(您的角色以 AmazonKendra-
为前缀)。这一步定义了数据源与Amazon Kendra索引间的同步频率。对于本次演练,您可以手动执行同步操作(仅一次)。
整个同步过程的持续时间,取决于您索引的文档数量。在本用例中,可能需要15分钟,之后您应看到一条消息提示您同步成功。
在Sync run history部分,您可以看到有3099个文档同步完成。
本文的目的在于通过内置的Amazon Kendra控制台浏览可用的搜索查询。
要对之前创建完成的索引进行搜索,请完成以下操作步骤:
Kendra能够回答三种类型的问题:事实、描述性与关键字问题。关于更多详细信息,请参阅Amazon Kendra常见问题解答。您可以使用之前上传的Amazon.com帮助文档提出相关问题。
在搜索字段中,输入 What is Amazon music unlimited
?
对于这样一个事实性问题(谁、什么、什么时候、什么地方),Amazon Kendra可以快速回答并提供指向源文档的链接。
在关键字搜索中,输入 shipping rates to Canada
。以下截屏所示,为Amazon Kendra提供的答案。
大家也可以上传一份常见问题列表,为最终用户提出的常见问题直接提供答案。为此,我们需要加载对应的.csv文件,其中包含与问题相关的信息。本节将介绍如何创建并配置此文件,并将其加载至Amazon Kendra。
kendra-post-faq
。My first FAQ list
。Amazon Kendra能够接受.csv文件当中每一行以问题开头、以答案结尾的内容。具体参见下表:
问题 | 答案 | URL (可选) |
What is the height of the Space Needle? | 605 feet | https://www.spaceneedle.com/ |
How tall is the Space Needle? | 605 feet | https://www.spaceneedle.com/ |
What is the height of the CN Tower? | 1815 feet | https://www.cntower.ca/ |
How tall is the CN Tower? | 1815 feet | https://www.cntower.ca/ |
下面来看本示例中使用的.csv文件格式:
"How do I sign up for the Amazon Prime free Trial?"," To sign up for the Amazon Prime free trial, your account must have a current, valid credit card. Payment options such as an Amazon.com Corporate Line of Credit, checking accounts, pre-paid credit cards, or gift cards cannot be used. "," https://www.amazon.com/gp/help/customer/display.html/ref=hp_left_v4_sib?ie=UTF8&nodeId=201910190”
s3://kendrapost-{your account id}/faqs/kendrapost.csv
。faqs-role
(您的角色名称应使用 AmazonKendra-YourRegion-
前缀)。现在,大家可以在搜索控制台上查看常见问题能否正常起效了。
How do I sign up for the Amazon Prime free Trial
?您可以在应用程序中通过搜索控制台添加以下组件:
Amazon Kendra还提供可部署在您网站中的源代码。此项功能基于修改后的MIT许可,因此您可以直接套用或者根据实际需求做出修改。
本节主要讲解如何将Amazon Kendra搜索机制部署到您的网站当中。我们将使用运行在本地计算机上的Node.js应用程序进行演示,此用例基于MacOS环境。
要运行此演示,大家需要准备以下组件:
aws-kendra-sample-app-master
文件夹:cd /{folder path}/aws-kendra-sample-app-master
.env.development.local.example
文件创建一个名为 .env.development.local
的副本:cp .env.development.local.example .env.development.local
.env.development.local
文件,并添加以下连接参数:
npm install
npm start
How do I sign up for the Amazon Prime free Trial
?以下截屏所示,为即使演示网页运行在计算机本地,其结果仍与我们从Amazon Kendra控制台处获得的完全相同。
为了避免未使用的角色与策略继续产生不必要成本,请删除我们之前创建的资源:Amazon Kendra索引、S3存储桶以及对应的IAM角色。
等待直到收到确认删除的消息;整个过程最多可能需要15分钟。
关于删除S3存储桶的操作说明,请参阅如何删除S3存储桶?
在本文中,我们了解了如何使用Amazon Kendra部署企业搜索服务。您可以使用机器学习支持的Amazon Kendra改善公司内部的搜索体验。您也可以在不具备任何机器学习/AI经验的前提下,使用自然语言快速检索文档。关于Amazon Kendra项目的更多详细信息,请参阅AWS re: Invent 2019大会上Andy Jassy做出的主题演讲、Amazon Kendra常见问题解答以及Amazon Kendra是什么?