🚀 Chat2DB-GLM
Chat2DB-GLM 是开源项目 Chat2DB 的一部分,旨在提供一种高效的方式,将自然语言查询转换为结构化 SQL 语句。开源的 Chat2DB-SQL-7B 模型拥有 70 亿参数,基于 CodeLlama 进行了微调。该模型专为自然语言到 SQL 的转换任务而设计,支持多种 SQL 方言,并且能够处理长达 16k 的上下文长度。
🚀 快速开始
模型推理
你可以通过 transformers
库加载模型,并使用以下示例代码片段来使用 Chat2DB-SQL-7B 模型。模型的性能可能会因输入提示的不同而有所差异,因此请尽量遵循以下示例中提供的提示格式。代码块中的 model_path
可以替换为你本地的模型路径。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
model_path = "Chat2DB/Chat2DB-SQL-7B"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16, use_cache=True)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, return_full_text=False, max_new_tokens=100)
prompt = "### Database Schema\n\n['CREATE TABLE \"stadium\" (\\n\"Stadium_ID\" int,\\n\"Location\" text,\\n\"Name\" text,\\n\"Capacity\" int,\\n\"Highest\" int,\\n\"Lowest\" int,\\n\"Average\" int,\\nPRIMARY KEY (\"Stadium_ID\")\\n);', 'CREATE TABLE \"singer\" (\\n\"Singer_ID\" int,\\n\"Name\" text,\\n\"Country\" text,\\n\"Song_Name\" text,\\n\"Song_release_year\" text,\\n\"Age\" int,\\n\"Is_male\" bool,\\nPRIMARY KEY (\"Singer_ID\")\\n);', 'CREATE TABLE \"concert\" (\\n\"concert_ID\" int,\\n\"concert_Name\" text,\\n\"Theme\" text,\\n\"Stadium_ID\" text,\\n\"Year\" text,\\nPRIMARY KEY (\"concert_ID\"),\\nFOREIGN KEY (\"Stadium_ID\") REFERENCES \"stadium\"(\"Stadium_ID\")\\n);', 'CREATE TABLE \"singer_in_concert\" (\\n\"concert_ID\" int,\\n\"Singer_ID\" text,\\nPRIMARY KEY (\"concert_ID\",\"Singer_ID\"),\\nFOREIGN KEY (\"concert_ID\") REFERENCES \"concert\"(\"concert_ID\"),\\nFOREIGN KEY (\"Singer_ID\") REFERENCES \"singer\"(\"Singer_ID\")\\n);']\n\n\n### Task \n\nBased on the provided database schema information, How many singers do we have?[SQL]\n"
response = pipe(prompt)[0]["generated_text"]
print(response)
✨ 主要特性
- 多方言支持:Chat2DB-SQL-7B 模型支持广泛的 SQL 方言,包括但不限于 MySQL、PostgreSQL、SQLite 等常见 SQL 方言。这种跨方言能力确保了模型具有广泛的适用性和灵活性。
- 高性能表现:该模型在多种方言和 SQL 的关键部分都表现出了出色的性能。在处理各种 SQL 函数(如日期函数、字符串函数等)方面展现出强大的能力。
📚 详细文档
模型性能
Chat2DB-SQL-7B 模型在多种方言和 SQL 的关键部分都表现出色。以下是该模型在不同 SQL 关键部分的性能概述,以通用 SQL 为例,基于使用 spider 数据集进行的评估,展示了模型处理各种 SQL 函数(如日期函数、字符串函数等)的能力。
方言 |
选择子句 |
条件子句 |
分组子句 |
排序子句 |
函数使用 |
总体表现 |
通用 SQL |
91.5 |
83.7 |
80.5 |
98.2 |
96.2 |
77.3 |
模型局限性和使用注意事项
Chat2DB-SQL-7B 主要针对 MySQL、PostgreSQL 和通用 SQL 方言进行了微调。虽然该模型可以为其他 SQL 方言提供基本的转换能力,但在处理特定方言的特殊函数(如日期函数、字符串函数等)时可能会出现不准确的情况。性能可能会随着数据集的变化而有所不同。
请注意,此模型主要用于学术研究和学习目的。尽管我们努力确保模型输出的准确性,但不能保证其在生产环境中的性能。使用此模型可能产生的任何潜在损失,本项目及其贡献者不承担责任。我们鼓励用户在使用前仔细评估其在特定用例中的适用性。
硬件要求
模型 |
最小 GPU 内存(推理) |
最小 GPU 内存(高效参数微调) |
Chat2DB-SQL-7B |
14GB |
20GB |
贡献指南
我们欢迎并鼓励社区成员为 Chat2DB-GLM 项目做出贡献。无论是报告问题、提出新功能建议,还是直接提交代码修复和改进,你的帮助都非常宝贵。
如果你有兴趣做出贡献,请遵循我们的贡献指南:
- 报告问题:通过 GitHub Issues 报告遇到的任何问题或错误。
- 提交拉取请求:如果你希望直接为代码库做出贡献,请分叉仓库并提交拉取请求(PR)。
- 改进文档:欢迎对最佳实践、示例代码、文档改进等方面做出贡献。
📄 许可证
本项目中的模型权重受 Code Llama 的自定义商业许可证约束。有关详细信息,请访问:自定义商业许可证。
在使用此软件之前,请确保你已完全理解许可证的条款。