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.

OmniSQL:将自然语言转化为高质量SQL查询的模型

 

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

  1. 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 tapez python --version Vérifiez. Si vous ne l'avez pas installé, vous pouvez le télécharger sur le site web de Python.
  2. Télécharger le projet
    entretiens https://github.com/RUCKBReasoning/OmniSQLCliquez 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
  1. 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
  1. 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 :
  1. Projets en cours
    Allez dans le répertoire du projet et exécutez python 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

  1. 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.
  2. É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.
  3. 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

  1. 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.
  2. 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.
  3. 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

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...