PremSQL: 로컬 중심의 Text-to-SQL 파이프라인 솔루션

소개

PremSQL은 개발자들이 로컬 환경에서 안전하게 Text-to-SQL 솔루션을 구축할 수 있도록 돕는 라이브러리입니다. 주요 기능으로는 커스터마이즈 가능한 데이터셋 생성, 다양한 데이터베이스 연결, 자연어 질문을 SQL 쿼리로 변환하는 기능 등을 제공합니다. PremSQL은 완전히 로컬 환경에서 실행되기 때문에 외부 클라우드 서비스에 의존하지 않으며, 데이터 보안에 민감한 프로젝트에 적합합니다. 또한, 에러 처리 및 셀프 코렉션 기능을 통해 SQL 쿼리의 정확도를 향상시킬 수 있습니다.

이 프로젝트는 자연어 처리와 데이터베이스 쿼리 생성의 교차점에 위치하며, 특히 데이터 분석을 자동화하거나 SQL 작성이 익숙하지 않은 사용자에게 적합한 솔루션을 제공합니다.

PremSQL은 기존의 Text-to-SQL 솔루션과 다르게, 외부 서비스에 의존하지 않고 로컬에서 완전히 작동한다는 점에서 차별화됩니다. 예를 들어, GPT-4 기반의 Text-to-SQL 솔루션들은 보통 클라우드 환경을 필요로 하지만, PremSQL은 로컬 환경에서 데이터베이스를 안전하게 유지할 수 있습니다. 이 외에도 모델의 성능을 커스터마이즈할 수 있는 다양한 튜닝 옵션을 제공하여, 사용자가 원하는 성능을 손쉽게 달성할 수 있습니다.

주요 기능

  • 로컬 우선(Local-First): 외부 클라우드 서비스를 사용하지 않고 로컬에서 안전하게 작동.
  • 커스터마이즈 가능한 데이터셋: 자체 데이터셋을 쉽게 생성하고 모델을 튜닝할 수 있음.
  • 다양한 실행기(Executors): 여러 데이터베이스에 연결하여 SQL 쿼리를 실행하고 성능을 평가할 수 있음.
  • 자연어에서 SQL 쿼리 생성: 자연어 질문을 SQL로 변환하는 고급 생성기 제공.
  • 에러 처리 및 셀프 코렉션: SQL 쿼리 생성 중 발생하는 오류를 자동으로 수정.
  • 세부 튜닝 옵션: LoRA 및 QLoRA를 통한 효율적인 모델 튜닝 지원.

사용 방법

PremSQL은 Python 3.8 이상을 필요로 하며, 설치는 아래와 같이 pip를 사용하여 설치할 수 있습니다:

pip install premsql

아래는 PremSQL을 사용하여 자연어 입력을 SQL 쿼리로 변환하는 간단한 예시입니다:

from premsql.pipelines import SimpleText2SQLAgent
from premsql.generators import Text2SQLGeneratorHF
from premsql.executors import SQLiteExecutor

dsn_or_db_path = "./data/db/california_schools.sqlite"

agent = SimpleText2SQLAgent(
    dsn_or_db_path=dsn_or_db_path,
    generator=Text2SQLGeneratorHF(
        model_or_name_or_path="premai-io/prem-1B-SQL",
        experiment_name="simple_pipeline",
        device="cuda:0",
        type="test"
    ),
)

question = "2000년 이후에 개교한 차터스쿨의 전화번호를 보여주세요."

response = agent.query(question)
print(response["table"])

이 코드는 SQLite 데이터베이스에 연결하고, 주어진 자연어 질문에 맞는 SQL 쿼리를 생성한 뒤 결과를 출력합니다.

:github: PremSQL GitHub 저장소

:books: PremSQL 공식 문서




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요