Home
Login

RAG 기술 기반의 오픈 소스 Python 프레임워크로, 자연어를 통해 SQL 데이터베이스와 대화하고 정확한 텍스트-SQL 쿼리 생성을 구현합니다.

MITPython 18.3kvanna-ai Last Updated: 2025-04-10

Vanna.ai - 지능형 SQL 생성 프레임워크 상세 소개

프로젝트 개요

Vanna는 MIT 오픈 소스 라이선스의 Python RAG(검색 증강 생성) 프레임워크로, SQL 생성 및 관련 기능에 특화되어 있습니다. 이 프로젝트를 통해 사용자는 자연어를 사용하여 SQL 데이터베이스와 대화하고, 정확한 텍스트-SQL 쿼리 생성을 구현할 수 있습니다.

GitHub 주소: https://github.com/vanna-ai/vanna

핵심 기능

🤖 지능형 대화

  • 자연어 상호 작용: 사용자는 일반적인 언어로 질문하고, 시스템은 자동으로 해당 SQL 쿼리를 생성합니다.
  • 실시간 피드백: 생성 결과에 대한 사용자 피드백을 지원하여 정확성을 지속적으로 개선합니다.
  • 자기 학습: 성공적으로 실행된 쿼리로부터 자동으로 학습하여 미래 결과의 정확성을 향상시킵니다.

📊 RAG 기술 아키텍처

Vanna는 검색 증강 생성(RAG) 기술을 기반으로 하며, 워크플로우는 두 가지 간단한 단계로 나뉩니다.

  1. 훈련 단계: 데이터에 대해 RAG "모델"을 훈련합니다.
  2. 쿼리 단계: 질문을 제시하고, 데이터베이스에서 자동으로 실행할 수 있는 SQL 쿼리를 반환합니다.

🔄 광범위한 데이터베이스 지원

다양한 주요 데이터베이스를 지원합니다.

  • PostgreSQL
  • MySQL
  • Microsoft SQL Server
  • Oracle
  • Snowflake
  • BigQuery
  • ClickHouse
  • Apache Hive
  • PrestoDB
  • SQLite
  • DuckDB

기술적 장점

기존 미세 조정 방법 대비 장점

  • 휴대성: 다양한 LLM에서 사용 가능
  • 유연한 데이터 관리: 오래된 훈련 데이터를 쉽게 제거 가능
  • 비용 효율성: 미세 조정보다 실행 비용이 저렴
  • 미래 지향적: 더 나은 LLM으로 쉽게 교체 가능

보안 보장

  • 데이터 프라이버시: 데이터베이스 내용은 LLM 또는 벡터 데이터베이스로 전송되지 않음
  • 로컬 실행: SQL 실행은 로컬 환경에서 진행
  • 사설 배포: 완전한 사설 배포 지원

사용 방법

설치

pip install vanna

기본 설정

from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore

class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)

vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})

모델 훈련

다양한 방식으로 모델을 훈련할 수 있습니다.

DDL 구문 훈련:

vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
)
""")

업무 문서 훈련:

vn.train(documentation="Our business defines XYZ as ...")

SQL 쿼리 훈련:

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

쿼리 사용

vn.ask("What are the top 10 customers by sales?")

시스템은 다음을 반환합니다.

  • 생성된 SQL 쿼리 구문
  • 실행 결과 테이블
  • 자동 생성된 Plotly 차트

사용자 인터페이스 옵션

Vanna는 다양한 사용자 인터페이스를 제공합니다.

  • Jupyter Notebook: 데이터 분석가 및 개발자에게 적합
  • 웹 애플리케이션: 최종 사용자에게 적합
  • Streamlit 애플리케이션: 빠른 프로토타입 개발
  • Slackbot: 팀 협업
  • 맞춤형 프론트엔드: 완전 맞춤형 솔루션

아키텍처 설계

Vanna는 모듈식 설계를 채택하고 있으며, 추상 기본 클래스 VannaBase를 기반으로 다양한 항목을 사용하도록 쉽게 확장할 수 있습니다.

  • 대규모 언어 모델: OpenAI, Claude, 로컬 모델 등
  • 벡터 데이터베이스: ChromaDB, Pinecone, Weaviate 등
  • 데이터베이스 커넥터: Python으로 연결 가능한 모든 SQL 데이터베이스 지원

활용 시나리오

비즈니스 분석

  • 비기술 담당자가 자연어로 직접 데이터 쿼리 가능
  • 빠른 비즈니스 보고서 및 분석 생성
  • 일반적인 데이터 쿼리 작업 자동화

개발 효율성

  • SQL 개발 프로세스 가속화
  • 복잡한 쿼리 작성 시간 단축
  • 쿼리 최적화 제안 제공

교육 훈련

  • SQL 구문 학습 지원
  • 복잡한 쿼리 구조 이해
  • 데이터베이스 모범 사례 학습

요약

Vanna.ai는 강력하고 사용하기 쉬운 텍스트-SQL 프레임워크로, RAG 기술과 대규모 언어 모델의 결합을 통해 누구나 자연어로 데이터베이스와 상호 작용할 수 있도록 합니다. 데이터 분석가, 개발자 또는 비즈니스 사용자 모두 이 도구의 이점을 누릴 수 있으며, 데이터 쿼리 및 분석 효율성을 크게 향상시킬 수 있습니다.