百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

NL2SQL(三)开源项目怎么选:talk is cheap, show me the code!

mhr18 2025-07-06 14:59 3 浏览 0 评论

老规矩,先看效果

下面的 demo 来自试用的 SuperSonic,将会在下面详细介绍:

大模型时代 Text-to-SQL 特点

随着基于 LLM 技术的发展,RAG / AI Agent / Fine-tuning 等方法也广泛应用于 Text-to-SQL 领域,大模型时代发展出如下特点:

  • 平台化

提高兼容性,便于接入其他产品,生产环境下,不同产品 schema 定义不一样,甚至用的数据库都不一样,比如:mysql / postgressql / nosql ...,就要求具有平台的兼容特点

  • 插件化

提高扩展性,便于功能扩展,如:

提供记忆功能,缓存用户问题,提高响应速度;

提供 tools 调用功能,用于返回数据的后处理(LLM的数据计算能力,一直是限制产业试用的短板);

提供结果渲染功能,生成表格,图片,报告,markdown

  • 自我进化

评测 -> 反馈 -> 优化,形成闭环,不丰富数据集,提高准确性。text2sql 本质是数据产品,高质量的数据集决定了项目成功与否

  • 成本控制

大模型调用按照 token 数量算钱,本地部署也需要占用算力资源,因此如何优化 prompt template,降低成本,也是必须考虑的因素

开源项目详细介绍

借助这些开源项目,可以方便快速构建出 demo,对方案验证很有作用。这些开源项目,大多能方便导入自己的数据库配置,而且可以本地化部署,保证数据安全;同时还能配置不同的 LLM,让系统能力与时俱进,比如可以接入当下能力很强的 claude-3.7,openai-o1,deepseek-r1 ...

DB-GPT & DB-GPT-hub

https://github.com/eosphoros-ai/DB-GPT

https://github.com/eosphoros-ai/DB-GPT-Hub

https://github.com/antvis/GPT-Vis

AI Agent + RAG + Fine-tuning

设计架构图:

调研特点总结:

1. 支持微调(fine-tuning)

微调支持的模型:LLaMA、LLaMA-2、BLOOM、BLOOMZ、Falcon、Baichuan、Baichuan2、InternLM、Qwen、XVERSE、ChatGLM2

支持的微调技术:LoRA / QLoRA / Pturning

2. 有 UI 界面,如下图:用 streamlit 实现(顺带说一下,streamlit 是纯 python 的 web 神器,非常适合数据项目和 LLM 项目试用):https://github.com/antvis/GPT-Vis

3. 支持的推理模型很新,Qwen2.5 / Deepseek 都支持

4. Monitor 系统完备

5. DB-GPT-Hub 支持微调 GQL(图数据库查询)

6. 没有提供数据库接入,需要自己加


Vanna

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

https://vanna.ai/

https://vanna.ai/docs/postgres-openai-standard-chromadb/

AI Agent + RAG

提供 pip 包安装:https://pypi.org/project/vanna/

下面是设计图:


试用后特点总结:

1. 自带 UI 界面

2. 可以向系统输入自己的 DDL 语句 / 附加信息 / sql语句,vn.train

from vanna.openai import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)


vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})
# 添加训练数据的示例
# DDL 语句功能强大,因为它们指定了表名、列名、数据类型,还可能指定了关系。
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
# 添加关于业务术语或定义的文档说明。
vn.train(documentation="Our business defines OTIF score as the percentage of orders that are delivered on time and in full")
# 将 SQL 查询添加到训练数据
vn.train(sql="SELECT * FROM my-table WHERE name = 'John Doe'")

3. 支持的数据库更多

PostgreSQL、MySQL、PrestoDB、Apache Hive、ClickHouse、Snowflake、Oracle、Microsoft SQL Server、BigQuery、SQLite、DuckDB

SuperSonic

https://github.com/tencentmusic/supersonic

https://supersonicbi.github.io/

AI Agent + RAG

试用:http://117.72.46.148:9080

试用后的体会:功能多;且支持插件配置,方便能力扩展

特点:

1. 支持中文,这可能是目前独有的特点了

2. 支持配置自定义数据集

3. 支持 tools 调用:类似提供了 AI Agent 能力。具体来说

    • 任意一个网页, 可以是一个看板, 也可以是一个解读报告, 召回之后可以把这个网页渲染到问答会话列表
    • 也可以为任意一个HTTP服务链接

比如:

4. 支持的数据库类型:所有支持MySQL协议的数据库,如MySQL,Doris,StarRocks等;另外还有 Clickhouse,PostgreSQL,H2

5. 支持在数据库表上创建抽象层:维度 / 度量 / 指标

https://supersonicbi.github.io/docs/headless-bi/%E6%A6%82%E5%BF%B5/

6. 还有一个重要功能:术语管理,用于指代自定义知识,通过配置术语及其描述,就可以把私域知识传授给大模型。比如:对不同产品,近期的概念不一样,就可以在此处明确:


LangChain

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

AI Agent + RAG

1. 没有 UI 页面,需要自己写

2. 内置 create_sql_query_chain 方便调用:https://api.python.langchain.com/en/latest/chains/langchain.chains.sql_database.query.create_sql_query_chain.html

from langchain.chains import create_sql_query_chain
from langchain_openai import ChatOpenAI


llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
chain = create_sql_query_chain(llm, db)
response = chain.invoke({"question": "How many employees are there"})
response

3. 方便使用 Langchain 自己的能力,引入 tools 等

4. 也支持导入 CSV,类似 text2sql 一样交流:https://python.langchain.com/v0.1/docs/use_cases/sql/csv/

总结

DB-GPT 很全面,有 AI Agent、RAG、微调、UI,如果时间充足,想深入研究,用各种技术提高准确率,选它没错;如果追求插件化,且是中文场,需要很快实现带 UI 界面演示,就选择 SuperSonic;如果数据库特殊,如:snokeflake,就用 vanna;如果需要把 text2sql 作为一项附加功能集成到其他 AI 平台,建议选择 LangChain。

相关推荐

一文带您了解数据库的行列之争:行式与列式存储的异同

数据库存储格式是数据库管理系统中一个至关重要的方面,它直接影响到数据的组织和检索效率。在数据库中,有两种主要的存储格式,即行式存储和列式存储。这两者采用截然不同的方法来组织和存储数据,各自具有一系列优...

NL2SQL(三)开源项目怎么选:talk is cheap, show me the code!

老规矩,先看效果下面的demo来自试用的SuperSonic,将会在下面详细介绍:大模型时代Text-to-SQL特点随着基于LLM技术的发展,RAG/AIAgent/Fine...

JDK25长期支持版九月降临:18项王炸功能全解析

Java要放大招啦!9月份推出的JDK25长期支持版已经锁定18个超能力,从稳定值到结构化并发,还有Linux系统下的"预知未来"性能分析!下面我用打游戏的术语给你们掰扯明白:1、飞...

OceanBase 推出单机版 高度兼容MySQL和Oracle

【环球网科技综合报道】3月27日,独立数据库厂商OceanBase正式发布单机版产品。据悉,这一产品基于自主研发的单机分布式一体化架构设计,具备极简数据库架构和高度兼容性,为中小规模业务提供兼具性能与...

黄远邦:应对7月1日闰秒对Oracle数据库影响

由于今年7月1日全世界会多出一秒,这可能对时间敏感的IT系统造成较大影响。中亦科技数据库团队对此问题做了深入的研究,并对用户系统提出了相应的解决方法及建议。中亦科技数据库产品总监黄远邦认为,闰秒调整会...

MySQL数据库密码忘记了,怎么办?(mysql 数据库密码)

#头条创作挑战赛#MySQL数据库密码忘记了且没有其他可以修改账号密码的账户时怎么办呢?登录MySQL,密码输入错误/*密码错误,报如下错误*/[root@TESTDB~]#mysql-u...

Chinese AI Talent in Spotlight as Nvidia and Meta Escalate Talent War

OntherightisBanghuaZhu,ChiefResearchScientistatNVIDIATMTPOST--SiliconValley’stoptech...

用Cursor开启JAVA+AI生涯(javascirpt怎么开启)

Cursor是基于VSCode开发的一款编辑器,支持多种语言的开发编辑。与传统的开发工具相比,它有多种优势:与AI无缝集成,响应速度快,占用内存小。但很多同学在"起步"过程中遇到了...

毕业十年了,自从做了开发用了很多软件,但距离写开发工具还很远

办公系统类:办公软件Word、Excel、PowerPoint三大必备技能+腾讯/金山在线文档解压缩操作:7-zip/winrar文件文本处理:Notepad++(文本编辑器正则表达式超级好...

盘点Java中最没用的知识⑤:这3个老古董你还在代码里“考古”?

一、Stack类:“继承Vector”的历史bug,为何成了性能拖油瓶?你是不是在学Java集合时,老师说过“栈结构用Stack类”?是不是在老代码里见过"newStack<>(...

Gemini 2.5 Pro 0506发布,编程最强大模型, 碾压 Claude3.7 sonnent

一、Gemini2.5Pro(I/Oedition)发布1、为何叫I/Oedition?谷歌史上最强编程模型Gemini2.5Pro(I/Oedition)发布,具体型号是Gemin...

如何让无聊变得有趣(附本人大量美图)

文/图:金冬成在这条长300公里的公路上,我已经来回往返了无数次。3小时车程,一个人,想想都是多么无聊的一件事。其实,人生道路上,类似这种无聊的事情有很多很多。无聊的事情、枯燥的工作,往往让我们容易失...

Oracle 推出 Java 24,增强 AI 支持和后量子加密

导读:Oracle宣布正式发布Java24,该语言增加了几个新功能,例如StreamGatherersAPI和Class-FileAPI的可用性,以及专门为AI推理和量子安全设计...

公司ERP突然变慢?“索引重建”这颗“药”可不能随便吃!

各位老板、IT小哥、财务小姐姐,有没有遇到过公司ERP系统突然卡顿得像“老爷车”,点个按钮半天没反应,急得直跺脚?这时候,可能有人会跳出来说:“我知道,重建一下数据库索引就好了!”听起来像个“神操作”...

基于Java实现,支持在线发布API接口读取数据库,有哪些工具?

基于java实现,不需要编辑就能发布api接口的,有哪些工具、平台?还能一键发布、快速授权和开放提供给第三方请求调用接口的解决方案。架构方案设计:以下是一些基于Java实现的无需编辑或只需少量编辑...

取消回复欢迎 发表评论: