Text2SQL 기반 데이터 분석 서비스 InsightLens 개발기
InsightLens는 RAG와 LLM으로 자연어를 실행 가능한 SQL로 바꾼다.
기업 내 데이터 요청은 SQL에 익숙하지 않은 현업과 분석팀 사이의 반복 커뮤니케이션 때문에 느려지기 쉽다. InsightLens는 이런 병목을 줄이기 위해 자연어 질문을 실행 가능한 SQL로 바꾸는 Text2SQL 서비스로 개발됐다.
핵심에는 RAG(Retrieval-Augmented Generation) 가 있다. 질문을 정제한 뒤 Vector Store에서 과거 Q&A, 테이블 스키마, 정책 데이터를 검색하고, 그 근거를 프롬프트에 주입해 모델이 스키마 환각, 조인 관계 오류, 도메인 규칙 누락을 줄인 SQL을 생성하도록 설계했다.
개발 전 2주간 PoC를 진행한 결과, 프론티어 모델 자체의 생성 능력은 충분했지만 성능을 가르는 변수는 참조 데이터의 품질이라는 점이 드러났다. Q&A 데이터는 포맷이 제각각이었고, 스키마 문서에는 설명과 코드값 정의가 부족했기 때문에 데이터셋 표준화와 전처리, 그리고 LLaMA-3.3-70B-Instruct 기반 데이터 증강을 병행했다.
시스템은 Python, LangChain, LangGraph로 구성했고, LLM은 Claude와 OpenAI를 함께 지원한다. Vector Store는 OpenSearch를 사용해 lexical search와 semantic search를 모두 활용하며, 검색 품질 강화를 위해 reranker를 추가했다.
에이전트는 대화 내역 조회, 의도 분류, 질문 정제, 키워드 추출, Q&A 검색, 스키마 조회, SQL 생성 흐름으로 동작한다. Jira 연동으로 기존 요청 흐름을 유지하면서도 빠른 초기 응답을 제공하고, 생성된 쿼리의 설명과 예상 결과, 참조 데이터를 함께 보여준다.
가장 중요한 설계는 사용할수록 개선되는 피드백 루프다. 검증된 쿼리를 정답 데이터로 등록하면 다시 Vector Store에 축적되어 이후 유사 질문의 품질을 높이고, 범위 밖 질문에는 정중히 응답해 SQL 생성 도메인에 집중하도록 만들었다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.