text-to-sql-bedrock-workshop
AWS 出品的 Text-to-SQL 深度学习 Workshop,基于 Amazon Bedroc
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AWS 出品的 Text-to-SQL 深度学习 Workshop,基于 Amazon Bedroc
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Text-to-SQL Workshop 概览
企业数据仓库是过去二十年间各行业最大规模的技术投资之一。数据驱动决策已经成为现代企业的核心能力——然而,访问这些数据的"通行证"是 SQL,一门需要掌握集合论、数据类型、外键关系的技术。
即使对技术人员来说,理解一张陌生数据表的结构、找出外键关联、写出一个能正确 JOIN 的查询,都可能耗费大量时间。更不用说业务人员了:他们知道自己想从数据中找什么答案,却无法用 SQL 表达。
生成式 AI 提供了弥合这道鸿沟的可能:将自然语言问题翻译为正确的 SQL 查询。但research界多年的探索表明,Text-to-SQL 的核心难题集中在三个方面:Schema Linking(识别哪些表/列与问题相关)、JOIN 生成(处理多表关联)、各数据库方言语法差异。据统计,仅 Schema Linking 和 JOIN 两项,就在超过 50% 的测试用例中导致失败。
当前 SOTA 在 BIRD 基准上的执行准确率约为 60%,距离人类水平仍有差距。但一年内从 T5 基线的 7% 跃升至 60%,进步速度已经令人瞩目。
这个 Workshop 正是为解决上述问题而生:AWS 通过 Amazon Bedrock 提供的基础设施,结合 LangChain、DIN-SQL、RAG 等主流技术栈,构建了一套从入门到进阶的 Text-to-SQL 学习路径。
图2:SageMaker Studio 中的 Jupyter Notebook 实验环境
本 Workshop 采用模块化递进的课程设计,每个模块在前一个模块的基础上引入新技术,形成完整的学习曲线。整体架构基于 AWS SageMaker Studio 运行 Jupyter Notebook,底层通过 Amazon Bedrock 调用 LLM(大语言模型),数据库层支持 Amazon Athena(数据湖)和 RDS(关系型数据库)。
仓库根目录结构:
module_1/ ~ module_5/:五个递进模块cloudformation/:AWS CloudFormation 模板,一键部署基础设施libs/din_sql/:DIN-SQL 核心算法库utilities.py:通用工具函数(Bedrock 调用、CloudFormation 输出提取等)build_boto3_layer.sh:Lambda Layer 打包脚本基础设施架构(通过 CloudFormation 部署):
用户浏览器
│
▼
Amazon SageMaker Studio(JupyterLab 实验环境)
│ 读取 Notebooks
▼
Amazon Bedrock(Claude / Titan LLM 推理)
│
├──► Amazon Athena(数据湖查询)
│
└──► Amazon RDS / Aurora(关系型数据库)
VPC 私有网络
├─ Public Subnet(NAT Gateway)
└─ Private Subnet × 2(RDS + SageMaker)
使用 Amazon Bedrock + LangChain 的 SQLDatabase Toolkit,专注于单表查询场景下的延迟优化。Module 1 是整个 Workshop 的起点,演示了最基础的 Text-to-SQL Pipeline:从用户提问 → Schema 注入 → Prompt 组装 → LLM 推理 → SQL 执行 → 结果返回。
这个模块的核心价值在于提供一个可运行的基线系统,让学习者快速看到端到端效果,再逐步引入更复杂的场景。Module 1 内容:
01_single-table-optimized-for-latency.ipynb:单表优化版 Notebookdiabetes.csv:糖尿病医疗数据集(示例数据)这是 Workshop 的核心技术模块。DIN-SQL(Decomposed Intermediate representation N-to-SQL)是当前社区表现最好的 Text-to-SQL 方法之一,其核心思想是将复杂 SQL 生成任务分解为多个子任务,逐步解决:
每个子步骤都通过 Jinja2 模板(libs/din_sql/prompt_templates/)驱动,配合 Few-Shot 示例实现精准控制。相比单步端到端生成,分解策略能显著提升复杂多表 JOIN 查询的准确率。
同时 Module 2 还包含 02_few_shot_text2sql.ipynb,展示如何通过精心设计的示例提升少样本场景下的 Text-to-SQL 效果。
图3:Decompose-and-Prompt 方法流程图
将 RAG(检索增强生成)引入 Text-to-SQL,解决企业场景中的文档知识缺失问题——比如列名缩写、缩写语义、业务规则说明等,均以文档形式存储在向量数据库中。
Module 3 (01_text_to_sql_rag.ipynb) 演示了如何:
Text-to-SQL 的安全性问题至关重要:LLM 生成的 SQL 如果被直接执行,可能导致数据泄露、数据篡改甚至整个数据库被清空。Module 4 直面这个风险,提出了三层防护体系:
这个模块体现了 AWS 对生产环境的重视——Workshop 代码虽然以教育为目的,但安全意识贯穿始终。
最后一个模块 (01_Fine_Tune_Amazon_Titan.ipynb) 展示了如何通过模型微调进一步提升 Text-to-SQL 效果:
这一模块为有更高准确率要求的生产场景提供了进阶路径。
| 层次 | 技术选型 |
|---|---|
| LLM 推理 | Amazon Bedrock(Claude、Titan) |
| 数据库连接 | SQLAlchemy(统一接口支持 Athena/RDS) |
| Prompt 管理 | Jinja2 模板引擎 |
| Agent 框架 | LangChain(SQLDatabase Toolkit) |
| Notebook 环境 | SageMaker Studio JupyterLab |
| 基础设施 | AWS CloudFormation(VPC、SageMaker、Lambda、S3) |
| 底层 SDK | Boto3 >= 1.3 |
| 编程语言 | Python + Jupyter Notebook |
部署本 Workshop 需要以下步骤:
build_boto3_layer.sh 打包 Boto3 Lambda Layer,上传至 S3us-west-2 或 us-east-1 区域部署 CloudFormation 堆栈部署要求:
图4:SageMaker Studio 环境初始化
本 Workshop 代表了 Text-to-SQL 从理论研究走向工程实践的一个重要节点。它不是追求 SOTA 准确率的学术项目,而是:一个真实可运行的 AWS 生产参考架构。
其价值在于:
对于希望在 AWS 生态中构建智能数据查询系统的团队,这是一份不可多得的参考实现。