深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)

深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
  • 前言
    • 1.Chat2DB
    • 2.SQL Chat
    • 3.Wren AI
    • 4.Vanna

前言

在数据驱动决策的时代,将自然语言查询转化为结构化查询语言(SQL)的能力变得日益重要。无论是小型创业公司还是大型企业,都希望能够更轻松地从海量的数据中挖掘出有价值的见解。然而,对于那些不熟悉SQL或者数据库架构的用户来说,直接编写复杂的查询语句往往是一个巨大的挑战。正是为了解决这一问题,Text2SQL技术应运而生,它允许用户通过简单的自然语言描述来获取他们所需的数据库信息。

近年来,随着人工智能和机器学习领域的迅速发展,Text2SQL技术也取得了显著的进步。多个开源项目如雨后春笋般涌现,它们致力于降低非技术人员与数据库交互的门槛,同时提高专业开发人员的工作效率。在这篇文章中,我们将深入探讨几个具有代表性的Text2SQL开源项目:Chat2DB、SQL Chat、Wren AI 和 Vanna。这些项目不仅展示了当前Text2SQL技术的最高水平,还预示了未来该领域可能的发展方向。

在文章:Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战

Text2SQL连接数据库的实践细节及示例代码

有更多的Text2SQL知识了解。

1.Chat2DB

GitHub Star :17.5k stars
GitHub链接地址:https://github.com/CodePhiliaX/Chat2DB
可私有化部署。
在这里插入图片描述

快速入门文档链接:https://chat2db-ai.com/resources/docs/start-guide/getting-started

功能:

1.创建数据库连接
数据库连接是使用Chat2DB的第一步,需要连接到你的数据库才能进行后续的操作。点击左侧的数据库连接,然后点击New connection,选择你使用的数据库,填写数据库连接信息,点击保存即可。

2.创建 AI 数据集
创建连接后,会有一个弹窗询问你是否需要设置 AI 数据集。设置 AI 数据集可以更好地帮助 AI 理解你的数据库表结构,生成更准确的答案。这也是 Chat2DB 的一大亮点。

3.使用 Chat2DB 数据库开发
连接成功后,可以双击连接或右键进入连接,然后可以在Chat2DB中进行数据库的增删改查操作,也可以使用AIGC能力,直接使用自然语言查询数据库,也可以使用SQL转自然语言。

4.已支持的数据库:

在这里插入图片描述

5.AI 生成报表
AI自动生成报表系统能够根据用户的特定需求,自动从多个数据源中提取数据,并基于这些数据的特点和趋势生成高度定制化的报表。 这些报表不仅包含丰富的图表、表格以及汇总数据,还能够通过先进的分析算法提供深入的洞察,帮助用户更直观地理解数据背后的含义,从而支持高效决策。

6.AI 对话

  • AI建表
  • AI 数据集
  • AI SQL 优化
  • AI SQL 转化
  • RestAPI接口
  • Excel 智能问答
  • AI文本生成图表
  • AI SQL 智能提示
  • AI SQL 转自然语言
  • AI 自然语言生成 SQL

2.SQL Chat

GitHub Star :4.7k stars
GitHub链接地址:https://github.com/sqlchat/sqlchat
支持本地部署
SQL Chat 是一种基于聊天的 SQL 客户端,它使用自然语言与数据库通信,实现对数据库的查询、修改、添加和删除等操作。

在这里插入图片描述
SQL Chat 是由 Next.js 构建的,它支持以下数据库,并将随着时间的推移支持更多:

  • MySQL
  • PostgreSQL
  • MSSQL
  • TiDB Cloud

功能:

数据隐私保护:所有数据库连接配置仅存储在本地浏览器中,用户可通过浏览器设置清除这些数据。确保了连接信息的安全性和隐私性。
API交互限制:仅有数据库模式信息被发送至OpenAI API,任何表数据均不上传,保障数据安全。
数据库连接能力:提供直接连接公网数据库的功能,便于用户即时查询。
查询执行限定:支持对连接的数据库执行查询操作,但限制于查询,不支持如INSERT等其他SQL操作。
SQL优化建议:能够根据提供的SQL语句给出常规优化建议,特别是对于复杂的长SQL语句有良好的分析能力。
集成会话功能:包含SQL查询执行认证的会话功能,增强用户体验。
现有局限性:目前会话功能仅限于SQL查询操作,若能扩展至全部SQL操作(包括写操作和DDL语句),将极大提升管理数据库的便利性。

3.Wren AI

GitHub Star :2.2k stars
GitHub链接地址:https://github.com/Canner/WrenAI
支持本地部署
Wren AI 是一个开源的 SQL AI 代理,它使数据、产品和业务团队能够通过聊天、内置精心设计的直观 UI 和 UX 以及与 Excel 和 Google 表格等工具无缝集成来获取见解。将 RAG 与 LLM 结合使用以查询数据库.

结合RAG(检索增强生成,Retrieval-Augmented Generation)和LLM(大语言模型,Large Language Models)以查询数据库是一个复杂的过程,涉及到多个技术和方法的融合。通过将这两个技术结合起来,可以提高信息检索和自然语言处理任务的效率和准确性。然而,正如你所指出的,这个过程在四个关键阶段面临着挑战:上下文收集、检索、SQL 生成和协作。下面是这些挑战的具体分析以及可能的解决方案,以便优化内容用于写博客。

第1阶段:上下文收集挑战
互操作性和数据链接
挑战:不同来源的数据和元数据服务之间的互操作性,以及将数据与文档存储中的元数据相关联。
解决方案:采用统一的数据模型和标准化接口来促进跨系统的信息交换。使用语义网技术如RDF(资源描述框架)和OWL(Web本体语言)可以帮助建立丰富的上下文关联。

第2阶段:检索挑战
向量存储优化和语义搜索精度
挑战:优化向量存储以提高搜索效率,同时确保语义搜索能够准确理解查询意图。
解决方案:利用先进的机器学习算法改进向量索引策略,并采用预训练的语言模型进行语义解析,以增强查询理解和结果排序。

第3阶段:SQL生成挑战
SQL查询的准确性和方言适应性
挑战:生成符合语法且可执行的SQL查询,并适应不同数据库系统的特定SQL方言。
解决方案:训练专门针对SQL生成的LLM,并集成对多种数据库系统的知识。可以考虑使用模板或模式匹配来辅助生成兼容的查询。

第4阶段:协作挑战
集体知识积累和访问控制
挑战:有效整合用户反馈以改进系统性能,同时遵守组织的数据访问政策和隐私法规。
解决方案:建立社区驱动的知识库平台,允许用户提交改进建议和错误报告。对于访问控制,应实施细粒度的权限管理机制,确保只有授权人员能访问敏感数据。

功能:

  1. 以任何语言处理数据
    Wren AI 会说您的语言,例如英语、德语、西班牙语、法语、日语、韩语、葡萄牙语、中文等。通过向 Wren AI 询问您的业务问题来解锁有价值的见解。它超越了表面的数据分析,揭示了有意义的信息,并简化了从潜在客户评分模板到客户细分的答案获取过程。

  2. 具有精心设计的 UI/UX 的语义索引
    Wren AI 实施了语义引擎架构来提供您业务的 LLM 上下文;您可以轻松地在数据架构上建立一个逻辑表示层,以帮助 LLM 更多地了解您的业务环境。

  3. 使用上下文生成 SQL 查询
    借助 Wren AI,您可以使用“建模定义语言”处理元数据、架构、术语、数据关系以及计算和聚合背后的逻辑,从而减少重复编码并简化数据联接。

  4. 无需编写代码即可获得见解
    在 Wren AI 中开始新对话时,您的问题将用于查找最相关的表。从这些中,LLM 生成三个相关问题供用户选择。您还可以提出后续问题以获得更深入的见解。

  5. 轻松导出和可视化您的数据
    Wren AI 提供无缝的端到端工作流程,使您能够轻松地将数据与 Excel 和 Google 表格等流行的分析工具连接起来。这样,您的见解仍然可以访问,从而可以使用您最熟悉的工具进行进一步分析。

Wren A开源的主要特点在于建立数据模型

在这里插入图片描述

数据模型确实为数据库或信息系统中数据的结构和关系提供了一个概念框架,而Wren AI中的“模型”、“视图”以及“实体关系图(ERD)”等概念则是这一框架的具体实现形式。下面我们将详细解释这些组件如何在Wren AI环境中运作,并且它们是如何帮助用户更好地理解和操作数据的。

- 模型

在Wren AI中,“模型”不仅仅是指传统意义上的数据模型,它是一个更复杂的单元,集成了架构、元数据、关系、计算字段以及其他自定义语义信息。这意味着每个模型都不仅仅是数据的容器,而且是具有丰富描述的数据对象集合,能够表达数据之间的复杂关系和逻辑。通过这种方式,模型可以帮助人们和AI服务更深刻地理解数据的本质,从而提高数据分析和决策的质量。

- 视图

视图作为虚拟表,是Wren AI的一个重要特性,它允许用户基于一个或多个基础模型的数据创建定制化的展示。与实际存储数据的表不同,视图并不直接存储数据,而是根据预定义的查询动态生成结果集。这种机制不仅节省了存储空间,还提供了灵活性,让用户可以根据需要快速调整数据展示的方式。此外,通过“另存为视图”的功能,用户可以保存特定的查询结果,以便于日后重复使用或分享。

  • 实体关系图(ERD)

实体关系图是在Wren AI的建模页面提供的可视化工具,用于直观地展示各个模型及其相互之间的关系。ERD以图形化的方式呈现了系统内的数据结构,使用户能够轻松识别数据元素之间的关联,如一对一、一对多或多对多的关系。在这个图表中,模型通常用蓝色块表示,而视图则用绿色块标识,这样的颜色区分有助于快速辨识不同的数据结构类型。ERD对于设计和理解复杂的数据模型特别有用,因为它能够清晰地揭示数据之间的联系,促进团队成员间的沟通和协作。

总的来说,Wren AI通过其模型、视图和ERD等功能,为用户提供了一套强大的工具来管理和分析数据,确保数据能够被高效地组织起来以满足业务需求。这些特性共同作用,不仅提高了数据处理的效率,也增强了用户对数据的理解和掌控能力。

4.Vanna

GitHub Star :12.3k stars
GitHub链接地址:https://github.com/vanna-ai/vanna
支持本地部署

Vanna 的核心是一个 Python 软件包,它使用检索增强来帮助您使用 LLM 为数据库生成准确的 SQL 查询。
在这里插入图片描述
Vanna 通过两个简单的步骤工作 - 在数据上训练 RAG“模型,然后提出问题,这些问题将返回 SQL 查询,这些查询可以设置为在向量数据库上自动运行。

训练 RAG“模型:

数据包含建表语句、相关的SQL查询示例以及对表或字段的注释等文档信息。这些信息将被转化为向量形式(即进行Embedding),并存储在专门的向量库中。这些向量表示使得系统能够高效地理解和检索结构化数据的相关信息。

问题处理与SQL生成:

向Vanna提出一个问题时,系统会在向量库中搜索与该问题最相关的信息。
检索到的相关信息会被传递给大型语言模型,它根据上下文生成适当的SQL查询。
生成的SQL查询可以直接设置为自动执行,以在您的数据库上运行,从而快速获得所需的数据结果。

选择 Vanna.AI 的原因可以归结为几个关键优势:

  • 透明度与灵活性:Vanna Python包以及前端集成的开源性质意味着用户可以获得完整的代码透明度,并且可以根据自己的需求进行定制或修改。这对于那些希望在自己的基础设施上运行解决方案、保持对技术栈完全控制的企业尤其有吸引力。

  • 复杂数据集的高精度训练数据相关性:Vanna的性能直接与其所接收的训练数据量成正比。更多的训练数据能够提高模型对于大型复杂数据集的理解和处理能力,从而提升查询结果的准确性。这对于拥有大量历史数据或者需要处理复杂查询的企业来说是一个重要的卖点。

  • 数据隐私保护:Vanna 设计之初就考虑到了安全性,确保数据库内容不会被发送到 LLM(除非特定功能要求),并且元数据存储层仅能访问架构、文档和查询信息。这种设计极大地减少了敏感数据暴露的风险,符合严格的隐私法规和企业内部的安全政策。

  • 持续改进:随着用户的使用频率增加,Vanna的模型会通过不断添加新的训练数据来优化自身的性能。这意味着系统会随着时间推移变得更加智能和高效,无需人工干预即可自我调整以适应变化的数据模式。

  • 广泛的兼容性:Vanna 提供了对多种流行数据库如 Snowflake、BigQuery、Postgres等的原生支持,并且允许用户轻松创建自定义连接器以适配其他类型的数据库,支持多种大模型及向量数据库。

  • 在这里插入图片描述

  • 多样的展示方式:Vanna 支持从 Jupyter Notebook 到 Slackbot、Web 应用程序、Streamlit应用程序等多种前端展示形式,甚至可以集成到客户的 Web应用程序中。

运行原理:

当你向Vanna提出问题时,系统将遵循一个优化的流程来确保提供准确且高效的SQL查询响应:

  • 系统首先会在训练数据中查找是否有过类似的提问记录。如果找到了相似的问题,它会使用那些已经被验证正确的SQL查询作为参考。
  • 若未找到匹配项,系统则会依据现有的数据定义语言(DDL)、相关文档或引导性查询来进行处理。
  • 接着,专门针对您架构定制的Vanna模型会基于上述信息生成相应的SQL查询。
  • 生成的SQL查询会被执行以验证其正确性和有效性。一旦通过验证,此查询就会被加入到训练数据集中,成为未来查询的一个可靠来源。
  • 如果SQL查询未能通过验证,则会有分析师介入,对查询进行修正,并将正确的版本纳入训练数据。

通过这个不断迭代和学习的过程,Vanna逐渐加深了对您数据库模式的理解,从而能够更加精准地响应更多类型的问题,并随着时间推移不断提高其性能和准确性。

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

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

相关文章

go 环境准备

配置路径: GOROOT:D:\GoGOPATH:go的工作目录 D:\workspacego 验证版本:go version 配置第三方仓库: GO111MODULE:开启mod模式GOPROXY:go语言三方库地址GOSUMDB:go语言软件包的M…

Qt/C++项目积累:3.日志管理系统 - 3.1 项目介绍

在实际工程项目中,日志系统无疑是比较重要地分析问题的手段,常用的一般是将其写入到日志文件中,或者写入数据库文件,进行分析,而工程人员或者开发人员需要实时查看日志,可能不太方便,于是就需要…

netty十八罗汉之——挖耳罗汉(Decoder)

佛教中除不听各种淫邪声音之外,更不可听别人的秘密。因他论耳根最到家,故取挖耳之形,以示耳根清净。 来看看netty的核心组件解码器Decoder Decoder的作用半包,粘包问题从模板和装饰器模式看Decoder解码原理 1.Decoder作用 最根本…

51单片机学习之旅——定时器

打开软件 1与其它等于其它,0与其它等于0 1或其它等于1,0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0 TMODTMOD|0x01;//0x010000 0…

内容中台重构智能服务:人工智能技术驱动精准决策

内容概要 现代企业数字化转型进程中,内容中台与人工智能技术的深度融合正在重构智能服务的基础架构。通过整合自然语言处理、知识图谱构建与深度学习算法三大技术模块,该架构实现了从数据采集到决策输出的全链路智能化。在数据层,系统可对接…

【redis】redis内存管理,过期策略与淘汰策略

一:Redis 的过期删除策略及处理流程如下: 1. 过期删除策略 Redis 通过以下两种策略删除过期键: 1.1 惰性删除 触发时机:当客户端访问某个键时,Redis 会检查该键是否过期。执行流程: 客户端请求访问键。…

tp6上传文件大小超过了最大值+验证文件上传大小和格式函数

问题: 最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示: $file $this->request->file(file);{"code": 1,"msg": "上传文件大小超过了最大值!","data": {"code": 1,&q…

Kreuzberg:本地OCR+多格式解析!Kreuzberg如何用Python暴力提取30+文档格式?程序员看完直呼内行!

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 我们经常需要从各种不同类型的文档中提取文本内容,无论是办公文档、图像还是PDF文件。而Kreuzberg这个Python库的出现,为我们提…

Windows程序设计29:对话框之间的数据传递

文章目录 前言一、父子对话框之间的数据传递1.父窗口获取子窗口数据2.子窗口获取父窗口数据 二、类外函数调用窗口的操作1.全局变量方式2.参数传递方式 总结 前言 Windows程序设计29:对话框之间的数据传递。 在Windows程序设计28:MFC模态与非模态对话框…

【C语言】第八期——指针

目录 1 初始指针 2 获取变量的地址 3 定义指针变量、取地址、取值 3.1 定义指针变量 3.2 取地址、取值 4 对指针变量进行读写操作 5 指针变量作为函数参数 6 数组与指针 6.1 指针元素指向数组 6.2 指针加减运算(了解) 6.2.1 指针加减具体数字…

为 Power Automate 注册 Adobe PDF Services

前言 最近,再测试如何将HTML转换成PDF,然后发现Adobe有一个免费的操作可以用,好开心,赶紧注册一下。 正文 1.先注册一个账号,然后登录到Adobe Developer 注册链接:https://www.adobe.com/go/getstarted_pow…

BY组态:工业自动化的未来,触手可及

1. BY组态软件的核心优势 简单易用:图形化界面,降低学习成本,快速上手。 高效灵活:支持多种设备协议,兼容性强,适用于多种行业。 实时监控:提供实时数据采集与可视化,助力高效决策…

有哪些开源大数据处理项目使用了大模型

以下是一些使用了大模型的开源大数据处理项目: 1. **RedPajama**:这是一个开源项目,使用了LLM大语言模型数据处理组件,对GitHub代码数据进行清洗和处理。具体流程包括数据清洗、过滤低质量样本、识别和删除重复样本等步骤。 2. …

网络安全之攻防笔记--通用安全漏洞SQL注入sqlmapOraclemongodbDB2

通用安全漏洞SQL注入&sqlmap&Oracle&mongodb&DB2 数据库类型 ACCESS 特性 没数据库用户 没数据库权限 没数据库查询参数 没有高权限注入说法 暴力猜解,借助字典得到数据 注入方式 联合注入 偏移注入 表名列名猜解不到 偏移注入 MySQL 低权限 常…

【信息系统项目管理师-案例真题】2022下半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一(24分)【问题1】(6分)【问题2】(10分)【问题3】(8分)试题二(26分)【问题1】(8分)【问题2】(8分)【问题3】(4分)【问题4】(6分)试题三(25分)【问题1】(12分)【问题2】(7分)【问题…

正点原子[第三期]Arm(iMX6U)Linux系统移植和根文件系统构建-5.3 xxx_defconfig过程

前言: 本文是根据哔哩哔哩网站上“arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …

C++初阶——简单实现list

目录 1、前言 2、List.h 3、Test.cpp 1、前言 1. 简单实现std::list,重点:迭代器,模板类,运算符重载。 2. 并不是,所有的类,都需要深拷贝,像迭代器类模板,只是用别的类的资源&am…

conda环境中运行“python --version“所得的版本与环境中的python版本不一致----deepseek并非全能

conda环境中运行python —version所得python版本与conda环境中的python版本不一致------deepseek并非全能 问题 conda环境中运行python —version所得python版本与conda环境中的python版本不一致 我所做的探索 1 网页搜索 2 求助于DeepSeek 可以用四个字来形容deepseek给出…

HarmonyOS学习第5天: Hello World的诞生之旅

鸿蒙初印象:开启探索之门 在操作系统的广袤天地中,HarmonyOS(鸿蒙系统)宛如一颗冉冉升起的新星,自诞生起便备受瞩目。它由华为倾力打造,是一款基于微内核的全场景分布式操作系统,以其独特的技术…

centos9安装k8s集群

以下是基于CentOS Stream 9的Kubernetes 1.28.2完整安装流程(containerd版): 一、系统初始化(所有节点执行) # 关闭防火墙 systemctl disable --now firewalld# 关闭SELinux sed -i "s/SELINUXenforcing/SELINU…