Text2SQL을 생성이 아니라 검증 가능한 기능으로 만들기
문제
LLM이 SQL 문자열을 생성했다는 사실만으로는 업무 기능이 되지 않습니다. 허용 schema를 벗어나는 열, 쓰기 문장, 실행 오류와 의미가 틀린 결과를 서로 다른 실패로 분류해야 합니다.
담당한 부분
비공개 업무 구현에서 본인이 담당한 FastAPI 기반 Text2SQL/NL2SQL 호출 구조, SQL 검증과 선택적 실행, 결과 기록, 다중 로컬 모델 비교 범위를 확인했습니다. 모델이 만든 SQL을 곧바로 실행하지 않고 정책 검증과 결과 평가를 분리한 흐름에 초점을 맞춘 사례입니다.
설계 판단
- 모델 호출과 SQL policy validation을 분리합니다.
- 읽기 전용 문장만 허용하고 허용된 schema 범위를 검사합니다.
- 생성 성공, 구문·정책 통과, DB 실행 성공과 정답 여부를 다른 지표로 기록합니다.
- 모델 adapter를 교체 가능하게 두되 평가 조건은 동일하게 유지합니다.
확인한 검증 범위
13개 업무 질문과 4개 로컬 모델의 52회 비교, 별도의 29개 질문 validation set 기록을 확인했습니다. 실행 성공률을 정답 정확도로 바꾸어 표현하지 않습니다.
현재 공개 범위
원본 질문, 데이터, SQL과 모델 응답은 포함하지 않았습니다. 현재 글은 확인된 구현과 구성요소 검증 범위만 일반화해 설명하며, 공개 benchmark나 전체 서비스의 운영 검증을 의미하지 않습니다.