OmniSQL : un modèle pour transformer le langage naturel en requêtes SQL de haute qualité
Introduction générale
OmniSQL est un projet open source développé par l'équipe RUCKBReasoning et hébergé sur GitHub. Sa fonction principale est de transformer les questions en langage naturel saisies par l'utilisateur en instructions de requête SQL de haute qualité afin d'aider les utilisateurs à interagir facilement avec les bases de données. Basé sur un cadre de génération automatisée de données texte-SQL, le projet a publié le jeu de données SynSQL-2.5M contenant 2,5 millions d'échantillons, qui est actuellement le plus grand jeu de données synthétique texte-SQL inter-domaines. OmniSQL fournit trois tailles de modèle, 7B, 14B et 32B, qui conviennent aux utilisateurs ayant des besoins différents. OmniSQL propose trois tailles de modèles, 7B, 14B et 32B, qui conviennent à des utilisateurs ayant des besoins différents. Il fournit un support puissant pour l'analyse des données, la gestion des bases de données et la recherche de modèles. Le projet utilise le protocole Apache 2.0, les utilisateurs peuvent télécharger et participer à l'amélioration gratuitement.

Liste des fonctions
- Transformer le langage naturel en SQL : les utilisateurs saisissent des questions et le modèle génère des requêtes SQL précises.
- Prise en charge des requêtes complexes : générez du code SQL avancé, depuis les requêtes simples sur une seule table jusqu'aux jointures sur plusieurs tables.
- Génération d'ensembles de données : SynSQL-2.5M est fourni, contenant 2,5 millions d'échantillons de haute qualité.
- Modèle multi-échelle : fournit des modèles avec trois échelles de paramètres : 7B, 14B et 32B.
- Open source et gratuit : le code et l'ensemble des données sont disponibles gratuitement sur GitHub.
Utiliser l'aide
OmniSQL est un outil basé sur le code pour les utilisateurs ayant des connaissances en programmation. Vous trouverez ci-dessous un guide d'installation et d'utilisation détaillé pour vous aider à démarrer rapidement.
Processus d'installation
- Préparation de l'environnement
Assurez-vous que Python 3.8 ou une version ultérieure est installé sur votre ordinateur. Ouvrez la ligne de commande et tapezpython --version
Vérifiez. Si vous ne l'avez pas installé, vous pouvez le télécharger sur le site web de Python. - Télécharger le projet
entretienshttps://github.com/RUCKBReasoning/OmniSQL
Cliquez sur le bouton "Code" et sélectionnez "Download ZIP" pour télécharger le fichier zip du projet. Décompressez-le et obtenez le dossier du projet. Vous pouvez également le cloner avec la commande Git :
git clone https://github.com/RUCKBReasoning/OmniSQL.git
- Installation des dépendances
Allez dans le répertoire du projet et exécutez le programme à partir de la ligne de commande :
pip install -r requirements.txt
Ceci installera les bibliothèques Python nécessaires à l'exécution. Si vous avez besoin d'inférence de modèle, vous devrez également installer le paquetage vLLM ou Transformers avec la commande suivante :
pip install vllm
peut-être
pip install transformers torch
- Télécharger les modèles et les ensembles de données
OmniSQL propose trois modèles et le jeu de données SynSQL-2.5M, qui peuvent être téléchargés à partir des liens suivants :
- SynSQL-2.5M. Visage étreint
- OmniSQL-7B. Visage étreint
- OmniSQL-14B. Visage étreint
- OmniSQL-32B. Visage étreint
Après le téléchargement, placez le fichier dans le répertoire du projet.
- Projets en cours
Allez dans le répertoire du projet et exécutezpython omnisql.py
Vérifier que l'environnement est correct. Le modèle doit être chargé pour une utilisation réelle, voir ci-dessous.
Principales fonctions
1. convertir le langage naturel en SQL
La fonctionnalité principale d'OmniSQL est de traduire les questions en requêtes SQL. En utilisant vLLM comme exemple, exécutez le code suivant :
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
# 定义提示模板
prompt = '''Task Overview:
You are a data science expert. Below, you are provided with a database schema and a natural language question. Your task is to generate a valid SQL query.
Database Engine: SQLite
Database Schema:
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);
Question:
查找 users 表中年龄大于 30 的人的名字
Instructions:
- 只输出问题要求的信息。
- 逐步思考后生成 SQL。
Output Format:
-- Votre requête SQL
'''
# 加载模型
model_path = "seeklhy/OmniSQL-7B" # 替换为你的模型路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
llm = LLM(model=model_path, dtype="float16")
# 生成 SQL
sampling_params = SamplingParams(temperature=0, max_tokens=2048)
chat_prompt = tokenizer.apply_chat_template([{"role": "user", "content": prompt}], add_generation_prompt=True, tokenize=False)
outputs = llm.generate([chat_prompt], sampling_params)
print(outputs[0].outputs[0].text)
Le résultat peut être :
SELECT name FROM users WHERE age > 30;
2) Utilisation de l'ensemble de données SynSQL-2.5M
L'ensemble de données contient 2,5 millions d'échantillons, chacun comprenant la structure de la base de données, des questions, des requêtes SQL et des processus de réflexion. Téléchargez et utilisez directement pour la formation ou la recherche. Voir les échantillons :
- Décompressez le fichier dataset.
- Ouvrir n'importe quel fichier JSON au format
{"db": ..., "question": ..., "sql": ..., "cot": ...}
.
3. la formation et l'évaluation
Le projet fournit des scripts de formation, situés dans les train_and_evaluate
dossier. Exécutez l'exemple :
python train.py --model OmniSQL-7B --data SynSQL-2.5M
Les scripts d'évaluation se trouvent également dans le même dossier afin de reproduire les résultats officiels.
Conseils et astuces
- Support de base de donnéesLe cadre de génération de données (Data Generation Framework) permet de synthétiser de nouvelles données si d'autres bases de données s'avèrent nécessaires.
- exigences en matière de matérielLe modèle 7B nécessite environ 14 Go de mémoire vidéo, et le modèle 32B requiert une configuration plus élevée.
- Voir l'exempleProjets : Projets
examples
Le dossier fournit des exemples de modèles d'invite.
Ces étapes vous permettent de générer rapidement du code SQL avec OmniSQL ou d'étudier des techniques de conversion de texte en code SQL.
scénario d'application
- l'analyse des données
Les analystes de données saisissent une question, telle que "Trouver les 10 articles les plus vendus", et OmniSQL génère le code SQL correspondant, ce qui permet de gagner du temps. - Études de modélisation
Les chercheurs entraînent un nouveau modèle avec SynSQL-2.5M pour améliorer la capacité de conversion de texte en SQL. - Apprentissage éducatif
Les étudiants se familiarisent avec les opérations de base de données en posant des questions et en observant le code SQL généré.
QA
- Quelles sont les bases de données prises en charge par OmniSQL ?
Actuellement, seul SQLite est pris en charge, mais il pourra être étendu à des données synthétiques à l'avenir. - Quelle est la taille de l'ensemble de données ?
SynSQL-2.5M contient 2,5 millions d'échantillons couvrant 16 000 bases de données. - Quelle est la solidité des modèles ?
OmniSQL surpasse des modèles tels que GPT-4o dans des tests de référence tels que Spider et BIRD.
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...