许可证:llama2
推理参数:
采样模式:关闭
最大生成长度:200
基础模型:meta-llama/Llama-2-7b
示例输入:
-
文本:
### 指令:
你的任务是生成有效的duckdb SQL来回答以下问题。
### 输入:
### 问题:
从test.csv创建一个名为tmp的新表
### 响应(尽可能使用duckdb简写语法):
示例标题:"读取test.csv"
-
文本:
### 指令:
你的任务是生成有效的duckdb SQL来回答以下问题。
### 输入:
### 问题:
从test.csv创建一个名为tmp的新表
### 响应(尽可能使用duckdb简写语法):
示例标题:"获取_amount列"
-
文本:
### 指令:
你的任务是根据给定的duckdb数据库模式,生成有效的SQL查询来回答以下问题。
### 输入:
以下是SQL查询将运行的数据库模式:
CREATE TABLE rideshare (
hvfhs_license_num varchar,
dispatching_base_num varchar,
originating_base_num varchar,
request_datetime timestamp,
on_scene_datetime timestamp,
pickup_datetime timestamp,
dropoff_datetime timestamp,
trip_miles double,
trip_time bigint
);
### 问题:
获取2022年12月最长的行程
### 响应(尽可能使用duckdb简写语法):
示例标题:"出租车行程"
DuckDB-NSQL-7B模型
模型描述
NSQL是一系列专为SQL生成任务设计的自回归开源大型基础模型。本仓库推出的DuckDB-NSQL是基于Meta原版Llama-2 7B模型,经过通用SQL查询数据集预训练后,再通过DuckDB文本-SQL配对数据集微调而成。
训练数据
评估数据
我们在包含75组文本-SQL配对的DuckDB专项基准测试中进行评估,基准库详见此处。
训练流程
模型采用交叉熵损失函数最大化序列输入可能性。在文本-SQL对微调阶段,仅计算SQL部分的损失。使用80GB A100显卡进行数据和模型并行训练,共微调10个周期。
使用场景与限制
本模型专为根据表结构和自然语言提示生成SQL而设计,在指定提示格式下表现最佳。与现有文本-SQL模型不同,它能生成包括DuckDB官方扩展语句在内的任何有效SQL,而不仅限于SELECT
查询。
使用方法
示例1:基础表创建
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1", torch_dtype=torch.bfloat16)
prompt = """### 指令:
生成有效的duckdb SQL来回答问题
### 问题:
从test.csv创建名为tmp的新表
### 响应(使用简写语法):"""
inputs = tokenizer(prompt, return_tensors="pt").input_ids
outputs = model.generate(inputs, max_length=500)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
示例2:列筛选查询
(代码结构同示例1,提示文本替换为:)
"""...
### 输入:
CREATE TABLE taxi (
VendorID bigint,
tpep_pickup_datetime timestamp,
...
total_amount double
);
### 问题:
从taxi表获取所有以_amount结尾的列
### 响应(使用简写语法):"""
示例3:复杂查询
(代码结构同示例1,提示文本替换为:)
"""...
### 输入:
CREATE TABLE rideshare (
hvfhs_license_num varchar,
...
trip_time bigint
);
### 问题:
获取2022年12月最长的行程
### 响应(使用简写语法):"""
更多应用示例(如连接本地数据库)请访问项目仓库。