🚀 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 的自定義商業許可證約束。有關詳細信息,請訪問:自定義商業許可證。
在使用此軟件之前,請確保你已完全理解許可證的條款。