
아임웹이 LLM의 불안정한 환각을 제어하고 안전한 프로덕션급 Text-to-SQL 파이프라인을 구축한 실전 아키텍처
본 아티클은 비전문가 판매자가 대화형 인터페이스를 통해 직접 쇼핑몰 데이터를 자연어로 조회할 수 있도록 돕는 AI 통계 에이전트의 개발 비하인드를 설명합니다. AI를 맹신하는 대신 엄격히 격리하고 통제하는 백엔드 아키텍처 설계를 제시하며, 비결정적인 결과물을 결정론적으로 방어하는 다양한 정적 검증 도구와 시스템 설계 방안을 다룹니다. 도메인 지식 주입부터 AST 파서 기반의 3단계 가드레일, 그리고 자가 수정 루프까지 실무 데이터 보안에 즉시 적용 가능한 완성도 높은 파이프라인을 보여줍니다.
사용자가 작성한 자연어를 코드로 변환하거나, 안전성이 철저하게 담보되어야 하는 LLM 기반 어플리케이션을 준비 중인 엔지니어에게 적극 추천합니다. 특히 백엔드 수준에서 비결정적인 AI 모델의 결과 값을 효과적으로 제어 및 가두는 엔지니어링 전략을 설계할 때 훌륭한 레퍼런스가 될 것입니다.
사용자가 입력한 자연어 질문을 기반으로 LLM이 실시간으로 SQL을 자동 생성해 실행하는 시스템에서는, AI가 존재하지 않는 컬럼을 지어내는 환각 현상이나 악의적이거나 비효율적인 쿼리를 실행하는 물리적 보안 위험이 수반됩니다. 쿼리의 고정된 구조 없이 전체 구조가 실시간으로 변환되므로, 단순 입력값 검증을 넘어 쿼리 전체의 구조적 신뢰성과 도메인 규칙 준수 여부를 검사해야 하는 과제가 존재합니다.
판단(두뇌)과 실행(도구함)을 아키텍처적으로 분리하여 보안 레이어를 데이터 통로 바로 앞에 배치하고, pgvector 기반 DB를 이용해 비즈니스 지식을 프롬프트에 동적으로 주입했습니다. 생성된 SQL은 실행 직전에 AST(구문 트리) 파서를 통해 테이블 존재 여부, 테넌트 격리 정책, 조작 방지 규칙 등 3단계의 엄격한 보안 게이트를 거치며, 검증 위반 발생 시 에러 피드백을 통해 모델이 스스로 수정하도록 하는 최대 2회의 자가 수정(Repair) 루프를 적용했습니다.
테넌트 격리 실패, 비효율적인 풀스캔, NULL 연산 및 0 나눗셈 에러, 한글 식별자 환각 등 프로덕션 장애 요소를 실행 전에 선제적으로 차단했습니다. 100여 개의 대표 질문으로 구성된 골든셋 데이터와 LLM 판정기(Judge)를 이용해 배포 시마다 자동화된 품질 회귀 평가를 실행한 결과, 전체 파이프라인의 안전 통과율을 초기 67%에서 80% 안팎까지 향상시켰습니다.
Trade-off
검증용 게이트가 강력해짐에 따라 정상적인 출력 결과 라벨을 환각 컬럼으로 잘못 판단하여 차단하는 오탐(False Positive) 버그가 발생하여 예외 처리가 필요해졌습니다. 또한, SQL 문법과 컬럼 매칭은 유효하지만 비즈니스 공식이나 도메인 로직이 어긋나 결과의 유효성만 손상되는 '조용한 실패'의 경우 사전 정적 분석 게이트만으로는 완벽히 제어하기 어려운 구조적 한계가 존재합니다.
사용자가 입력한 자연어 질의(Plain Text)를 이해하고 이를 관계형 데이터베이스에서 직접 실행 가능한 표준 SQL 문으로 변환하는 변환 기술입니다. 데이터 접근을 민주화하고 별도의 개발 공수 없이 원하는 정보에 바로 도달하게 돕는 AI 기반 인터페이스의 핵심 요소입니다.
텍스트 형태의 소스코드나 SQL 쿼리를 프로그래밍 언어의 구문 구조에 맞게 트리 계층 구조로 변환하여 분석할 수 있게 하는 컴파일러/파서 기술입니다. 정규식이 탐지하지 못하는 쿼리 변종이나 교묘한 패턴 우회를 실제 구조 분석을 통해 완벽히 가려낼 수 있습니다.
오픈소스 PostgreSQL 데이터베이스 환경에서 다차원의 벡터 데이터를 직접 저장하고 코사인 유사도 검색 등을 손쉽게 쿼리할 수 있도록 돕는 전용 확장 플러그인입니다. LLM과 지식창고를 연동하는 RAG(검색 증강 생성) 흐름에서 가장 대중적으로 활용되는 백엔드 스택입니다.