자연어 기반 데이터 분석 서비스 InsightLens 개발: SQL 몰라도 OK!

by DD
3개월 전
조회수 18

SQL 미숙련자도 자연어 질의를 통해 데이터에 접근하도록 돕는 Text2SQL 기반 서비스, InsightLens 개발

LLM과 RAG(Retrieval-Augmented Generation) 기술을 결합하여, 사용자의 자연어 질문을 SQL 쿼리로 변환

Jira 연동을 통해 기존 워크플로우를 유지하면서 데이터 추출 요청-피드백 시간을 단축

대화형 인터페이스를 통해 쿼리 수정 용이성을 높이고, 지속적 학습 메커니즘으로 성능 개선

PoC(Proof of Concept)를 통해 모델 성능보다 참조 데이터 품질이 중요함을 확인

RAG(Retrieval-Augmented Generation) 아키텍처 심층 분석

InsightLens는 RAG(Retrieval-Augmented Generation) 기술을 핵심으로, LLM이 데이터베이스(Database)에 대한 지식을 활용하도록 설계되었다. RAG는 LLM이 AI 환각(Hallucination)을 줄이고, 정확한 쿼리를 생성하도록 돕는다.

3단계 검색 파이프라인: 질문 정제, Vector Store 검색, SQL 생성

Vector Store: Q&A 데이터셋, 테이블 스키마, 정책 데이터 임베딩

Reranker 모델: 초기 검색 결과의 관련성 재평가

이러한 아키텍처는 LLM의 성능뿐 아니라, 참조 데이터의 품질에 따라 서비스 성능이 좌우됨을 시사한다.

에이전트(Agent) 설계 및 LangChain/LangGraph 활용

InsightLens는 Python과 LangChain/LangGraph를 사용하여 AI 에이전트를 구축했다. Python은 AI/ML 분야의 표준 언어이며, LangChain은 LLM 기반 애플리케이션 개발을 위한 빌딩 블록을 제공한다.

LangChain: 프롬프트 관리, 모델 추상화, 도구 통합, 메모리 관리, RAG 파이프라인

LangGraph: 에이전트 실행 흐름을 그래프 형태로 정의, 상태 기반 설계, 복잡한 흐름 표현

핵심 설계 원칙: 의도 파악 후 분기를 통해 불필요한 처리 최소화

LangGraph를 통해 에이전트의 구조를 시각적으로 파악하고, 점진적으로 기능을 확장할 수 있다.

프롬프트 엔지니어링(Prompt Engineering) 전략

InsightLens는 LLM의 성능을 극대화하기 위해 다양한 프롬프트 엔지니어링 기법을 활용했다. 프롬프트는 영어로 작성하여 정확성을 높이고, XML 포맷을 사용하여 구조화했다.

영어 기반 프롬프트: LLM의 이해도 및 지시 따르기 능력 향상, 토큰 효율성 증대

XML 포맷: 프롬프트의 각 섹션을 명확히 구분하여 모델의 파싱 정확도 향상

대화 맥락 유지: 이전 대화 내역을 프롬프트에 포함하여 멀티턴 대화 지원

Few-shot Learning: 모범 답변 사례를 포함하여 답변 품질 향상

이러한 전략은 SQL 쿼리 생성 품질을 향상시키는 데 기여했다.

지속적 개선 메커니즘 및 피드백 루프

InsightLens는 사용자의 피드백을 통해 지속적으로 성능을 개선하는 시스템을 구축했다. 생성된 쿼리가 사용자의 요구사항을 정확히 반영하면, 해당 쿼리를 정답 데이터로 등록한다.

정답 데이터 축적: 데이터 파이프라인을 통해 Vector Store에 임베딩

유사 질문에 대한 쿼리 생성: RAG를 통해 검색 및 쿼리 생성에 활용

성능 향상: 시간이 지날수록, 사용자가 많아질수록 더 정확한 쿼리 생성

이러한 피드백 루프(Feedback Loop)는 InsightLens가 단순히 모델 성능에 의존하는 것이 아니라, 데이터 축적을 통해 지속적으로 가치를 높이는 전략임을 보여준다.

개발 과정에서 얻은 교훈과 운영 노하우

InsightLens 개발 과정에서 프롬프트 관리, 에이전트 빌더 활용, RAG 시스템 운영 등 다양한 측면에서 교훈을 얻었다.

프롬프트 관리: 버전 관리, 테스트 자동화, 비개발자 접근성, A/B 테스트

에이전트 빌더 활용: 빠른 프로토타이핑, 시각적 이해, 협업 효율성, 디버깅 용이성

RAG 운영: 검색 정확도 향상, 최신성 관리, 피드백 루프

특히, RAG 기반 시스템에서 참조 데이터의 품질이 핵심이며, 지속적인 데이터 관리와 개선이 중요함을 강조했다.

기술 스택 및 시스템 아키텍처

InsightLens는 Python, LangChain, LangGraph, MySQL 등을 활용하여 구축되었다. 각 기술 스택은 특정 기능을 담당하며, 시스템 아키텍처는 의도 파악 후 분기를 핵심 설계 원칙으로 한다.

이전 대화 내역 조회: MySQL 데이터베이스에 저장된 대화 기록 조회

의도 분류: LLM 기반 의도 분류

사용자 질문 정제: 불필요한 표현 제거

키워드 추출: 핵심 키워드 추출

Q&A 데이터셋 검색, 테이블 스키마 조회, 정책 조회, 참조 데이터 수집, SQL 쿼리 생성/수정

이러한 아키텍처는 확장성유지보수성을 고려하여 설계되었다.

Text2SQL 기반 데이터 분석 서비스 InsightLens 개발기