结构化查询语言 (SQL) 是一种复杂的语言,需要了解数据库和元数据。今天, 生成式人工智能 可以使没有 SQL 知识的人能够使用。这种生成式 AI 任务称为文本到 SQL,它通过自然语言处理 (NLP) 生成 SQL 查询,并将文本转换为语义正确的 SQL。本文中的解决方案旨在通过使用自然语言缩短数据路径,将企业分析操作提升到一个新的水平。
随着大型语言模型 (LLM) 的出现,基于 NLP 的 SQL 生成发生了重大转变。法学硕士展示了卓越的性能,现在能够从自然语言描述生成准确的 SQL 查询。然而,挑战仍然存在。首先,人类语言本质上是模糊的并且依赖于上下文,而 SQL 是精确的、数学的和结构化的。这种差距可能会导致用户的需求无法准确地转换为生成的 SQL。其次,您可能需要为每个数据库构建文本到 SQL 功能,因为数据通常不存储在单个目标中。您可能必须为每个数据库重新创建功能,以使用户能够生成基于 NLP 的 SQL。第三,尽管数据湖和仓库等集中式分析解决方案得到了广泛采用,但为所需源创建 SQL 所需的表名称和其他元数据不同,复杂性也会增加。因此,收集全面、高质量的元数据仍然是一个挑战。要了解有关文本到 SQL 最佳实践和设计模式的更多信息,请参阅 从企业数据中生成价值:Text2SQL 和生成式 AI 的最佳实践.
我们的解决方案旨在解决这些挑战 亚马逊基岩 和 AWS 分析服务。 我们用 人类克劳德 v2.1 在 Amazon Bedrock 上担任我们的法学硕士。为了应对这些挑战,我们的解决方案首先将数据源的元数据纳入 AWS Glue数据目录 提高生成的 SQL 查询的准确性。该工作流程还包括最终评估和纠正循环,以防任何 SQL 问题被识别出来 亚马逊雅典娜,它在下游用作 SQL 引擎。 Athena 还允许我们使用多种 支持的端点和连接器 覆盖大量数据源。
在完成构建解决方案的步骤后,我们将展示一些具有不同 SQL 复杂性级别的测试场景的结果。最后,我们讨论如何简单地将不同的数据源合并到 SQL 查询中。
解决方案概述
我们的架构包含三个关键组件:带有数据库元数据的检索增强生成 (RAG)、多步自我校正循环以及作为 SQL 引擎的 Athena。
我们使用 RAG 方法从 AWS Glue 元存储中检索表描述和架构描述(列),以确保请求与正确的表和数据集相关。在我们的解决方案中,我们构建了使用 AWS Glue 数据目录运行 RAG 框架的各个步骤,以进行演示。但是,您也可以使用 知识库 在 Amazon Bedrock 中快速构建 RAG 解决方案。
多步骤组件允许法学硕士纠正生成的 SQL 查询的准确性。此处,发送生成的 SQL 以检查语法错误。我们使用 Athena 错误消息来丰富 LLM 的提示,以便在生成的 SQL 中进行更准确和有效的更正。
您可以将 Athena 偶尔发出的错误消息视为反馈。与交付的价值相比,纠错步骤的成本影响可以忽略不计。您甚至可以将这些纠正步骤作为监督强化学习示例,以微调您的法学硕士。但是,为了简单起见,我们没有在帖子中介绍此流程。
请注意,生成性人工智能解决方案自然会带来不准确的固有风险。即使 Athena 错误消息对于减轻这种风险非常有效,您也可以添加更多控件和视图,例如人工反馈或用于微调的示例查询,以进一步最大限度地降低此类风险。
Athena 不仅允许我们纠正 SQL 查询,而且还为我们简化了整体问题,因为它充当中心,而辐条是多个数据源。访问管理、SQL 语法等均通过 Athena 处理。
下图说明了解决方案体系结构。
该工艺流程包括以下步骤:
- 创建 AWS Glue 数据目录 使用 AWS Glue 爬网程序 (或不同的方法)。
- 使用 Amazon Bedrock 上的 Titan-Text-Embeddings 模型,将元数据转换为嵌入并将其存储在 亚马逊 OpenSearch 无服务器 矢量商店,它作为我们 RAG 框架中的知识库。
在此阶段,流程已准备好接收自然语言的查询。步骤 7-9 代表校正循环(如果适用)。
- 用户以自然语言输入查询。您可以使用任何 Web 应用程序来提供聊天 UI。因此,我们没有在帖子中介绍 UI 细节。
- 该解决方案通过以下方式应用 RAG 框架 相似性搜索,它添加来自矢量数据库的元数据的额外上下文。该表用于查找正确的表、数据库和属性。
- 查询与上下文合并并发送到 人类克劳德 v2.1 在亚马逊基岩上。
- 该模型获取生成的 SQL 查询并连接到 Athena 以验证语法。
- 如果 Athena 提供错误消息,指出语法不正确,则模型将使用 Athena 响应中的错误文本。
- 新提示添加了 Athena 的响应。
- 该模型创建更正的 SQL 并继续该过程。该迭代可以执行多次。
- 最后,我们使用 Athena 运行 SQL 并生成输出。在这里,输出呈现给用户。为了架构简单,我们没有展示这一步。
先决条件
对于这篇文章,您应该完成以下先决条件:
- 有一个 AWS账户.
- Install 安装 此 AWS命令行界面 (AWS CLI)。
- 设置 Python SDK (Boto3).
- 创建 AWS Glue 数据目录 使用 AWS Glue 爬网程序 (或不同的方法)。
- 使用 Amazon Bedrock 上的 Titan-Text-Embeddings 模型,将元数据转换为嵌入并将其存储在 OpenSearch Serverless 中 矢量商店.
实施解决方案
您可以使用以下内容 Jupyter笔记本,其中包括本节中提供的所有代码片段,用于构建解决方案。我们建议使用 亚马逊SageMaker Studio 使用带有 Python 3(数据科学)内核的 ml.t3.medium 实例打开此笔记本。有关说明,请参阅 训练机器学习模型。请完成以下步骤来设置解决方案:
- 在 OpenSearch 服务中为 RAG 框架创建知识库:
- 构建提示(
final_question
)通过结合自然语言的用户输入(user_query
),来自矢量存储的相关元数据(vector_search_match
),以及我们的指示(details
): - 为 LLM (Claude v2) 调用 Amazon Bedrock 并提示其生成 SQL 查询。在下面的代码中,它进行了多次尝试以说明自我纠正步骤:x
- 如果生成的 SQL 查询出现任何问题 (
{sqlgenerated}
)来自雅典娜的回应({syntaxcheckmsg}
),新提示(prompt
) 是根据响应生成的,并且模型再次尝试生成新的 SQL: - SQL生成后,调用Athena客户端运行并生成输出:
测试解决方案
在本节中,我们使用不同的示例场景运行我们的解决方案,以测试不同复杂程度的 SQL 查询。
为了测试我们的文本到 SQL,我们使用两个 IMDB 提供的数据集。 IMDb 数据子集可供个人和非商业用途。您可以下载数据集并将其存储在 亚马逊简单存储服务 (亚马逊 S3)。您可以使用以下 Spark SQL 代码段在 AWS Glue 中创建表。对于这个例子,我们使用 title_ratings
和 title
:
将数据存储在 Amazon S3 中,将元数据存储在 AWS Glue 中
在这种情况下,我们的数据集存储在 S3 存储桶中。 Athena 有一个 S3 连接器,允许您使用 Amazon S3 作为可查询的数据源.
对于我们的第一个查询,我们提供输入“我对此不熟悉。你能帮我查看 imdb 架构中的所有表和列吗?”
以下是生成的查询:
以下屏幕截图和代码显示了我们的输出。
对于第二个查询,我们要求“显示美国地区评分超过 9.5 的所有标题和详细信息”。
以下是我们生成的查询:
回复如下。
对于第三个查询,我们输入“Great Response!现在给我展示所有评分超过 7.5 且不在美国地区的原创类型游戏。”
生成以下查询:
我们得到以下结果。
生成自我更正的 SQL
此场景模拟存在语法问题的 SQL 查询。此处,生成的 SQL 将根据 Athena 的响应进行自我更正。在接下来的回应中,雅典娜给出了 COLUMN_NOT_FOUND
错误并提到 table_description
无法解决:
将解决方案与其他数据源结合使用
要将该解决方案与其他数据源一起使用,Athena 会为您处理这项工作。为此,雅典娜使用 数据源连接器 可以与 联合查询。您可以将连接器视为 Athena 查询引擎的扩展。预构建的 Athena 数据源连接器适用于以下数据源: Amazon CloudWatch日志, Amazon DynamoDB, Amazon DocumentDB(与 MongoDB 兼容)及 亚马逊关系数据库服务 (Amazon RDS) 以及符合 JDBC 的关系数据源,例如 Apache 2.0 许可下的 MySQL 和 PostgreSQL。设置与任何数据源的连接后,您可以使用前面的代码库来扩展解决方案。欲了解更多信息,请参阅 使用 Amazon Athena 的新联合查询查询任何数据源.
清理
要清理资源,您可以从 清理您的 S3 存储桶 数据所在的位置。除非您的应用程序调用 Amazon Bedrock,否则不会产生任何成本。为了基础设施管理最佳实践,我们建议删除本演示中创建的资源。
结论
在这篇文章中,我们提出了一个解决方案,允许您使用 NLP 通过 Athena 支持的各种资源生成复杂的 SQL 查询。我们还通过基于下游流程的错误消息的多步骤评估循环来提高生成的 SQL 查询的准确性。此外,我们使用 AWS Glue 数据目录中的元数据来考虑通过 RAG 框架查询中询问的表名称。然后,我们在具有不同查询复杂性级别的各种现实场景中测试了该解决方案。最后,我们讨论了如何将该解决方案应用于 Athena 支持的不同数据源。
Amazon Bedrock 是该解决方案的核心。 Amazon Bedrock 可以帮助您构建许多生成式 AI 应用程序。要开始使用 Amazon Bedrock,我们建议遵循以下快速入门 GitHub回购 并熟悉构建生成式人工智能应用程序。你也可以尝试 知识库 在 Amazon Bedrock 中快速构建此类 RAG 解决方案。
作者简介
桑吉布熊猫 是 Amazon 的数据和机器学习工程师。凭借人工智能/机器学习、数据科学和大数据的背景,Sanjeeb 设计和开发创新的数据和机器学习解决方案,帮助全球 3P 卖家在亚马逊上管理业务,解决复杂的技术挑战并实现战略目标。除了在 Amazon 担任数据和机器学习工程师的工作之外,Sanjeeb Panda 也是一位狂热的美食家和音乐爱好者。
布拉克·格兹卢克卢 是位于马萨诸塞州波士顿的首席 AI/ML 专家解决方案架构师。他帮助战略客户采用 AWS 技术,特别是生成式 AI 解决方案来实现其业务目标。 Burak 拥有 METU 航空航天工程博士学位、系统工程硕士学位以及马萨诸塞州剑桥麻省理工学院系统动力学博士后。布拉克仍然是麻省理工学院的研究附属机构。布拉克热衷于瑜伽和冥想。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- 关于
- 以上
- ACCESS
- 精准的
- 加
- 另外
- 地址
- 添加
- 采用
- 采用
- 航空航天
- 联盟
- 后
- 再次
- AI
- AI / ML
- 目标
- 对齐
- 所有类型
- 允许
- 还
- 替代
- 时刻
- am
- Amazon
- 亚马逊RDS
- 亚马逊网络服务
- an
- 分析
- 和
- 回答
- 人类的
- 任何
- 阿帕奇
- 相应
- 应用领域
- 应用领域
- 适用
- 使用
- 建筑的
- 架构
- 保健
- AS
- 问
- At
- 亚特兰大
- 尝试
- 尝试
- 属性
- 增强
- 授权
- 可使用
- AWS
- AWS胶水
- 背景
- 基地
- 基于
- BE
- 因为
- 如下。
- 最佳
- 最佳实践
- 大
- 大数据运用
- 阻止
- 波士顿
- 带来
- 建立
- 建筑物
- 建
- 商业
- 企业
- 但是
- by
- 被称为
- 剑桥
- CAN
- 不能
- 能力
- 能力
- 关心
- 案件
- 检索目录
- Center
- 集中
- 挑战
- 挑战
- 即时通话
- 检查
- 检查
- 清洁
- CLI
- 客户
- 码
- 代码库
- 收藏
- 柱
- 列
- 结合
- 购买的订单均
- 未来
- 相比
- 比较
- 兼容性
- 完成
- 复杂
- 复杂
- 元件
- 组件
- 全面
- 地都
- 所连接
- 考虑
- 上下文
- 继续
- 控制
- 转化
- 兑换
- 正确
- 更正
- 矫正
- 价格
- 数
- 外壳
- 创建信息图
- 创建
- 创建
- 危急
- 合作伙伴
- data
- 数据科学
- 数据库
- 数据库
- 数据集
- 日期
- 日期时间
- 提升
- 示范
- 设计
- 设计模式
- 期望
- 尽管
- 详情
- 开发
- 图表
- DID
- 不同
- 讨论
- 讨论
- 不同
- do
- 文档
- 文件
- 下载
- ,我们将参加
- 动力学
- 有效
- 其他
- 出现
- enable
- 启用
- 发动机
- 工程师
- 工程师
- 丰富
- 确保
- 输入
- 企业
- 进入
- 爱好者
- 错误
- 故障
- 评估
- 甚至
- 所有的
- 例子
- 例子
- 特殊
- 执行
- 存在
- 现有
- 说明
- 延长
- 延期
- 额外
- 失败
- false
- 特征
- 反馈
- 最后
- 终于
- 寻找
- 姓氏:
- 流
- 遵循
- 以下
- 如下
- 针对
- 骨架
- 止
- 进一步
- 差距
- 给
- 生成
- 产生
- 产生
- 发电
- 代
- 生成的
- 生成式人工智能
- 得到
- 得到
- 全球
- 理想中
- 得到了
- 手柄
- 有
- 有
- he
- 帮助
- 帮助
- 此处
- 高品质
- 高度
- 他的
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 中心
- 人
- i
- 确定
- if
- 说明
- 说明
- 启示
- 重要
- in
- 不准确
- 包括
- 包括
- 合并
- 合并
- 不正确
- 增加
- 增加
- 指数
- 个人
- info
- 信息
- 基础设施
- 固有
- 本质
- 初始
- 内
- 创新
- 输入
- 例
- 说明
- 成
- 调用
- 所调用
- 问题
- 问题
- IT
- 迭代
- 工作
- 加入
- JPG
- 知识
- 湖泊
- 语言
- 大
- 大
- 学习用品
- 学习
- Level
- 各级
- 执照
- 喜欢
- 极限
- Line
- LLM
- 位于
- 爱
- 机
- 机器学习
- 使
- 制作
- 颠覆性技术
- 管理的
- 许多
- 数学的
- 可能..
- me
- 冥想
- 中等
- 提到
- 提到
- 的话
- 条未读消息
- 元数据
- 方法
- 可能
- 大幅减低
- 麻省理工学院简介
- 减轻
- ML
- 模型
- 模型
- MongoDB的
- 更多
- MS
- 多
- 多数
- 音乐
- MySQL的
- 姓名
- 名称
- 自然
- 自然语言处理
- 需求
- 需要
- 全新
- 下页
- NLP
- 非商业
- 笔记本
- 现在
- 数
- 目标
- of
- 经常
- on
- 仅由
- 打开
- 运营
- or
- 秩序
- 原版的
- 其他名称
- 我们的
- 产量
- 学校以外
- 最划算
- 通过
- 多情
- 径
- 模式
- 员工
- 性能
- 执行
- 个人
- 博士学位
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 请
- 帖子
- PostgreSQL的
- 做法
- 前
- 精确的
- 先决条件
- 当下
- 呈现
- 校长
- 市场问题
- 过程
- 过程
- 处理
- 提示
- 提供
- 提供
- 提供
- 目的
- 蟒蛇
- 查询
- 询问
- 题
- 快速
- 很快
- 报价
- 抹布
- 等级
- 评分
- 阅读
- 准备
- 现实
- 接收
- 收到
- 建议
- 参考
- 地区
- 有关
- 相应
- 留
- 遗迹
- 代表
- 请求
- 必须
- 岗位要求
- 需要
- 研究
- 居住
- 解决
- 解决
- 资源
- 尊重
- 响应
- 导致
- 成果
- 恢复
- 回报
- 右
- 升起
- 风险
- 风险
- 健壮
- 行
- 运行
- sagemaker
- 清酒
- 同
- 锯
- 脚本
- 情景
- 科学
- 搜索
- 其次
- 部分
- 看到
- 选择
- 自
- 卖家
- 发送
- 无服务器
- 服务
- 服务
- 特色服务
- 集
- 应该
- 显示
- 显示
- 如图
- 侧
- 显著
- 简易
- 简单
- 简化
- 单
- 片段
- 方案,
- 解决方案
- 解决
- 一些
- 来源
- 来源
- 火花
- 专家
- 特别是
- 阶段
- 开始
- 开始
- 州/领地
- 个人陈述
- Status
- 步
- 步骤
- 仍
- 存储
- 商店
- 存储
- 简单的
- 善用
- 串
- 结构化
- 这样
- 支持
- 肯定
- 句法
- SYS
- 系统
- 产品
- 表
- 采取
- 目标
- 任务
- 文案
- 技术
- test
- 测试
- 文本
- 比
- 这
- 枢纽
- 其
- 他们
- 然后
- 那里。
- 因此
- 博曼
- 第三
- Free Introduction
- 那些
- 三
- 通过
- 时
- 标题
- 标题
- 至
- 今晚
- 转型
- 尝试
- 二
- 类型
- 类型
- ui
- 下
- 经历
- 理解
- 除非
- 更新
- 更新
- us
- 使用
- 用过的
- 用户
- 用户
- 使用
- 运用
- 验证
- 折扣值
- 各种
- 各个
- 变化
- 通过
- 意见
- 唤醒
- 走
- 方法..
- we
- 卷筒纸
- Web应用程序
- Web服务
- 而
- 这
- 而
- 谁的
- 将
- 中
- 也完全不需要
- 工作
- 工作流程
- 写
- 写作
- X
- 瑜伽
- 完全
- 您一站式解决方案
- 你自己
- 和风网