OmniSQL: 자연어를 고품질 SQL 쿼리로 변환하는 모델

최신 AI 리소스4 개월 전에 게시 됨 AI 공유 서클
1.7K 00

일반 소개

OmniSQL은 RUCKBReasoning 팀이 개발한 오픈 소스 프로젝트로 GitHub에서 호스팅됩니다. 핵심 기능은 사용자가 입력한 자연어 질문을 고품질 SQL 쿼리 문으로 변환하여 사용자가 데이터베이스와 쉽게 상호 작용할 수 있도록 지원하는 것입니다. 자동화된 텍스트-SQL 데이터 생성 프레임워크를 기반으로 하는 이 프로젝트는 현재 가장 큰 규모의 교차 도메인 합성 텍스트-SQL 데이터 세트인 250만 개의 샘플이 포함된 SynSQL-2.5M 데이터 세트를 출시했습니다. OmniSQL은 다양한 요구 사항을 가진 사용자에게 적합한 7B, 14B, 32B의 세 가지 모델 크기를 제공합니다. OmniSQL은 다양한 요구 사항을 가진 사용자에게 적합한 7B, 14B, 32B의 세 가지 모델 크기를 제공합니다. 데이터 분석, 데이터베이스 관리, 모델 연구를 위한 강력한 지원을 제공합니다. 이 프로젝트는 Apache 2.0 프로토콜을 사용하며, 사용자는 무료로 다운로드하여 개선에 참여할 수 있습니다.

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

 

기능 목록

  • 자연어를 SQL로 변환: 사용자가 질문을 입력하면 모델이 정확한 SQL 쿼리를 생성합니다.
  • 복잡한 쿼리 지원: 간단한 단일 테이블 쿼리부터 다중 테이블 조인까지 고급 SQL을 생성합니다.
  • 데이터 세트 생성: 250만 개의 고품질 샘플이 포함된 SynSQL-2.5M이 제공됩니다.
  • 멀티스케일 모델: 7B, 14B, 32B의 세 가지 매개변수 스케일을 가진 모델을 제공합니다.
  • 오픈 소스 및 무료: 코드와 데이터 세트는 GitHub에서 무료로 사용할 수 있습니다.

 

도움말 사용

OmniSQL은 어느 정도 프로그래밍 지식이 있는 사용자를 위한 코드 기반 도구입니다. 다음은 빠르게 시작하는 데 도움이 되는 자세한 설치 및 사용 가이드입니다.

설치 프로세스

  1. 환경 준비하기
    컴퓨터에 Python 3.8 이상이 설치되어 있는지 확인합니다. 명령줄을 열고 다음을 입력합니다. python --version 확인합니다. 설치되어 있지 않은 경우 Python 웹사이트에서 다운로드할 수 있습니다.
  2. 프로젝트 다운로드
    인터뷰 https://github.com/RUCKBReasoning/OmniSQL"코드" 버튼을 클릭하고 "ZIP 다운로드"를 선택하여 프로젝트 ZIP 파일을 다운로드합니다. 압축을 풀고 프로젝트 폴더를 가져옵니다. 또는 Git 명령으로 복제할 수 있습니다:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
  1. 종속성 설치
    프로젝트 디렉토리로 이동하여 명령줄에서 실행합니다:
pip install -r requirements.txt

이렇게 하면 실행에 필요한 Python 라이브러리가 설치됩니다. 모델 추론이 필요한 경우, 모델 추론에 필요한 vLLM 또는 다음 명령어로 트랜스포머를 검색합니다:

pip install vllm

어쩌면

pip install transformers torch
  1. 모델 및 데이터 세트 다운로드
    OmniSQL은 다음 링크에서 다운로드할 수 있는 세 가지 모델과 SynSQL-2.5M 데이터 집합을 제공합니다:
  1. 프로젝트 실행
    프로젝트 디렉토리로 이동하여 다음을 실행합니다. python omnisql.py 환경이 정상인지 확인합니다. 실제 사용하려면 모델을 로드해야 합니다(아래 참조).

주요 기능

1. 자연어를 SQL로 변환하기

OmniSQL의 핵심 기능은 질문을 SQL 쿼리로 변환하는 것입니다. vLLM을 예로 들어 다음 코드를 실행합니다:

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:

-- 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)

출력은 다음과 같습니다:

SELECT name FROM users WHERE age > 30;

2. SynSQL-2.5M 데이터 세트 사용

이 데이터 세트에는 데이터베이스 구조, 질문, SQL 쿼리 및 사고 과정을 포함하는 250만 개의 샘플이 각각 포함되어 있습니다. 교육이나 연구에 직접 다운로드하여 사용하세요. 샘플 보기:

  • 데이터 세트 파일의 압축을 풉니다.
  • 다음 형식의 JSON 파일을 엽니다. {"db": ..., "question": ..., "sql": ..., "cot": ...}.

3. 교육 및 평가

이 프로젝트는 교육 스크립트를 제공합니다. train_and_evaluate 폴더로 이동합니다. 예제를 실행합니다:

python train.py --model OmniSQL-7B --data SynSQL-2.5M

평가 스크립트도 같은 폴더에 있어 공식 결과를 재현할 수 있습니다.

팁 및 유용한 정보

  • 데이터베이스 지원현재 SQLite만 지원되며, 다른 데이터베이스가 필요한 경우 데이터 생성 프레임워크를 사용하여 새 데이터를 합성할 수 있습니다.
  • 하드웨어 요구 사항7B 모델은 약 14GB의 비디오 메모리가 필요하며, 32B는 이보다 더 높은 구성이 필요합니다.
  • 예제 보기: 프로젝트 examples 이 폴더에는 프롬프트 템플릿의 예가 제공됩니다.

이러한 단계를 통해 OmniSQL을 사용하여 신속하게 SQL을 생성하거나 텍스트-SQL 기술을 조사할 수 있습니다.

 

애플리케이션 시나리오

  1. 데이터 분석
    데이터 분석가가 "상위 10개 판매 품목 찾기"와 같은 질문을 입력하면 OmniSQL이 해당 SQL을 생성하므로 시간이 절약됩니다.
  2. 모델링 연구
    연구원들은 SynSQL-2.5M으로 새로운 모델을 훈련하여 텍스트-SQL 기능을 개선합니다.
  3. 교육 학습
    학생들은 질문을 입력하고 생성된 SQL을 관찰하면서 데이터베이스 작업에 대해 학습합니다.

 

QA

  1. OmniSQL은 어떤 데이터베이스를 지원하나요?
    현재는 SQLite만 지원되며, 향후 합성 데이터로 확장할 수 있습니다.
  2. 데이터 세트의 크기는 어느 정도인가요?
    SynSQL-2.5M에는 16,000개의 데이터베이스를 포괄하는 250만 개의 샘플이 포함되어 있습니다.
  3. 모델은 얼마나 강력하나요?
    OmniSQL은 Spider 및 BIRD와 같은 벤치마크에서 GPT-4o와 같은 모델보다 성능이 뛰어납니다.
© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...