← AI 용어집

AI 용어집 · 기초 · 데이터 엔지니어링 · 언어 모델

Text-to-SQL 자연어로 SQL 만들기

Text-to-SQL은 사람이 일상 언어로 한 질문을 데이터베이스가 알아듣는 질의 언어인 SQL로 바꿔 주는 기술이다. SQL을 몰라도 데이터에 직접 질문할 수 있다.

쉽게 말하면 외국 도서관에서 사서에게 우리말로 "작년에 가장 많이 빌려 간 책"을 물으면, 통역사가 그 도서관 대출 시스템이 알아듣는 검색어로 바꿔 넣어 주는 것과 비슷하다. 다만 통역사가 도서관 분류 체계를 잘못 알면 엉뚱한 책을 찾아오듯, 데이터 구조를 잘못 이해하면 틀린 답이 나온다.

어떻게 작동하나

사용자가 "지난달 지역별 매출을 보여 줘" 같은 질문을 하면, 시스템은 먼저 데이터베이스에 어떤 표(테이블)와 열(컬럼)이 있는지 설명하는 정보인 스키마를 모은다. 이 스키마와 질문을 함께 LLM에 넣으면 모델이 알맞은 SQL 문장을 만든다. 만들어진 SQL은 데이터베이스에서 실행되고, 결과가 표나 차트, 요약 문장으로 사용자에게 돌아간다. 실행 중 오류가 나면 오류 메시지를 다시 모델에 보여 주고 SQL을 고치게 하는 방식도 흔히 쓴다.

질문이 SQL이 되어 답으로 돌아오기자연어 질문 → LLM; 스키마 정보 → LLM; LLM → SQL 문장; SQL 문장 → 데이터베이스(실행); 데이터베이스 → 결과; 데이터베이스 → LLM(오류 시)자연어 질문지난달 지역별 매출스키마 정보테이블·컬럼 설명LLMSQL 작성SQL 문장데이터베이스읽기 전용 실행결과표·차트·요약실행오류 시
질문이 SQL이 되어 답으로 돌아오기 왼쪽에서 오른쪽으로 질문이 SQL로 바뀌고 실행된다. 실행 오류가 나면 점선처럼 모델로 돌아가 SQL을 고친다.

왜 중요한가

회사 데이터는 대부분 데이터베이스나 데이터 웨어하우스에 있지만, SQL을 쓸 줄 아는 사람은 많지 않다. 그래서 현업 담당자는 숫자 하나를 보려 해도 분석가에게 요청하고 기다려야 했다. Text-to-SQL은 이 대기 시간을 줄이고 더 많은 사람이 데이터를 직접 확인하게 해 준다. LLM이 좋아지면서 사내 데이터 분석 도구와 BI 서비스에 빠르게 들어가고 있다.

알아 둘 점

SQL은 문법이 맞아도 뜻이 틀릴 수 있어서, 결과가 그럴듯해 보여도 잘못된 숫자일 수 있다. 특히 '매출'이나 '활성 사용자'처럼 회사마다 정의가 다른 말은 모델이 짐작으로 처리하기 쉬워, 이런 정의를 미리 정리해 둔 시맨틱 레이어를 함께 쓰는 경우가 많다. 실수로 데이터를 지우거나 바꾸는 SQL이 실행되지 않도록 읽기 전용 권한으로만 연결하는 것이 기본이다. 중요한 의사결정에 쓰는 숫자라면 만들어진 SQL을 사람이 확인하는 단계를 두는 것이 안전하다.

도입 전 점검

안전

  • 읽기 전용 권한으로만 연결했는가
  • 데이터를 바꾸는 SQL을 막았는가

정확성

  • 업무 용어 정의를 정리해 두었는가
  • 만들어진 SQL을 사용자에게 보여 주는가
  • 중요한 숫자는 사람이 검토하는가
Text-to-SQL을 업무에 연결하기 전에 확인할 항목이다.

예시

사내 메신저에 연결된 데이터 챗봇에 영업 담당자가 "이번 분기 신규 고객 수를 지난 분기와 비교해 줘"라고 입력하면, 챗봇이 내부적으로 SQL을 만들어 데이터 웨어하우스에서 실행하고 두 숫자와 간단한 막대 차트를 답으로 보여 준다. 많은 BI 도구와 클라우드 데이터 플랫폼이 이런 '자연어로 묻기' 기능을 제공하며, 보통 만들어진 SQL을 함께 보여 주어 사용자가 검토할 수 있게 한다.

함께 보면 좋은 용어