Text2SQL智能体学习笔记(一)——NL2SQL及执行流程介绍
第一节NL2SQL介绍一、什么是NL2SQLNL2SQL也常写作 NLP2SQL是自然语言处理NLP与数据库技术深度融合的交叉领域技术核心目标是将人类用自然语言中文、英文等表达的非结构化数据查询需求自动转换为可执行的结构化查询语言SQL语句并返回对应的数据库查询结果。它本质上是一种 “自然语言接口”Natural Language Interface to Databases, NLIDB的核心实现技术彻底改变了传统数据库 “只能通过专业语法交互” 的模式让非技术人员无需掌握 SQL 语法、无需了解底层数据库的表结构、字段关系和数据类型就能通过日常语言直接访问和分析数据库中的数据。二、NL2SQL执行流程为了更直观地理解NLP2SQL的工作机制下面我们用一个统一案例贯穿整个流程。假设业务人员提出这样一个问题“最近30天华东地区销量最高的产品是什么”系统需要从这句自然语言出发逐步完成问题理解、知识检索、SQL生成、SQL执行和结果返回。用户提出自然语言问题核心动作用户通过终端输入日常语言表达的查询需求无需掌握任何 SQL 语法或数据库结构知识输入用户原始问题文本“最近 30 天华东地区销量最高的产品是什么”输出系统接收并存储原始问题文本等待后续处理关键特点完全保留自然语言的模糊性和口语化特征系统负责后续的结构化转换问题理解与意图解析核心动作调用大语言模型 专用解析模块将非结构化自然语言转换为机器可处理的结构化查询请求关键子模块大语言模型LLM整体意图识别与语义理解时间解析模块将 “最近 30 天” 转换为精确日期范围如 2026-03-16 至 2026-04-15实体识别模块将 “华东地区” 映射为业务系统中的具体区域集合输出结构化槽位卡片查询对象 product 统计指标 sum(sales_qty) 时间范围 2026-03-16 至 2026-04-15 区域范围 华东地区 排序方式 降序(desc) 返回条数 1检索相关知识与Schema信息核心动作通过多源检索为 SQL 生成提供精准上下文从根源上解决大模型 “幻觉” 问题三大检索渠道元数据库获取表结构、字段信息、主外键关联关系orders 表、products 表、regions 表Elasticsearch 关键词检索匹配业务术语、同义词、数据口径说明确认 “销量” 对应 sales_qty 字段向量检索召回语义相似的历史问答样本和示例 SQL输出完整的 SQL 生成上下文包包含目标表、字段映射、表关联关系和参考 SQL生成候选SQL语句核心动作大模型在严格约束下生成符合业务逻辑的可执行 SQL 语句输入用户原始问题 结构化意图 检索得到的上下文包关键技术Prompt Engineering设计专用提示词引导模型生成规范 SQLSchema Linking强制模型只能使用已检索到的表和字段杜绝幻觉输出候选 SQL 语句SELECTp.product_name,SUM(o.sales_qty)AStotal_salesFROMorders oJOINproducts pONo.product_idp.product_idJOINregions rONo.region_idr.region_idWHEREo.order_dateBETWEEN2026-03-16AND2026-04-15ANDr.region_name华东地区GROUPBYp.product_id,p.product_nameORDERBYtotal_salesDESCLIMIT1;SQL校验与数据库执行核心动作对生成的 SQL 进行多层级安全与正确性校验通过后执行查询四层校验机制语法校验使用 SQL Parser 检查 SQL 语法合法性语义校验验证字段和表是否存在、关联关系是否正确业务口径校验确认使用的字段符合业务定义执行计划检查通过 EXPLAIN 查看查询性能避免全表扫描错误处理校验失败时自动触发 SQL 重写流程由大模型根据错误信息重新生成输出数据库查询结果集product_nameA产品total_sales12580返回查询结果并生成自然语言答案核心动作将结构化的数据库结果转换为用户易读的自然语言表述处理流程整理数据库返回的结构化结果补充查询条件说明统计周期、统计范围大模型按照业务模板生成自然语言答案输出最终自然语言回答“最近 30 天华东地区销量最高的产品是 A 产品累计销量为 12580 件。”可选输出配套的数据表格、柱状图或趋势图等可视化展示