AI가 쓴 SQL을 안전하게 쓰는 법
AI
AI가 쓴 SQL을 안전하게 쓰는 법
두줄요약
자연어를 SQL로 바꾸는 과정에서 LLM이 만든 쿼리를 그대로 믿지 않고 여러 단계로 검증하는 구조를 소개했습니다. 도메인 지식은 DB에 담고, 실행 전후 게이트와 회귀 평가로 안전성과 품질을 지켰습니다.
문제 상황
- 판매자가 자연어로 매출·고객·상품 데이터를 묻지만, SQL 작성은 데이터 담당자에게 의존하는 구조
- 자연어를 SQL로 바꾸는 과정에서 테이블·집계·조건절까지 LLM이 통째로 생성하며, 잘못된 쿼리와 안전성 문제가 발생
원인 분석
- SQL 보안의 입력값 파라미터화 전제가 자연어 질의에서는 깨져 쿼리 전체를 검증해야 하는 상황
- 스키마만으로는 순매출 같은 도메인 정의를 알 수 없어, 모델이 그럴듯하지만 틀린 컬럼·지표를 생성
- 비결정적인 LLM 출력과 조용히 틀리는 정상 쿼리까지 함께 다뤄야 하는 구조적 문제
해결 방법
- 판단하는 두뇌와 실행하는 도구함을 분리하고, 테넌트 격리·허용 테이블·SQL 검증을 데이터 앞단에 집중
- 도메인 지식을 PostgreSQL + pgvector 기반 백과사전 테이블에 저장하고, 고정 규칙과 벡터 검색으로 주입
- AST 파싱, 존재성 검사, 정책 검사, 출력 가드, 자가 수정 루프, 골든셋 회귀 평가로 실행 전후를 다중 검증
