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

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

moboyou 2025-04-11 16:33 65 浏览

老规矩,先看效果

下面的 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。

相关推荐

Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录

首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...

Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用

一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...

Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用

原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...

FILTER函数介绍及经典用法12:FILTER+切片器的应用

EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...

office办公应用网站推荐_office办公软件大全

以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...

WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!

办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...

收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程

原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...

Excel函数公式教程(490个实例详解)

Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...

Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!

工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...

Excel中的SCAN函数公式,把计算过程理清,你就会了

Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...

Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效

在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...

Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!

在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...

Excel新版本,IFS函数公式,太强大了!

我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...

Excel不用函数公式数据透视表,1秒完成多列项目汇总统计

如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...