AI 용어집 · 기초 · 데이터 엔지니어링 · 언어 모델
Text-to-SQL 자연어로 SQL 만들기
Text-to-SQL은 사람이 일상 언어로 한 질문을 데이터베이스가 알아듣는 질의 언어인 SQL로 바꿔 주는 기술이다. SQL을 몰라도 데이터에 직접 질문할 수 있다.
어떻게 작동하나
사용자가 "지난달 지역별 매출을 보여 줘" 같은 질문을 하면, 시스템은 먼저 데이터베이스에 어떤 표(테이블)와 열(컬럼)이 있는지 설명하는 정보인 스키마를 모은다. 이 스키마와 질문을 함께 LLM에 넣으면 모델이 알맞은 SQL 문장을 만든다. 만들어진 SQL은 데이터베이스에서 실행되고, 결과가 표나 차트, 요약 문장으로 사용자에게 돌아간다. 실행 중 오류가 나면 오류 메시지를 다시 모델에 보여 주고 SQL을 고치게 하는 방식도 흔히 쓴다.
왜 중요한가
회사 데이터는 대부분 데이터베이스나 데이터 웨어하우스에 있지만, SQL을 쓸 줄 아는 사람은 많지 않다. 그래서 현업 담당자는 숫자 하나를 보려 해도 분석가에게 요청하고 기다려야 했다. Text-to-SQL은 이 대기 시간을 줄이고 더 많은 사람이 데이터를 직접 확인하게 해 준다. LLM이 좋아지면서 사내 데이터 분석 도구와 BI 서비스에 빠르게 들어가고 있다.
알아 둘 점
SQL은 문법이 맞아도 뜻이 틀릴 수 있어서, 결과가 그럴듯해 보여도 잘못된 숫자일 수 있다. 특히 '매출'이나 '활성 사용자'처럼 회사마다 정의가 다른 말은 모델이 짐작으로 처리하기 쉬워, 이런 정의를 미리 정리해 둔 시맨틱 레이어를 함께 쓰는 경우가 많다. 실수로 데이터를 지우거나 바꾸는 SQL이 실행되지 않도록 읽기 전용 권한으로만 연결하는 것이 기본이다. 중요한 의사결정에 쓰는 숫자라면 만들어진 SQL을 사람이 확인하는 단계를 두는 것이 안전하다.
도입 전 점검
안전
- 읽기 전용 권한으로만 연결했는가
- 데이터를 바꾸는 SQL을 막았는가
정확성
- 업무 용어 정의를 정리해 두었는가
- 만들어진 SQL을 사용자에게 보여 주는가
- 중요한 숫자는 사람이 검토하는가
예시
사내 메신저에 연결된 데이터 챗봇에 영업 담당자가 "이번 분기 신규 고객 수를 지난 분기와 비교해 줘"라고 입력하면, 챗봇이 내부적으로 SQL을 만들어 데이터 웨어하우스에서 실행하고 두 숫자와 간단한 막대 차트를 답으로 보여 준다. 많은 BI 도구와 클라우드 데이터 플랫폼이 이런 '자연어로 묻기' 기능을 제공하며, 보통 만들어진 SQL을 함께 보여 주어 사용자가 검토할 수 있게 한다.