NL2SQL简单使用

NL2SQL概述:一文了解NL2SQL 很久没在优快云上发文了,发篇文章,攒点收录。 Author: 刘帝伟 原文地址:http://www.csuldw.com/2019/10/20/2019-10-20-nl2sql-introduction/ 对于NL2SQL,也许在以前很多人会比较陌生。自从今年6月天池出现首届中文NL2SQL挑战赛之后,算是掀起了一股浪潮,中文NL2SQL也可以说是得到了进一步的发展。NL2SQL是CUI(C... 阅读详情

NL2SQL简单使用

1 简介

将自然语言转化为SQL或者叫Text转SQL可称为NL2SQL(Natural Language to SQL) 。NL2SQL的核心作用是降低数据库查询的技术门槛,让非技术用户能用日常语言直接获取数据。 它通过自动将自然语言问题转换为SQL查询,极大地提升数据访问和决策的效率。开源比较出名的NL2SQL框架有很多,例如:Chat2DB、Vanna、WrenAI、sqlchat等。

(1)Chat2DB

Chat2DB是国产的开源项目,可支持MySQL, PostgreSQL, H2, Oracle, SQLServer, SQLite, MariaDB, ClickHouse, DM, Presto, DB2, OceanBase, Hive, KingBase, MongoDB, Redis, Snowflake等数据库。优点是具有可视化页面,可快速搭建。不足之处是开源版本可以使用的功能较少,不过功能基本够用了。不太合适进行定制开发。它具有三个版本,开源版本和收费版本(2个)。Docker安装相对容易。

# Github地址
https://github.com/CodePhiliaX/Chat2DB

# 官网文档地址
https://chat2db-ai.com/resources/docs/start-guide/about-chat2db

(2)Vanna

Vanna是一个专为NL2SQL任务设计的Python RAG(Retrieval-Augmented Generation))框架,用于SQL生成和相关功能,它的核心作用是让开发者能够基于自己的数据库 schema 和业务上下文,快速、安全地训练和部署一个高度定制化且准确的文本转SQL生成应用。优点是方便定制化。

# Github地址
https://github.com/vanna-ai/vanna

# 官网文档地址
https://vanna.ai/docs/

(3)WrenAI

WrenAI是一个GenBI智能体,可以在几秒钟内使用自然语言查询数据库,获得准确的SQL(文本到SQL)、图表(文本到图表)和AI生成的深度洞察。支持的数据库有Athena (Trino)、Redshift、BigQuery、DuckDB、PostgreSQL、MySQL、Microsoft SQL Server、ClickHouse、Oracle、Trino、Snowflake。优点是具有可视化页面。也具有三个版本。开源版本和收费版本(2个)。使用Docker安装的组件比较多,不太好安装,放弃。

# Github地址
https://github.com/Canner/WrenAI

# 官网文档地址
https://docs.getwren.ai/oss/overview/introduction

(4)sqlchat

Sqlchat很久没更新了。

# Github地址
https://github.com/sqlchat/sqlchat

2 创建数据库

2.1 创建MySQL容器

docker run -itd \
-p 3306:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysqldb \
mysql:8.0.29

⚠️ 连接出错“Public Key Retrieval is not allowed”的解决方法,设置“allowPublicKeyRetrieval”为true。

使用工具连接时

在这里插入图片描述

使用代码连接时

jdbc:mysql://localhost:3306/your_database?allowPublicKeyRetrieval=true

2.2 创建表结构

-- 创建数据库
CREATE DATABASE IF NOT EXISTS company_salary CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE company_salary;

-- 工资表
CREATE TABLE salary_records (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增ID',
    employee_id VARCHAR(10) NOT NULL COMMENT '员工编号,唯一标识员工',
    name VARCHAR(50) NOT NULL COMMENT '员工姓名',
    department VARCHAR(50) COMMENT '所属部门,如技术部、人事部等',
    position VARCHAR(50) COMMENT '职位名称',
    base_salary DECIMAL(10,2) DEFAULT 0.00 COMMENT '基本工资,税前基础薪资',
    bonus DECIMAL(10,2) DEFAULT 0.00 COMMENT '奖金,绩效或项目奖励',
    deductions DECIMAL(10,2) DEFAULT 0.00 COMMENT '扣款,含社保、公积金、个税等',
    net_salary DECIMAL(10,2) AS (base_salary + bonus - deductions) STORED COMMENT '实发工资,自动计算字段',
    pay_date DATE COMMENT '发薪日期,通常为每月固定日期',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工工资记录表,存储每位员工的月度工资明细';

2.3 添加数据

-- 选择数据库
USE company_salary;

-- 添加数据库
INSERT INTO salary_records 
(employee_id, name, department, position, base_salary, bonus, deductions, pay_date) VALUES
('EMP0001', '张伟', '技术部', '前端开发工程师', 8500.00, 1200.00, 950.00, '2025-08-05'),
('EMP0002', '李娜', '技术部', '前端开发工程师', 6000.00, 800.00, 700.00, '2025-08-05'),
('EMP0003', '王强', '技术部', '前端开发工程师', 9500.00, 1500.00, 1100.00, '2025-08-05'),
('EMP0004', '陈静', '技术部', '算法工程师', 7000.00, 900.00, 800.00, '2025-08-05'),
('EMP0005', '刘洋', '技术部', '算法工程师', 5500.00, 2000.00, 600.00, '2025-08-05'),
('EMP0006', '赵敏', '技术部', '算法工程师', 6800.00, 1100.00, 750.00, '2025-08-05'),
('EMP0007', '孙浩', '技术部', '算法工程师', 10000.00, 1800.00, 1300.00, '2025-08-05'),
('EMP0008', '周琳', '销售部', '销售经理', 7500.00, 1000.00, 850.00, '2025-08-05'),
('EMP0009', '吴磊', '销售部', '销售经理', 8000.00, 2500.00, 1000.00, '2025-08-05'),
('EMP0010', '徐婷', '销售部', '销售经理', 9000.00, 1300.00, 950.00, '2025-08-05'),
('EMP0011', '黄峰', '销售部', '销售经理', 7500.00, 900.00, 780.00, '2025-08-05'),
('EMP0012', '何娟', '销售部', '销售经理', 8200.00, 1100.00, 880.00, '2025-08-05'),
('EMP0013', '马超', '销售部', '销售经理', 8800.00, 3000.00, 1100.00, '2025-08-05'),
('EMP0014', '高翔', '销售部', '销售经理', 10500.00, 1600.00, 1200.00, '2025-08-05'),
('EMP0015', '林雪', '技术部', '后端开发工程师', 7800.00, 1300.00, 820.00, '2025-08-05'),
('EMP0016', '邓杰', '技术部', '后端开发工程师', 6200.00, 950.00, 680.00, '2025-08-05'),
('EMP0017', '罗丹', '技术部', '后端开发工程师', 9500.00, 1800.00, 980.00, '2025-08-05'),
('EMP0018', '谢鹏', '技术部', '后端开发工程师', 9200.00, 1400.00, 1020.00, '2025-08-05'),
('EMP0019', '宋佳', '技术部', '后端开发工程师', 5800.00, 700.00, 600.00, '2025-08-05'),
('EMP0020', '程明', '技术部', '后端开发工程师', 8000.00, 1200.00, 850.00, '2025-08-05'),
('EMP0021', '朱莉', '市场部', '项目经理', 6500.00, 1000.00, 720.00, '2025-08-05'),
('EMP0022', '韩磊', '市场部', '项目经理', 8300.00, 1100.00, 900.00, '2025-08-05'),
('EMP0023', '唐敏', '市场部', '项目经理', 5900.00, 750.00, 680.00, '2025-08-05'),
('EMP0024', '冯伟', '市场部', '项目经理', 5600.00, 1800.00, 620.00, '2025-08-05'),
('EMP0025', '许静', '人事部', 'HR经理', 8800.00, 1400.00, 930.00, '2025-08-05'),
('EMP0026', '丁浩', '人事部', 'HR经理', 15000.00, 2500.00, 1800.00, '2025-08-05'),
('EMP0027', '江雪', '财务部', '会计', 7100.00, 920.00, 790.00, '2025-08-05'),
('EMP0028', '白洋', '财务部', '会计', 6000.00, 880.00, 660.00, '2025-08-05'),
('EMP0029', '夏婷', '财务部', '会计', 6300.00, 950.00, 700.00, '2025-08-05'),
('EMP0030', '尹杰', '财务部', '会计', 5500.00, 600.00, 580.00, '2025-08-05');

2.4 数据结果

在这里插入图片描述

3 Chat2DB简单使用

3.1 安装容器

使用Docker安装软件系统。

docker run -itd \
--name=chat2db \
-p 10824:10824 \
-v /home/chat2db:/root/.chat2db \
chat2db/chat2db:0.3.7

3.2 简单使用

访问服务地址(192.168.108.147是我的服务器地址)

http://192.168.108.147:10824/

登录Chat2DB

默认的账号和密码都是:chat2db

在这里插入图片描述

设置连接数据库的基本信息

在这里插入图片描述

设置大模型信息
(Text2sql.assets/image-20250920195914192.png)
在这里插入图片描述

可能是我没配置好一直报错

在这里插入图片描述

dify中使用NL2SQL 务须确保本地已完成 Docker 之安装,并通过 Git 克隆 Dify 之代码库抑或下载源码包。运用双向模式链接技术(诸如 RSL-SQL 框架),结合 LLM 生成的关键组件以及精确列名匹配,增进相关表/列的召回率,削减冗余信息的干扰。经由上述步骤,能够在 Dify 中高效达成 NL2SQL 能力,将自然语言查询转化为可执行的数据库操作,显著降低非技术用户的数据访问门槛。运用 Dify 的智能体编排功能,分配不同模型处理任务(如 Claude 解析用户意图,GPT-4 生成 SQL),平衡成本与性能。 阅读详情

相关推荐

智能问数技术路径对比:NL2SQL vs NL2Semantic2SQL

在开发阶段,指标平台通过配置化界面(如模板点选、表达式编辑器)降低了定义指标的技术门槛,使分析师和具备一定数据知识的业务人员也能参与或主导指标的创建和维护,减少对 IT 工程师的依赖,提升业务用数的自主性。基于预定义的语义模型(包含指标的业务逻辑和表间关联关系),系统能够解析用户查询的语义,并自动生成正确的 SQL,避免了人工开发的繁琐过程。同时,平台提供指标定义的详细依赖关系和指标的多版本管理,实现了指标加工逻辑的全链路透明化,并保存指标历史变更记录,便于追溯和审计。

weixin_42684533的博客 1726

NL2SQL学习

在学习NL2SQL之前先要进行三W提问:即what 是什么;why 为什么使用;how 如何使用。

clover_oreo的博客 4339

【综述】NL2SQL (一) 简介及数据集

目录 简介 1. WikiSQL 2. Spider 3. WikiTableQuestions 4. ATIS 5. 首届中文NL2SQL挑战赛数据集 下载地址 简介 NL2SQL(Natural Language to SQL)是一项将用户的自然语句转为可执行 SQL 语句的技术,对改善用户与数据库之间的交互方式有很大意义。NL2SQL 的本质,是将用户的自然语言语句转化为计...

black_soil的专栏 1万+

LLM驱动的NL2SQL方法论:现状、难点、优化

Natural Language to SQL (NL2SQL) 是指将用户的自然语句转为可以执行的 SQL 语句。综合考虑上述Prompt策略,以及经过大量的实践,我们可以总结一套比较通用的NL2SQL的Prompt方案。

lengm 9068

nl2sql是什么

NL2SQL 是 “自然语言处理” 与 “数据库技术” 融合的典型落地场景,其本质是消除 “人类语言” 与 “机器语言” 之间的鸿沟。随着大模型技术的发展,NL2SQL 的准确率和泛化能力持续提升,正逐步从 “辅助工具” 转变为 “人人可用的数据交互入口”,推动数据价值的普惠化。

mayaohao的博客 1018

nl2sql的解药pipe syntax

更重要的是,随着大模型技术的成熟和语义层的完善,NL2SQL+管道语法将从"可选组件"演变为"核心中枢",成为企业数据智能的基础设施。管道语法(Pipe Syntax)的出现,为NL2SQL技术提供了一剂强效解药,它不仅简化了SQL查询的编写过程,更通过线性化的操作流程显著提升了NL2SQL生成的SQL语句的可读性、可维护性和执行效率。管道语法作为NL2SQL的"解药",通过其线性化的操作表达、清晰的流程映射和高效的执行优化,显著提升了自然语言到SQL转换的准确性和效率。随着技术的不断演进,

Learning 1199

NL2SQL-BUGs:用于检测NL2SQL翻译中语义错误的基准

检测NL2SQL翻译中的语义错误需要对可能出现的错误类型有一个清晰和结构化的理解。基于对NL2SQL系统的研究,我们提出了一种全面的两级分类法来对NL2SQL翻译中的语义错误进行分类。NL2SQL中的语义错误分类基于SQL查询的结构、常见的翻译错误及其对查询语义的影响。这种方法允许在查询生成的各个阶段系统地识别错误,帮助确定翻译错误发生的位置和原因。因此,如图 [fig:taxonomy] 所示,我们将语义错误分为9个主要类别,例如 属性相关错误。

栖客 1977

NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]

NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]

丨汀、的博客 1万+

NL2SQL技术调研

自然语言到SQL(NL2SQL),也被称为文本到SQL,是将自然语言查询转换为可在关系数据库上执行的相应SQL查询的任务。具体来说,给定一个NL和一个DB,NL2SQL的目标是生成一个准确反映用户意图并能在数据库上执行时返回适当结果的SQL。

weixin_61597480的博客 3453

一文速学-零成本与数据沟通NL2SQL的概念和实现技术

NL2SQL的出现,彻底改变了人与数据交互的方式。它通过将复杂的SQL查询隐藏在自然语言输入背后,极大地降低了数据获取的门槛,让业务人员无需依赖技术背景就能直接获取所需的信息。随着自然语言处理技术的不断进步,NL2SQL的应用场景将愈加广泛,覆盖从企业报表到智能客服等各个领域。未来,随着模型的泛化能力增强和实时性能优化,我们可以期待NL2SQL技术在数据驱动的决策中扮演更加重要的角色,让“零成本与数据沟通”真正成为可能。

master_hunter的博客 4073

NLP的重要里程碑:从NL2SQL到语言与SQL查询的转换

自然语言处理(NLP)是人工智能领域的一个重要研究方向,旨在使计算机能够理解和处理人类语言。近年来,NL2SQL(自然语言到结构化查询语言)成为NLP领域的一个重要里程碑,它涉及将自然语言查询转换为数据库查询语言,为用户提供更方便和直观的数据检索方式。本文将深入探讨NL2SQL的背景、挑战和解决方案,并提供相应的源代码示例。

DbjkKubernetes的博客 1506

NL2SQL的发展

前言 NL2SQL(Natural Language to SQL)是一项将用户的自然语句转为可执行 SQL 语句的技术,有很大的实际应用价值,对改善用户与数据库之间的交互方式有很大意义。在本文中,追一科技介绍了 NL2SQL 的价值,及其过去、现在与未来,希望能有更多关于 NL2SQL 的落地场景研究。 NL2SQL 的价值 在 AI、区块链、IoT、AR 等高新技术飞速发展的当下,数据库...

baidu_33512336的博客 8670

VIPER22A实战:从零搭建15W非隔离电源,附BUCK电路调试心得

本文详细介绍了使用VIPER22A芯片从零搭建15W非隔离电源的全流程,重点解析BUCK电路设计与调试技巧。通过核心参数计算、PCB布局优化和效率提升方案,帮助工程师快速掌握DC-DC电源设计要点,实现高效稳定的电源转换。

redis7keeper的博客 669

NL2SQL调研

将用户的自然语言查询(NL)转换为 SQL 查询可以显著降低访问关系数据库的障碍,并支持各种商业应用。随着大语言模型(LLMs)的出现,NL2SQL 的性能得到了极大提高。在这种情况下,评估当前文本转 SQL 的转换、确定从业者针对特定场景应采用的 NL2SQL 解决方案以及确定研究人员接下来应探索的研究主题至关重要。

m0_57280180的博客 1568

Ubuntu20.04下Intel RealSense D435i相机驱动配置全攻略(含ROS Noetic适配)

本文详细介绍了在Ubuntu20.04系统下配置Intel RealSense D435i相机驱动的完整流程,包括libRealsense SDK 2.0安装、ROS Noetic适配及常见问题解决方案。通过实战指南帮助开发者快速实现深度相机与ROS的集成,适用于机器人视觉和SLAM应用开发。

weixin_29281915的博客 512

RT-Thread stm32h7使用串口DMA

stm32h7在rtthread中无法使用串口DMA,通过更改驱动代码使其支持串口DMA

qq_35141454的博客 2286

ZeroNL2SQL:零样本 NL2SQL

自然语言到 SQL(NL2SQL)的转换是一个重要的研究领域,它允许非技术用户轻松访问和分析数据,在商业智能、数据分析等领域具有广泛的应用前景。然而,现有的 NL2SQL 方法在面对新的数据库、新的语言现象或 SQL 结构时,往往表现出性能下降的问题。为了解决这一问题,本文研究零样本 NL2SQL,旨在构建一个能够适应各种测试环境的 NL2SQL 模型,而不需要来自测试环境的标注样本。

AwaysLine 1720

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

200nl2sql

核心价值通过动态权重平衡中文复杂性与SQL性能,使模型在方言理解(如粤语术语)、嵌套查询等场景鲁棒性提升30%+。标量奖励简化PPO/DPO训练,加速收敛(实验显示训练迭代次数减少40%)。待突破挑战中文省略结构的完备性补全(如“同比”需补时间范围)。权重公式的领域自适应自动化(当前需人工预配置)。注:实际落地可参考阿里云PolarDB的动态权重配置接口或Spring AI Alibaba的语义一致性校验模块,两者均支持中文场景的标量奖励扩展。

bvip911的博客 1204

vue3+vite - 解决报错error while updating dependencies:Error:EACCES:permission denied,mkdir ‘x‘(系统权限问题)

vue3,vite,报错,nuxt,权限,苹果mac系统,windows系统,vue3报错,vite报错,node,详细解决方法,教程,[vite] error while updating dependencies: Error:EACCES:permission denied,mkdir 'x',更新依赖项时发生[vite]错误:错误:EACCES:权限被拒绝,mkdir,苹果mac系统加了sudo还是不行报错,运行报错,启动项目,run dev,创建项目,初始化,依旧不行怎么办,保权限没有问题,换了n

✅ 精选推荐文章 5556

UWB芯片DW3000之PDOA测向实现源码

本文详细介绍如何基于UWB芯片DW3000之PDOA测向的源码实现。

DT程序员的博客 2615
上一篇: Agno智能体框架简单使用
下一篇: 简单使用Vanna
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值