블로그 목록으로
인공지능

"지난달 거래처별 매출 보여줘": 자연어로 사내 DB를 묻는 Text-to-SQL 도입과 안전장치 설계

자연어로 사내 DB를 조회하는 Text-to-SQL은 단순 조회 요청의 대기열을 줄여 주지만, 실행은 되는데 의미가 틀린 SQL이라는 위험을 함께 가져옵니다. 조회 전용 뷰와 업무 용어집으로 정확도를 높이고, 읽기 전용 계정·SQL 검증·감사 로그로 안전장치를 갖추는 설계 방법을 정리했습니다.

POLYGLOTSOFT 기술팀2026-10-117분 소요9
Text-to-SQL자연어질의LLM데이터접근통제사내데이터

데이터 요청이 IT 부서 대기열에 쌓이는 회사

"지난달 거래처별 매출 좀 뽑아주세요." 이런 요청은 SQL 몇 줄이면 끝나지만, 요청 접수와 우선순위 조정, 결과 확인을 거치면 답을 받기까지 며칠이 걸리곤 합니다. 개발자는 하루에도 몇 번씩 본업을 멈추고, 현업 담당자는 기다리다 못해 엑셀로 직접 집계합니다.

Text-to-SQL은 자연어 질문을 SQL로 바꿔 이 대기열을 줄여 줍니다. 다만 해결 범위는 분명히 구분해야 합니다.

  • 해결하는 것: 기간·거래처·품목별 집계, 순위, 추이 같은 정형 조회
  • 해결하지 못하는 것: "왜 매출이 줄었는가" 같은 원인 해석, 사내에서 정의가 합의되지 않은 지표, 데이터에 없는 기준의 판단
  • Text-to-SQL이 틀리는 지점

    업무 용어와 스키마의 간극

    현업은 "거래처"라고 말하지만 테이블에는 `CUST_MST`, `BP_CD` 같은 이름이 있습니다. "매출"도 수주 기준인지, 출고 기준인지, 세금계산서 발행 기준인지 회사마다 다릅니다. 모델은 이 간극을 추측으로 메우고, 그 추측은 그럴듯한 오답이 됩니다.

    실행은 되지만 의미가 틀린 SQL

    더 위험한 것은 오류 없이 실행되는 오답입니다.

  • 조인 중복: 주문 헤더와 명세를 조인한 뒤 헤더의 금액을 합산하면, 명세가 3줄인 주문은 금액이 3배로 집계됩니다.
  • 기간 조건 누락: "지난달" 조건이 빠지면 전체 누적 매출이 나옵니다.
  • 상태 조건 누락: 취소·반품 건이 합계에 섞여 들어갑니다.
  • 숫자가 정상적으로 출력되기 때문에 사용자는 틀렸다는 사실을 알기 어렵습니다.

    정확도를 올리는 설계

    컨텍스트로 제공할 세 가지

  • 스키마 설명: 컬럼별 의미, 단위, 코드값의 뜻
  • 업무 용어집: "매출 = 출고 확정 기준, 부가세 제외"처럼 문장으로 고정한 정의
  • 예시 질의: 자주 묻는 질문과 검증된 SQL 쌍 20~50개
  • 원본 테이블 대신 조회 전용 뷰

    수백 개의 원본 테이블을 그대로 노출하지 않고, `v_sales_monthly`처럼 업무 단위로 정리한 조회 전용 뷰 10~20개만 보여 주는 방식이 효과적입니다. 조인과 취소 건 제외를 뷰 안에서 미리 처리하면 모델이 조인을 잘못 만들 여지가 줄어들고, 민감한 컬럼도 처음부터 제외할 수 있습니다.

    반드시 넣어야 할 안전장치

  • 읽기 전용 계정: SELECT 권한만 부여하고, 가능하면 운영 DB가 아닌 복제본에 연결합니다.
  • 행·열 단위 권한: 영업 1팀은 자기 팀 거래처만, 원가·급여 컬럼은 권한자만 조회하도록 합니다. 이 통제는 프롬프트가 아니라 DB 계층에서 강제해야 합니다.
  • 실행 전 SQL 검증: 생성된 SQL을 파서로 분석해 단일 SELECT 문인지, 허용된 뷰만 참조하는지 확인합니다.
  • 비용·행 수 제한: 예를 들어 실행 시간 30초, 결과 1,000행으로 상한을 둡니다.
  • 감사 로그: 누가 어떤 질문을 했고, 어떤 SQL이 실행되어 몇 행이 반환됐는지 기록합니다.
  • 사용자가 결과를 믿을 수 있게 만들기

    숫자만 보여 주면 신뢰가 쌓이지 않습니다. 생성된 SQL과 함께 "2026년 9월 1일~30일, 출고 확정 기준, 취소 건 제외로 집계했습니다"와 같은 해석을 함께 노출해야 사용자가 전제를 확인할 수 있습니다.

    품질은 정기 평가로 관리합니다. 실제 질문과 정답 SQL을 묶은 정답 질의 세트를 100개 안팎으로 만들고, 프롬프트·모델·스키마가 바뀔 때마다 결과값 일치 여부로 다시 채점합니다.

    질문이 모호하거나 용어집에 없는 지표라면 무리하게 답하지 않고 되묻거나 담당자에게 넘기는 흐름이 필요합니다. 이렇게 넘어온 질문은 용어집과 예시 질의를 보강하는 재료가 됩니다.

    POLYGLOTSOFT가 돕는 방식

    Text-to-SQL의 성패는 모델 선택보다 데이터를 얼마나 정확히 이해하고 정리했는지에 달려 있습니다. POLYGLOTSOFT는 ERP·MES·WMS 데이터 구조를 이해하는 팀이 조회 전용 뷰 설계, 업무 용어집 정리, 권한·검증 체계 구성, 정답 질의 세트 기반 평가까지 함께 구축합니다. 데이터 요청 대기열을 줄이고 싶으시다면 POLYGLOTSOFT에 문의해 주시기 바랍니다.

    기술 상담이 필요하신가요?

    스마트공장, AI, 물류자동화 분야의 전문 컨설턴트가 귀사의 요구사항을 분석해 드립니다.

    무료 상담 신청