摘要:随着基于 LLM 技术的发展,RAG / AI Agent / Fine-tuning 等方法也广泛应用于 Text-to-SQL 领域,大模型时代发展出如下特点:
下面的 demo 来自试用的 SuperSonic,将会在下面详细介绍:
随着基于 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
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
AI Agent + RAG
提供 pip 包安装:https://pypi.org/project/vanna/
下面是设计图:
试用后特点总结:
1. 自带 UI 界面
2. 可以向系统输入自己的 DDL 语句 / 附加信息 / sql语句,vn.train
from vanna.openai import OpenAI_Chatfrom vanna.chromadb import ChromaDB_VectorStoreclass 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
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/概念/
6. 还有一个重要功能:术语管理,用于指代自定义知识,通过配置术语及其描述,就可以把私域知识传授给大模型。比如:对不同产品,近期的概念不一样,就可以在此处明确:
LangChain
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_chainfrom langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)chain = create_sql_query_chain(llm, db)response = chain.invoke({"question": "How many employees are there"})response3. 方便使用 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。
来源:正正杂说