产品展示

利用亚马逊 Q Business 和自然语言,为企业解锁结构化数据的力量 机器学习博客

利用亚马逊 Q Business 和自然语言,为企业解锁结构化数据的力量 机器学习博客

利用自然语言解锁企业结构化数据的潜力

关键要点

在企业环境中,通过自然语言处理来访问和查询结构化数据正变得越来越重要。本文讨论了如何使用 Amazon Q Business 架构来简化数据访问,使非技术用户能够轻松查询数据,从而提高企业的数据驱动决策能力。

在企业环境中,生成式人工智能AI和大型语言模型LLMs最常见的用途之一是基于企业的知识库回答问题。预训练基础模型在自然语言理解NLU任务方面表现出色,包括总结、文本生成和问答等。然而,它们在生成准确答案时常常会出现“幻觉”现象,尤其是在回答与其训练数据无关的内容时。更重要的是,基础模型通常只能处理特定时间点的数据快照,无法在推理时访问最新数据,因此可能生成不准确或不充分的回答。

我们面临的一个根本挑战是弥合自然语言与结构化数据之间的鸿沟。自然语言常常模糊且不精确,而数据则遵循严格的模式。例如,SQL 查询对非技术用户来说可能复杂且不直观。处理涉及多个表、联接和聚合的复杂查询使得理解用户意图并将其转换为正确的 SQL 操作变得困难。领域特定术语进一步加大了映射过程的复杂性。另一项挑战是适应用户用于表达相同需求的语言变体。有效管理同义词、释义和替代表达至关重要。自然语言固有的模糊性也可能导致对单一查询的多种解读,使得准确理解用户确切意图变得更加困难。

为了解决这个问题,我们需要先进的自然语言处理NLP技术将用户查询映射到数据库模式、表和操作。在这个架构中,Amazon Q Business 作为中介,将自然语言翻译为准确的 SQL 查询。用户可以简单地提出问题,例如“2023 年第三季度的户外设备销售额是多少?” Amazon Q Business 将分析意图、访问数据源并生成 SQL 查询。这简化了非技术用户的数据访问,使专业人士的工作流程更加高效,从而可以将精力集中在更高层次的任务上。

在本文中,我们将讨论使用 Amazon Q Business 查询结构化数据的架构,并构建一个查询 成本和使用 数据的应用程序,在 Amazon Athena 上进行查询。Amazon Q Business 可以在提供数据库模式、描述列和表的附加元数据以及提示说明时创建 SQL 查询。您可以扩展该架构以使用其他数据源、查询验证和提示技术,从而覆盖更广泛的用例。

解决方案概述

以下图示代表了所提议解决方案的高层架构。步骤 3 和步骤 4 增强了 AWS IAM 身份中心 和 Amazon Q Business 的集成,以实现授权流程。在这个架构中,我们使用 Amazon Cognito 进行用户身份验证,并作为信任的令牌颁发机构与 IAM 身份中心配合。您还可以使用支持 OpenID ConnectOIDC的自有身份提供商作为信任令牌颁发者。

该工作流程包括以下步骤:

用户通过可通过应用程序负载均衡器访问的 Streamlit 应用程序启动交互,作为入口点。应用程序提示用户使用其 Amazon Cognito 凭证进行身份验证,以确保安全访问。应用程序用从 Amazon Cognito 获得的令牌交换 IAM 身份中心令牌,从而获得与 Amazon Q Business 交互所需的权限。使用 IAM 身份中心令牌,应用程序假设一个 AWS 身份与访问管理IAM角色,并从 AWS 安全令牌服务AWS STS检索 AWS 会话,从而能够与 Amazon Q Business 进行授权通信。根据用户的自然语言查询,应用程序制定相关提示和元数据,并将其提交给 Amazon Q Business 的 chatsync API。作为回应,Amazon Q Business 提供了一个适当的 Athena 查询以供运行。应用程序运行 Amazon Q Business 提供的 Athena 查询,并在网页应用程序的用户界面上显示结果。

直接查询 Amazon Q Business 的 LLM

正如在 响应设置 中解释的,Amazon Q Business 提供不同的选项来生成响应,这些选项允许您使用企业数据、直接使用 LLM,或在找不到所需答案时回退到 LLM。除了全局控制的响应设置,您还需要根据具体用例指定要使用的 chatMode。如果您希望绕过 检索增强生成RAG,并在上下文窗口中使用纯文本,则应使用 CREATORMODE。另外,直接在上下文窗口中上传文件时,也会绕过 RAG。

如果您仅在上下文窗口中使用文本并调用 Amazon Q Business 的 API,而未切换到 CREATORMODE,则在将来如果您向索引添加内容RAG,这可能会导致您的用例失效。在此用例中,由于我们没有对任何数据进行索引,并在 API 调用中将模式用作附件,因此 RAG 会自动被绕过,响应将直接从 LLM 生成。使用附件的另一个原因是,针对 chatSync API,userMessage 的最大长度为 7000,这可能因上下文窗口中的文本过大而超出限制。

数据查询工作流程

让我们详细看看提示、查询生成和 Athena 查询。我们在本文中使用 Athena 作为数据存储。用户在使用 Streamlit 构建的网址申请中输入自然语言问题。Amazon Q Business 使用提供的提示说明、数据库模式和数据字典将自然语言问题转换为有效 SQL。生成的 SQL 被发送至 Athena 执行查询,返回的数据在 Streamlit 应用程序中显示给用户。下图说明了该工作流程。

该数据流的各个组成部分如下:

用户意图提示构建器SQL 查询生成器执行查询查询结果

在接下来的部分中,我们将详细查看每个组件。

用户意图

用户意图或您的询问是该过程的起点。它可以以自然语言表达,例如“去年 ElasticSearch 的总支出是多少?”用户输入作为后续工作流步骤的基础。

提示构建器

提示构建器组件在弥合自然语言输入与进行 SQL 查询所需的结构化数据格式之间起着至关重要的作用。它使用来自表模式和数据字典的相关信息来增强您的问题,为查询生成过程提供上下文。此步骤包括以下子任务:

自然语言处理 使用 NLP 技术分析和理解您的问题,包括分词和依赖解析等步骤,以提取意图和相关实体。实体识别 使用命名实体识别NER识别和分类问题中提及的相关实体,如产品名称、日期或地域。此步骤有助于将输入映射到数据库模式中的对应数据元素。意图映射 提示构建器将通过 NLP 分析提取的意图映射到实现查询所需的数据结构和操作。这一映射过程使用表模式和数据字典来建立自然语言问题与数据库元素之间的连接。提示构建器的输出是增强有必要上下文的结构化问题表示,作为 SQL 查询生成的输入。

以下是“去年 ElasticSearch 的总支出是多少?”的提示示例:

sql您不会对无意义的、随机字符序列或没有逻辑意义的提示做出响应。如果输入不合理或超出了提供上下文的范围,请不要返回 SQL,而是回应 我对此不知道。请修正您的输入。您是一名 SQL 专家。仅返回 SQL 查询。不包括任何解释。您被要求根据提供的模式和常见服务及其同义词的服务映射返回 SQL 查询。提供的模式中的表是唯一的数据来源。请勿使用联接。当创建查询时,假设 product 和 service 是 productservicecode 的同义词,price、cost 和 spend 是 lineitemunblendedcost 的同义词。在创建查询时,请使用提供的模式中的列名。创建查询时,请不要在月份列前使用零0。仅在要求时使用谓词。供您参考,当前日期为 2024 年 6 月 1 日。为此任务编写 SQL 查询 去年 ElasticSearch 的总支出是多少?

利用亚马逊 Q Business 和自然语言,为企业解锁结构化数据的力量 机器学习博客

SQL 查询生成

根据提示构建器生成的提示和您原始问题,Amazon Q Business 生成相应的 SQL 查询。SQL 查询被量身定制,以检索相关数据并执行所需的分析或计算,以准确回答用户的问题。此步骤可能涉及以下技术:

将您的意图和实体映射到 SQL 子句SELECT、FROM、WHERE、JOIN 等处理涉及聚合、子查询或谓词的复杂查询将领域特定知识或业务规则纳入查询生成过程中

执行查询

在此步骤中,生成的 SQL 查询在所选数据存储中执行,数据存储可以是关系数据库、数据仓库、NoSQL 数据库或像 Amazon Simple Storage ServiceAmazon S3这样的对象存储。数据存储作为回答用户问题所需数据的存储库。根据架构和需求,数据存储查询可能涉及其他组件或流程,例如:

查询优化和索引策略用于复杂查询的物化视图实时数据摄取和更新

查询结果

查询引擎在数据存储上运行生成的 SQL 查询并返回查询结果。这些结果包含了对原始用户问题的见解或回答。查询结果的展示可以有多种形式,根据应用程序或用户界面的需求而定:

表格数据 结果可以以适合结构化数据分析的表格或电子表格形式展示可视化 查询结果可以呈现为图表、图形或其他视觉表示,提供更直观的方式理解和探索数据自然语言响应 在某些情况下,查询结果可以转换回自然语言陈述或摘要,使非技术用户更易理解的见解

在接下来的部分中,我们将阐述如何部署网页应用程序并测试解决方案。

先决条件

完成以下先决步骤:

设置 IAM 身份中心,并 添加用户,以便在您的 Amazon Q Business 应用程序中授予访问权限。拥有一个现有的、可工作的 Amazon Q Business 应用程序,并 向在上一步创建的用户授予访问权限。在 Athena 中可获取 AWS 成本和使用报告AWS CUR数据。如果您已有 CUR 数据,可以跳过接下来的 CUR 数据设置步骤。如果没有,您有几个选项来设置 CUR 数据:要设置示例 CUR 数据,请参阅以下 实验 并按照指示进行操作。还需要设置一个 AWS Glue 爬虫,使数据在 Athena 中可用。如果您已经有 SSL 证书,可以跳过此步骤;否则,请 生成私有证书。将证书导入 AWS 证书管理器ACM。有关详细信息,请参阅 导入证书。

设置应用程序

完成以下步骤以设置应用程序:

从终端中克隆 GitHub 仓库:

bashgit clone https//githubcom/awssamples/datainsightswithamazonqbusinessgit

进入项目目录:

bashcd datainsightswithamazonqbusiness

根据您的 CUR 表,更新 app/schemas/curschematxt 中的 CUR 模式。查看 app/qbconfigpy 中的提示。模式看起来类似于以下代码:

查看 app/schemas/servicemappingscsv 中的数据字典。您可以根据数据集修改映射。CUR 的示例数据字典可能类似于以下屏幕截图。

将代码库打包并上传到 S3 存储桶中。根据 GitHub 仓库 中的步骤部署 Streamlit 应用程序。

访问网页应用程序

在部署步骤中,您已启动了 AWS CloudFormation 堆栈。在 AWS CloudFormation 控制台中,导航到堆栈的 Outputs 选项卡,查找访问 Streamlit 应用程序的 URL。当您在浏览器中打开该 URL 时,将看到类似于以下屏幕截图的登录屏幕。注册创建一个 Amazon Cognito 用户池的用户。验证后,您可以使用相同的凭据登录网页应用程序。

查询您的成本和使用数据

先从一个简单的查询开始,例如“今年 ElasticSearch 的总支出是多少?”相关提示将被创建并发送至 Amazon Q Business。它会回应对应的 SQL 查询。请注意谓词 where productservicecode = ‘AmazonES’。Amazon Q Business 能够制定该查询,因为它在上下文中拥有模式和数据字典。它理解 ElasticSearch 是 AWS 服务,表示为 CUR 数据模式中的一列,其对应值为 ‘AmazonES’。接下来,该查询将在 Athena 上运行,并得到结果。

本文使用的示例数据集来自 2023 年。如果您使用示例数据集,引用当前年份的自然语言查询将不返回结果。请修改查询为 2023 或在用户意图中提及年份。

下图强调了数据流中的各个步骤。

黑豹加速器app下载

您也可以尝试复杂查询,比如“请给我去年总支出前 3 名产品的列表。这些产品分别占整体支出的百分比是多少?”由于提示构建器在上下文中包含模式和产品AWS 服务信息,Amazon Q Business 将创建对应的查询。在这种情况下,您将看到类似于以下的查询:

sqlSELECT productservicecodeSUM(lineitemunblendedcost) AS totalspendROUND(SUM(lineitemunblendedcost

  1. 使用 MySQL Shell 和 Amazon S3 降低 Amazon Aurora MySQL 使用 MySQL Shell 和 Amazon S3 降低 Amazon Aurora MySQL

    降低 Amazon Aurora MySQL 备份成本的方法关键要点本篇文章探讨了如何通过使用 MySQL Shell 与 Amazon S3 整合来降低 Amazon Aurora 的备份成本,尤其适用于长达 35 天以上的备份保留期。使用此方法能够将备份文件压缩并直接上传至 Amazon S3,...

  1. 在 AWS Outposts 机架上实施网络流量检查 计算博客 在 AWS Outposts 机架上实施网络流量检查 计算博客

    AWS Outposts机架上实施网络流量检测by Macey Neff 于2024年5月31日发布,来源于 Amazon EC2、AWS Outposts、AWS Transit Gateway和Compute永久链接 分享重点摘要在AWS Outposts机架上实施网络流量检测是确保本地环境安全...