面对互联网上浩如烟海的数据,如何疾速找到本人须要的信息?搜索引擎!输出关键字,回车一下,海量后果等你来检阅。
但在企业环境中,面对形形色色的 IT 零碎、文档库,以及其余品种各异的数据源,如何疾速找到须要的内容?搜寻就行。但假如你须要的信息散布在几个甚至十几个不同的利用或零碎中,除了别离在这些中央进行搜寻(前提是这些零碎反对搜寻),还有什么更好的方法吗?
如果能有一种服务,就像互联网上的搜索引擎那样,能够给企业外部的各类数据源创立索引,并让咱们在一个地位,通过一次搜寻操作,全面搜寻内网中的各类数据源,并将后果对立出现在一起,那该多不便!
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 应用体验。后文将具体论述并解答这些问题。
先决条件
在本轮演练中,须要做好如下筹备:
- 一个 AWS 账户。
- 理解 AWS 基本知识。
- 一个用于寄存文档的 S3 存储桶。对于更多详细信息,请参阅创立一个存储桶以及 Amazon S3 是什么?
创立并配置文档库
首先须要将文档上传至 S3 存储桶中,而后能力在 Amazon Kendra 中创立索引。本节将介绍如何创立 S3 存储桶,随后获取文件并将其加载至存储桶当中。实现本节中所有步骤后,便领有了可供 Amazon Kendra 应用的数据源。
- 在 AWS 治理控制台的 Region 列表中,抉择 US East (N. Virginia) 或者心愿 Amazon Kendra 运行所在的其余区域(请保障该区域提供 Kendra 服务)。
- 抉择 Services。
- 在 Storage 之下,抉择 S3。
- 在 Amazon S3 管制台上,抉择 Create bucket。
- 在 General configuration 中提供以下信息:
- Bucket name:kendrapost-{your account id}
- Region:抉择用于部署 Amazon Kendra 索引的同一区域(本文应用美国东部 us-east-1,即北弗吉尼亚州区域)。
- 在 Bucket settings for Block Public Access 下间接应用默认值。
- 在 Advanced settings 下间接应用默认值。
- 抉择 Create bucket。
- 下载 amazon_help_docs.zip 并解压此文件。
- 在 Amazon S3 管制台上,选定刚刚创立实现的存储桶,而后抉择 Upload。
- 上传解压后的文件。
此时,在存储桶内应该能够看到两个文件夹:amazon_help_docs(蕴含 3100 个对象)以及 faqs(蕴含 1 个对象)。
以下截屏所示,为 amazon_help_docs 文件的内容:
以下截屏所示,为 faqs 文件的内容:
创立索引
索引是 Amazon Kendra 中的一种组件,可提供文档及常见问题的搜寻后果。在实现本节的所有步骤之后,咱们将能够应用索引搜寻来自不同数据源的文档。对于索引的更多详细信息,请参阅索引。
要创立第一个 Amazon Kendra 索引,请实现以下操作步骤:
- 在管制台上,抉择 Services。
- 在 Machine Learning 下抉择 Amazon Kendra。
- Amazon Kendra 主页面中,抉择 Create an Index。
- 在 Index details 局部的 Index name 当中,输出 kendra-blog-index。
- 在 Description 局部,输出 My first Kendra index。
- 在 IAM role 局部,抉择 Create a new role。
- 在 Role name 局部,输出 -index-role (角色名称应应用 AmazonKendra-YourRegion- 前缀)。
- 在 Encryption 局部,不要抉择 Use an AWS KMW managed encryption key。(默认状况下,咱们的数据将应用 Amazon Kendra 所领有的密钥进行加密。)
- 抉择 Next。
对于 Amazon Kendra 创立的 IAM 角色的更多详细信息,请参阅先决条件。
Amazon Kendra 提供两个版本。其中 Kendra Enterprise 版次要为生产类工作负载提供高可用性服务,Kendra Developer 版则实用于构建概念验证与试验。本文将应用 Developer 版。
- 在 Provisioning editions 局部,抉择 Developer edition。
抉择 Create。
对于收费层、文档大小限度以及各 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 S3 之下,抉择 Add connector。
对于 Amazon Kendra 所反对的各种不同数据源的详细信息,请参阅从数据源中增加文档。
- 在 Define attributes 局部的 Data source name 地位,输出 amazon_help_docs。
- 在 Description 局部,输出 AWS services documentation。
- 抉择 Next。
- 在 Configure settings 局部的 Enter the data source location 当中,输出刚创立的 S3 存储桶:kendrapost-{your account id}。
- 保留 Metadata files prefix folder location。
默认状况下,元数据文件将与文档存储在同一目录当中。如果要将这些文件搁置在其余文件夹中,能够通过增加前缀实现。对于更多详细信息,请参阅 S3 文档元数据。
- 在 Select decryption key 局部,勾销全副勾选项。
- 在 Role name 局部,输出 source-role(角色以 AmazonKendra- 为前缀)。
- 在 Additional configuration 局部,能够增加模式以蕴含或排除某些文件夹或文件。在本文的示例中,请间接保留默认值。
- 在 Frequency 局部,抉择 Run on demand。这一步定义了数据源与 Amazon Kendra 索引间的同步频率。对于本次演练,能够手动执行同步操作(仅一次)。
- 抉择 Next。
- 在 Review and create 页面中,抉择 Create。
- 在数据源创立实现之后,抉择 Sync now 将文档与 Amazon Kendra 索引进行同步。
整个同步过程的持续时间取决于索引的文档数量。在本用例中可能须要 15 分钟,之后应看能到一条音讯提醒同步胜利。
在 Sync run history 局部,能够看到有 3099 个文档同步实现。
应用搜寻控制台浏览搜寻索引
本节的目标在于通过内置的 Amazon Kendra 控制台浏览可用的搜寻查问。
要对之前创立实现的索引进行搜寻,请实现以下操作步骤:
- 在 Indexes 下抉择 kendra-blog-index。
- 抉择 Search console。
Kendra 可能答复三种类型的问题:事实、描述性与关键字问题。对于更多详细信息,请参阅 Amazon Kendra 常见问题解答。咱们能够应用之前上传的 Amazon.com 帮忙文档提出相干问题。
在搜寻字段中,输出:What is Amazon music unlimited?
对于这样一个事实性问题(谁、什么、什么时候、什么中央),Amazon Kendra 能够疾速答复并提供指向源文档的链接。
在关键字搜寻中输出 shipping rates to Canada。以下截屏所示,为 Amazon Kendra 提供的答案。
增加常见问题
大家也能够上传一份常见问题列表,为最终用户提出的常见问题间接提供答案。为此,咱们须要加载对应的.csv 文件,其中蕴含与问题相干的信息。本节将介绍如何创立并配置此文件,并将其加载至 Amazon Kendra。
- 在 Amazon Kendra 管制台上,导航至索引。
- 在 Data management 下抉择 FAQs。
- 抉择 Add FAQ。
- 在 Define FAQ project 局部的 FAQ name 当中,输出 kendra-post-faq。
- 在 Description 局部,输出 My first FAQ list。
Amazon Kendra 可能承受.csv 文件当中每一行以问题结尾、以答案结尾的内容。具体参见下表:
上面来看本示例中应用的.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”
- 在 FAQ settings 下的 S3 局部,输出 s3://kendrapost-{your account id}/faqs/kendrapost.csv。
- 在 IAM role 局部,抉择 Create a new role。
- 在 Role name 局部,输出 faqs-role(角色名称应应用 AmazonKendra-YourRegion- 前缀)。
- 抉择 Add。
- 稍等一会儿,直到状态显示为 Active。
当初,咱们应该能够在搜寻管制台上查看常见问题是否失常起效了。
- 在 Indexes 下抉择咱们的索引。
- 在 Data management 下抉择 Search console。
- 在搜寻字段中,输出 How do I sign up for the Amazon Prime free Trial?
- 以下截屏所示,为 Amazon Kendra 将之前上传的常见问题增加至后果清单,并提供答案与指向该文档的链接。
在自有应用程序中应用 Amazon Kendra
咱们能够在应用程序中通过搜寻控制台增加以下组件:
l Main search page:蕴含所有组件的主页。在这里,能够将应用程序与 Amazon Kendra API 集成。
l Search bar:可在其中输出搜索词,并调用搜寻性能的组件。
l Results:显示 Amazon Kendra 后果的组件。其中蕴含三个局部:最佳答案、常见问题解答后果与倡议文档。
l Pagination:用于对 Amazon Kendra 响应后果进行分页的组件。
Amazon Kendra 还提供可部署在网站中的源代码。此项性能基于批改后的 MIT 许可,因而咱们能够间接套用或者依据理论需要做出批改。
本节次要解说如何将 Amazon Kendra 搜寻机制部署到咱们本人的网站中。咱们将应用运行在本地计算机上的 Node.js 应用程序进行演示,此用例基于 MacOS 环境。
要运行此演示,须要筹备以下组件:
l Npm (Node.js)
l IAM 凭证,由具备适当权限的用户用于拜访 Amazon Kendra
l 下载 amazon_aws-kendra-sample-app-master.zip 文件并进行解压。
操作步骤如下:
- 关上终端窗口,并返回 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 文件,并增加以下连贯参数:
l REACT_APP_INDEX:Amazon Kendra 索引 ID(能够在索引主页中找到此编号)。
l REACT_APP_AWS_ACCESS_KEY_ID:账户拜访密钥。
l REACT_APP_AWS_SECRET_ACCESS_KEY:账户 secret 拜访密钥。
l REACT_APP_AWS_SESSION_TOKEN:在本用例中,将此留空。
l REACT_APP_AWS_DEFAULT_REGION:用于部署 Kendra 索引的区域(例如 us-east-1)。
- 保留各项变更。
- 装置 Node.js 依赖项:
npm install
- 启动本地开发服务器:
npm start
- 通过 http://localhost:3000/ 查看演示利用。这时应该能够看到如下所示的内容。
- 输出之前测试常见问题的同一问题:How do I sign up for the Amazon Prime free Trial?
以下截屏所示,为即便演示网页运行在计算机本地,其后果仍与咱们从 Amazon Kendra 控制台处取得的完全相同。
资源清理
为防止未应用的角色与策略持续产生不必要老本,请删除之前创立的资源:Amazon Kendra 索引、S3 存储桶以及对应的 IAM 角色。
- 若要删除 Amazon Kendra 索引,请在 Indexes 下抉择 kendra-blog-index。
- 在 index settings 局部,从 Actions 下拉菜单中抉择 Delete。
- 在 index settings 局部,从 Actions 下拉菜单中抉择 Delete ;
期待直到收到确认删除的音讯;整个过程最多可能须要 15 分钟。
对于删除 S3 存储桶的操作阐明,请参阅如何删除 S3 存储桶?
总结
本文介绍了如何应用 Amazon Kendra 部署企业搜寻服务。大家能够应用机器学习反对的 Amazon Kendra 改善公司外部的搜寻体验,并在不具备任何机器学习 /AI 教训的前提下,应用自然语言疾速检索文档。
对于 Amazon Kendra 我的项目的更多详细信息,请参阅 AWS re: Invent 2019 大会上 Andy Jassy 做出的主题演讲、Amazon Kendra 常见问题解答以及 Amazon Kendra 是什么?