← 모든 케이스 스터디
온프레미스 NL2SQL로 공공데이터 탐색 자동화

관광 관련 공공기관

온프레미스 NL2SQL로 공공데이터 탐색 자동화

80%

데이터 질의 작성 시간 단축

5배

비정형 리서치 요청 대응 속도 향상

회사 배경

이 기관은 관광 정책 수립과 사업 운영을 위해 오랜 기간 축적된 데이터를 보유한 공공기관으로, 관광지 방문 데이터, 지역별 통계, 숙박·시설 현황, 예산 집행 정보, 사업 성과 데이터 등 다양한 도메인 정보를 장기 누적해왔습니다.

정책 검토나 보고자료 작성 과정에서는 '지난 3년간 특정 지역 관광객 추이는 어떤가', '축제 운영 예산 대비 방문객 성과는 어떻게 달라졌는가', '특정 유형 시설의 지역별 분포는 어떠한가' 같은 질문이 반복적으로 발생했습니다. 하지만 이런 질문에 답하려면 데이터베이스 구조를 이해하고 SQL을 직접 작성할 수 있는 담당자의 도움이 필요했습니다.

결과적으로 데이터는 충분히 쌓여 있었지만, 현업자가 직접 활용하기에는 접근 장벽이 높았습니다. 조회 요청은 특정 인력에게 집중됐고, 단순 질의 하나에도 요청-대기-확인-수정의 반복이 발생하면서 정책 검토 리드타임이 길어지는 문제가 누적되고 있었습니다.

도전 과제

가장 큰 문제는 데이터가 없어서가 아니라, 데이터를 쉽게 꺼내 쓸 수 있는 사람이 제한적이었다는 점이었습니다. 실무자는 필요한 질문을 한국어로 명확히 설명할 수 있었지만, 이를 어떤 테이블과 컬럼으로 조합해야 하는지까지는 알기 어려웠습니다.

관광 데이터는 단일 테이블 조회로 끝나지 않는 경우가 많았습니다. 기간 기준, 지역 코드, 시설 분류 체계, 사업 단위, 예산 항목, 집계 기준이 서로 달라 질문 하나를 SQL로 바꾸는 과정에서도 조인 조건과 필터 해석이 복잡하게 얽혀 있었습니다. 같은 질문이라도 해석 기준에 따라 결과가 달라질 수 있어, 단순 텍스트 변환 수준의 NL2SQL로는 실무 신뢰를 얻기 어려웠습니다.

공공기관 특성상 외부 SaaS에 데이터를 반출하는 방식은 허용되지 않았고, 잘못된 조회나 과도한 쿼리 실행이 운영 리스크로 이어질 수 있었습니다. 따라서 정확한 SQL 생성만이 아니라 권한 통제, 허용 스키마 제한, 조회량 제한, 실행 이력 기록, 설명 가능한 결과 제공까지 함께 설계해야 했습니다.

결국 필요한 것은 '질문을 SQL로 바꾸는 모델' 하나가 아니라, 공공 운영 환경에서 안전하게 사용할 수 있는 전체 워크플로였습니다.

해결 방식

프로젝트 팀은 온프레미스 NL2SQL 시스템을 기본 축으로 두고, 자연어 질문을 내부 스키마와 직접 연결하는 실행형 워크플로를 설계했습니다. 핵심은 사용자가 질문을 입력하면 모델이 전체 데이터베이스를 무작정 해석하는 것이 아니라, 먼저 해당 질문과 관련된 업무 용어, 지표 정의, 예시 질의, 허용 테이블 범위를 좁힌 뒤 그 안에서 SQL을 생성하도록 만드는 것이었습니다.

이를 위해 우선 실제로 자주 쓰이는 테이블 구조와 조인 관계, 지표 정의, 기간 기준, 행정 용어를 정비해 업무 용어 사전과 의미 계층을 만들었습니다. 예를 들어 '방문객 수', '이용 건수', '예산 집행액', '시설 수'처럼 현업이 쓰는 표현이 DB 내부의 어느 컬럼과 집계 로직에 대응하는지 명시적으로 연결해, 질문 해석 단계의 모호성을 줄였습니다.

질문이 입력되면 Schema Retrieval 계층이 관련 테이블, 컬럼, 예시 쿼리, 용어 정의를 먼저 검색해 모델에 필요한 컨텍스트만 전달하도록 구성했습니다. 덕분에 전체 스키마를 한 번에 모델에 넣지 않아도 됐고, SQL 생성 정확도와 응답 일관성을 함께 높일 수 있었습니다.

생성된 SQL은 곧바로 실행하지 않았습니다. 별도의 SQL Validation Layer에서 문법 검사, 위험 패턴 탐지, 허용 테이블 범위 점검, 조회량 제한, 읽기 전용 여부 확인을 거친 뒤에만 실행되도록 설계했습니다. 이를 통해 잘못된 조인으로 인한 과도한 조회나 운영상 위험한 쿼리를 사전에 차단했습니다.

또한 사용자에게는 결과만 보여주지 않고, 어떤 기준이 적용됐는지, 어떤 테이블을 참조했는지, 집계 단위와 기간 조건이 무엇인지 설명 형태로 함께 노출했습니다. 이 설명 레이어 덕분에 현업 담당자는 결과를 그대로 복사해 쓰는 것이 아니라, 왜 이런 결과가 나왔는지 검토하면서 재질문하거나 조건을 바꾸는 흐름으로 사용할 수 있었습니다.

마지막으로 권한 통제와 감사 로그를 연동해 부서나 사용자 유형에 따라 조회 가능한 범위를 제한하고, 누가 어떤 질문으로 어떤 SQL을 실행했는지 추적할 수 있도록 했습니다. 그 결과 이 시스템은 단순 데모가 아니라 실제 공공기관 내부망에서 운영 가능한 NL2SQL 업무 도구로 자리 잡았습니다.

기술 구성

  • On-premise LLM

    기관 내부망에서 구동 가능한 LLM을 기반으로 자연어 질문을 SQL 생성 요청으로 처리해, 데이터 외부 반출 없이 보안 구간을 유지했습니다.

  • Schema Retrieval

    질문과 관련된 테이블·컬럼·예시 쿼리·업무 용어만 먼저 검색해 모델 컨텍스트를 축소하고 SQL 생성 정확도를 높이는 전처리 계층으로 설계했습니다.

  • SQL Validation Layer

    문법 오류, 과도한 조회량, 비허용 테이블 접근, 위험 패턴을 사전 점검해 실행 전 차단하거나 수정 권고를 적용하는 안전 검증 계층입니다.

  • Semantic Layer

    행정 용어 사전과 지표 정의를 정리해 '현업 언어 ↔ DB 구조' 간 매핑을 지속적으로 관리하고 질문 해석의 일관성을 높였습니다.

  • Query Explanation Layer

    적용된 기간 조건, 집계 기준, 참조 테이블을 사용자에게 설명 형태로 제공해 결과 해석 가능성과 재검증 편의성을 높였습니다.

  • 권한 통제 및 감사 로그

    사용자 권한별 조회 범위를 통제하고 실행 이력과 질의 로그를 남겨 운영 추적성과 보안 준수 체계를 확보했습니다.

문제는 데이터가 없는 것이 아니라, 필요한 순간에 필요한 사람이 바로 꺼내 쓰기 어렵다는 점이었습니다. 이 프로젝트의 핵심은 복잡한 데이터베이스 구조를 감추는 것이 아니라, 공공기관 실무자의 질문을 안전하고 검증 가능한 조회 흐름으로 다시 연결해주는 것이었습니다.

빅시프트 프로젝트팀 · 공공기관 NL2SQL 프로젝트 리드

온프레미스 NL2SQL 도입 후, 이 기관은 축적된 데이터를 일부 담당자만 다루는 기술 자산에서 현업 부서가 직접 활용하는 운영 자산으로 전환했고, 접근성 향상과 통제 가능성을 함께 확보했습니다.

1

업무 효율화

데이터 질의 작성과 조회 요청 처리 시간이 기존 대비 약 80% 단축되어, 반복 리서치 요청과 중간 전달 단계가 크게 줄었습니다. 단순 통계 확인을 위해 개발자나 DB 담당자를 거치던 과정이 짧아지면서 보고자료 작성과 정책 검토 속도도 함께 개선됐습니다.

2

현업 접근성 향상

비전문 인력도 자연어로 필요한 정보를 직접 탐색할 수 있게 되어 정책 검토, 보고자료 작성, 현황 점검 업무의 진입장벽이 낮아졌습니다. 특히 질문을 다시 다듬어가며 결과를 확인하는 self-service 분석 흐름이 가능해졌습니다.

3

보안성과 운영 통제 확보

외부 반출 없이 내부망에서 운영되므로 공공기관의 보안 요구를 충족했고, 권한·로그 기반 거버넌스를 통해 안정적 운영을 달성했습니다. 실행 전 검증 계층이 위험 쿼리를 차단하면서 현업 확산과 운영 통제를 동시에 만족시킬 수 있었습니다.

4

데이터 기반 행정의 기반 마련

축적 데이터를 단순 저장 자산에서 정책 검토와 의사결정에 직접 활용 가능한 자산으로 전환해, 향후 분석 자동화, 대시보드 연계, 정책 시뮬레이션 확장 기반을 마련했습니다.

비슷한 AI 프로젝트를 준비 중이신가요?

기획 단계부터 데이터 구조, 모델 선택, 제품화 범위까지 함께 설계합니다.

다른 사례

유사한 문제를 다른 방식으로 해결한 프로젝트도 함께 보실 수 있습니다.