9个优秀的Text2Sql(Chat2Sql)开源项目、资源

news2024/11/17 3:43:23

过去,领导、决策者或业务人员想要统计个数据、做个报告,总是绕不开技术人员的支持。领导需要将想法告诉技术人员,技术人员再将领导的想法转成技术语言(例如:sql),然后对数据进行统计分析,以满足领导的期望。整个过程非常低效!

随着大模型能力逐步强大、场景越来越丰富,从Text到sql或者从Chat到sql的方案也十分火热,这个方案主要是利用大模型将自然语言转化为可以执行的Sql语句,进行数据分析,并根据结果实现报告生成或者可视化展示。这种方案提高了领导们随时想要报告的效率,缓解了应对向上汇报的焦虑,在许多决策支持、大屏展示等场景中非常见效。

本文主要收集了几个比较优秀的Text2Sql相关的开源项目或者资源,供借鉴。

01

Chat2db

GitHub Star 14K

https://github.com/chat2db/chat2db

图片

图片

图片

图片

Chat2DB旨在成为一个通用的SQL客户端和报告工具,从一开始就包含AI功能。它支持几乎所有比较流行的数据库、缓存,包括:

MySQL

PostgreSQL

H2

Oracle

SQLServer

SQLite

MariaDB

ClickHouse

DM

Presto

DB2

OceanBase

Hive

KingBase

MongoDB

Redis

Snowflake

图片

图片

此外,chat2DB还提供了它的7B开源模型:

GitHub:

https://github.com/chat2db/Chat2DB-GLM

Huggingface:

https://huggingface.co/Chat2DB/Chat2DB-SQL-7B

Modelscope:

https://modelscope.cn/models/Chat2DB/Chat2DB-SQL-7B

02

GitHub Star 4K

https://github.com/sqlchat/sqlchat

图片

图片

图片

图片

图片

图片

SQL Chat是一个基于聊天的SQL客户端,您可以使用自然语言与数据库进行通信,以实现查询、修改、添加和删除等操作。

它目前支持MySQL,Postgres,SQL Server和TiDB无服务器。

03

GitHub Star 7.7K

https://github.com/vanna-ai/vanna

图片

图片

Vanna是一个开源的开源Python RAG(检索增强生成)框架。Vanna通过整合上下文(元数据、定义、查询等)以及领域知识文档来训练RAG模型。在Vanna框架的基础上可以使用现有工具(例如Streamlit、Slack)构建自定义可视化UI,实现对话结果的可视化。

Vanna通过两个简单的步骤进行操作:

(1)基于数据训练RAG“模型”。

(2)提出问题返回SQL查询,并且可以将查询配置为在数据库上自动运行。

图片

图片

04

Dataherald

GitHub Star 3.1K

https://github.com/Dataherald/dataherald

图片

图片

Dataherald是一个自然语言到SQL引擎,为在关系数据库上的企业级问答而构建。它允许您从数据库中设置一个API,可以用简单的对话进行问答。

他的功能包括:

允许业务用户从数据仓库中获得结果,而无需通过数据分析师

在SaaS应用程序中启用来自生产数据库的Q+A

从您的专有数据创建ChatGPT插件

Dataherald开源代码库包含四大模块:引擎、管理控制台、企业后端和Slackbot。其中,核心引擎模块包含了LLM代理、向量存储和数据库连接器等关键组件。Dataherald 代码的亮点之一是模块化设计,将不同的功能模块封装成独立的类和方法,便于代码维护和扩展,也使得 Dataherald 可以轻松地集成新的工具和功能。

05

GitHub Star 1K

https://github.com/Canner/WrenAI

图片

图片

图片

图片

WrenAI是一个文本到SQL的解决方案,数据团队可以通过询问业务问题而无需编写SQL,可更快地获得分析结果。

其核心理念是利用  LLMs 和  RAG  技术的优势,将自然语言转换为  SQL  查询,并从数据库中检索数据。用户只需用自然语言提出问题,例如“上个月哪个产品的销量最高?”,WrenAI 就能自动将其转换为相应的  SQL  查询,并返回准确的结果。

WrenAI  的核心功能和优势:

开源免费: 用户可以根据自己的需求自由部署和使用  WrenAI。开源的力量,让  WrenAI  更加强大!

06

https://github.com/tencentmusic/supersonic

图片

图片

图片

图片

模型知识库(Knowledge Base): 定期从语义模型中提取相关的模式信息,构建词典和索引,以便后续的模式映射。

模式映射器(Schema Mapper): 将自然语言文本在知识库中进行匹配,为后续的语义解析提供相关信息。

语义解析器(Semantic Parser): 理解用户查询并抽取语义信息,生成语义查询语句S2SQL。

语义修正器(Semantic Corrector): 检查语义查询语句的合法性,对不合法的信息做修正和优化处理。

语义翻译器(Semantic Translator): 将语义查询语句翻译成可在物理数据模型上执行的SQL语句。

问答插件(Chat Plugin): 通过第三方工具扩展功能。给定所有配置的插件及其功能描述和示例问题,大语言模型将选择最合适的插件。

图片

图片

SuperSonic融合Chat BI(powered by LLM)和Headless BI(powered by 语义层)打造新一代的BI平台。这种融合确保了Chat BI能够与传统BI一样访问统一化治理的语义数据模型。此外,两种BI新范式都从中获得收益:

Chat BI的Text2SQL生成通过检索语义数据模型得到增强。

Headless BI的查询接口通过支持自然语言API得到拓展。

通过SuperSonic的问答对话界面,用户能够使用自然语言查询数据,系统会选择合适的可视化图表呈现结果。SuperSonic不需要修改或复制数据,只需要在物理数据模型之上构建逻辑语义模型(定义指标/维度/实体/标签,以及它们的业务含义、相互关系等),即可开启数据问答体验。与此同时,SuperSonic被设计为可插拔的框架,采用Java SPI机制来扩展定制功能。

07

https://github.com/eosphoros-ai/Awesome-Text2SQL

图片

图片

08

https://github.com/NumbersStationAI/DuckDB-NSQL

图片

图片

DuckDB-NSQL是一个由MontherDuck和Numbers Station为DuckDB SQL分析任务构建的Text 2SQL LLM。可以帮助用户利用DuckDB的全部功能及其分析潜力,而不需要在DuckDB文档和SQL shell之间来回切换。

09

文档:

https://python.langchain.com/v0.1/docs/use_cases/sql/

图片

图片

Langchain是一个比较知名的大模型应用框架,但其实,Langchain也可以让我们在自己在SQL数据库上构建一个问答链代理。

可以将LangChain的SQL代理添加到链上。它不仅可以根据数据库的模式和内容回答问题,还可以通过运行生成的查询、捕获回溯,并从错误中恢复,重新生成。

最后

由于大模型的发展是一个逐步增强的过程,在这个过程中,许多大模型还存在不确定、不稳定。在使用基于大模型的Text2Sql方案所生成的SQL查询还需要格外小心验证,以最小化应用风险。

尽量做到:清楚描述数据库上下文、限制数据查询输出的大小、在执行之前验证和检查生成的SQL语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

electron基础使用

安装以及运行 当前node版本18,按照官网提供操作,npm init进行初始化操作,将index.js修改为main.js,执行npm install --save-dev electron。(这里我挂梯子下载成功了。),添加如下代码至package.…

政务云参考技术架构

行业优势 总体架构 政务云平台技术框架图,由机房环境、基础设施层、支撑软件层及业务应用层组成,在运维、安全和运营体系的保障下,为政务云使用单位提供统一服务支撑。 功能架构 标准双区隔离 参照国家电子政务规范,打造符合标准的…

TensorFlow图像识别项目

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 目录 今天我们将讨论如何部署Flask项…

星网络 StarNet: Rewrite the Stars

论文题目:Rewrite the Stars 论文链接:http://arxiv.org/abs/2403.19967 代码链接:https://github.com/ma-xu/Rewrite-the-Stars 一、摘要 揭示星操作将输入映射到高维、非线性特征空间的能力——类似于核技巧——而无需扩展网络。提出了S…

第7章 用户输入和 while 循环

第7章 用户输入和 while 循环 7.1 函数 input()的工作原理7.1.1 编写清晰的程序7.1.2 使用 int()来获取数值输入7.1.3 求模运算符 7.2 while 循环简介7.2.1 使用 while 循环7.2.2 让用户选择何时退出7.2.3 使用标志7.2.4 使用 break 退出循环7.2.5 在循环中使用 continue7.2.6 …

Django DetailView视图

Django的DetailView是一个用于显示单个对象详情的视图。下面是一个使用DetailView来显示单个书籍详情的例子。 1,添加视图 Test/app3/views.py from django.shortcuts import render# Create your views here. from django.views.generic import ListView from .m…

deepin V23 新进展!deepin 成功适配 MilkV Mars

内容来源:deepin(深度)社区 deepin-ports SIG(Special Interest Group,特别兴趣小组),deepin(深度)社区积极与各大厂商展开合作,参与对 RISC-V 架构和设备的适…

鸿蒙原生开发——轻内核A核源码分析系列三 物理内存(2)

3.1.2.3 函数OsVmPhysLargeAlloc 当执行到这个函数时,说明空闲链表上的单个内存页节点的大小已经不能满足要求,超过了第9个链表上的内存页节点的大小了。⑴处计算需要申请的内存大小。⑵从最大的链表上进行遍历每一个内存页节点。⑶根据每个内存页的开始…

10秒变鬼短视频:四川鑫悦里文化传媒有限公司

10秒变鬼短视频:创意与惊悚的完美融合 在短视频的世界里,创新与独特性 节奏、巧妙的剪辑和惊悚的氛围,成为了许多观众喜爱的对象。四川鑫悦里文化传媒有限公司将探讨“10秒变鬼”短视频的创作技巧、受众心理以及其对短视频行业的启示。 一…

人脸识别系统---多人脸提取

一、多人脸提取 1.导包、设置窗口、选择文件夹里图片的函数和单人脸提取一致,此处省略(详情看‘单人脸提取’) 2.对图像进行处理,在窗口画布上显示出来 2.1定义名为tq的函数,在函数内部声明了三个全局变量file_path…

[Spring Boot实战] 如何快速地创建spring boot项目

文章目录 一、背景说明二、环境说明三、创建步骤3.1 选择项目JDK版本和Initializer服务地址3.2 设置项目的元数据3.3 引入依赖3.4 选择项目路径 四、额外的工作五、问题5.1 为什么使用Lombok? 一、背景说明 使用spring boot创建JAVA项目,是目前比较主流…

数据结构与算法笔记:基础篇 - 红黑树(下):掌握这些技巧,你也可以实现一个红黑树

概述 红黑树是一个让人又爱又恨的数据结构,“爱” 是因为它稳定、高性能,“恨” 是因为实现起来实在太难了。本章讲红黑树的实现,对于基础不太好的同学,理解起来可能会有些困难。但是,我觉得没有必要去死磕它。 为什…

一个公用的数据状态修改组件

灵感来自于一项重复的工作,下图中,这类禁用启用、审核通过不通过、设计成是什么状态否什么状态的场景很多。每一个都需要单独提供接口。重复工作还蛮大的。于是,基于该组件类捕获组件跳转写了这款通用接口。省时省力。 代码如下:…

专业学习|博弈论-课程沿革

学习来源:北京大学刘霖《博弈论》MOOC公开课 备注:仅做学习分享,请勿转载,转载必究! (一)博弈论的预备知识 基本的微积分的知识和概率论的知识。简单的说会求导数,会求简单的积分&am…

文案策划日常大公开:掌握这些技巧,让你工作效率翻倍

本周的工作和生活安排得满满当当,但这些看似繁重的任务,其实都是我利用碎片化时间高效完成的。 这里和大家分享一下,我是如何在这忙碌的一周中,既完成本职工作又享受生活的。 本周工作日常汇总: 1. 品牌小红薯笔记&…

Java高阶数据结构-----并查集(详解)

目录 🧐一.并查集的基本概念&实例: 🤪二.并查集代码: 😂三:并查集的一些习题: A.省份数量 B.等式方程的可满足性 🧐一.并查集的基本概念&实例: 并查集概念&…

5.3 数据模型设计总结

概述: 数据模型设计是指根据需求和目标设计出合适的数据模型的过程。数据模型是对现实世界中数据的抽象和表示,它定义了数据的结构、关系和约束。数据模型设计的目标是保证数据的一致性、完整性和可用性,同时满足系统性能和可扩展性的要求。…

Python基础教程(十二):模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

【Java】解决Java报错:IOException during File Operations

文章目录 引言一、IOException的定义与概述1. 什么是IOException?2. IOException的常见触发场景3. 示例代码 二、解决方案1. 检查文件是否存在2. 使用try-with-resources语句3. 捕获和处理IOException4. 使用NIO进行文件操作 三、最佳实践1. 检查文件状态2. 使用try…

为什么你应该本地化你的软件

本地化您的软件是一项战略举措,可以显著提高其成功率和影响力。以下是您应该投资于软件本地化的几个令人信服的原因: 扩大您的市场覆盖范围 通过本地化您的软件,您可以开拓新市场并接触到更广泛的受众。许多用户更喜欢甚至需要他们母语的软…