NL2SQL
专业的SQL大模型 https://defog.ai/
SQLCoder2与SQLCoder-7B是StarCode最新开源的两款模型,它们代表了在处理SQL查询方面的重大进步。SQLCoder2基于原始SQLCoder模型进行了显著改进。性能对比
性能表现(优于3月发布的GPT4): 按问题类别划分的结果date | group_by | order_by | ratio | join | where | |
---|---|---|---|---|---|---|
sqlcoder-70b | 96 | 91.4 | 97.1 | 85.7 | 97.1 | 91.4 |
sqlcoder-7b-2 | 96 | 91.4 | 94.3 | 91.4 | 94.3 | 77.1 |
sqlcoder-34b | 80 | 94.3 | 85.7 | 77.1 | 85.7 | 80 |
gpt-4 | 72 | 94.3 | 97.1 | 80 | 91.4 | 80 |
gpt-4-turbo | 76 | 91.4 | 91.4 | 62.8 | 88.6 | 77.1 |
natural-sql-7b | 56 | 88.6 | 85.7 | 60 | 88.6 | 80 |
sqlcoder-7b | 64 | 82.9 | 74.3 | 54.3 | 74.3 | 74.3 |
gpt-3.5 | 72 | 77.1 | 82.8 | 34.3 | 65.7 | 71.4 |
claude-2 | 52 | 71.4 | 74.3 | 57.1 | 65.7 | 62.9 |
特点
可本地部署,输出的为PGSQL语句,可通过SQL翻译工具转换为MySQL语句。
可通过微调、数据集训练识别专业业务领域语言。比如,能够识别”患者数“与”患者人数“是同一个语义。
演示
问题1
按城市统计5月份的患者人数
SELECT i.city_name,
SUM(i.patient_count) AS total_patient_count
FROM
indicator i
WHERE EXTRACT(MONTH
FROM i.cal_date) = 5
GROUP BY i.city_name
ORDER BY total_patient_count DESC NULLS LAST;
问题2
按城市统计5月份的签约患者数
SELECT i.city_name,
SUM(i.sign_patient_count) AS total_sign_patient_count
FROM
indicator i
WHERE EXTRACT(MONTH
FROM i.cal_date) = 5
GROUP BY i.city_name
ORDER BY total_sign_patient_count DESC NULLS LAST;
问题3
按城市统计5月份的医生人数(错误回答)
SELECT i.city_name,
COUNT(i.city_code) AS doctor_count
FROM
indicator i
WHERE EXTRACT(MONTH
FROM i.cal_date) = 5
GROUP BY i.city_name
ORDER BY i.city_name NULLS LAST;
使用体验
当前官方给到的是8B版本的,实际使用还是存在乱答的现象。最新的目前是15B版,有希望通过加上正确的提示词或者微调,使其回答更加正确。