티오더, 자연어 기반 데이터 조회 에이전트 '티스푼'으로 데이터 접근성 혁신

by DD
1개월 전
조회수 24

F&B 시장 데이터 분석을 위해 자연어 기반 데이터 조회 에이전트(Text2SQL Agent) '티스푼'을 구축

LangGraph StateGraph 기반 워크플로우, Amazon Bedrock, Athena, S3 Vectors 등 AWS 서비스 활용

Human-in-the-Loop(HITL) 이중 승인, RAG 검색, 가드레일(Guardrail)을 통해 안전한 SQL 실행 보장

RAG 검색 시, 4-Stage 파이프라인을 통해 스키마/쿼리 패턴/도메인 용어를 체계적으로 검색

향후 사용자 피드백 기반 프롬프트 개선, 쿼리 등록 자동화, 토큰 비용 최적화 계획

LangGraph 기반 아키텍처

티스푼은 LangGraph의 StateGraph를 기반으로 구축되어, 각 단계가 독립적인 노드로 분리된 워크플로우를 가진다. 이 아키텍처는 중간 결과의 명시적 기록을 가능하게 하여 디버깅(Debugging) 용이성을 높인다. 특히, Amazon Bedrock을 활용하여 LLM 추론 및 임베딩을 수행하고, Amazon Athena를 SQL 실행 엔진으로 사용한다. 또한, Amazon S3 Vectors를 RAG 파이프라인의 벡터 스토어로 활용하여 유사도 검색(Similarity Search)을 수행한다. 이러한 구조는 데이터 조회 과정의 투명성을 확보하고, 문제 발생 시 원인 분석을 용이하게 한다.

RAG(Retrieval-Augmented Generation) 설계

티스푼의 RAG 시스템은 문서 생성 단계부터 최적의 의미 단위로 설계된 문서를 활용한다. 스키마, 쿼리 패턴, JSON 필드, 도메인 용어 문서를 각각의 문서 타입으로 정의하고, 구조화된 메타데이터를 부여하여 정밀한 검색(Precise Retrieval)을 가능하게 한다. 특히, 4-Stage 검색 파이프라인을 통해 관련 테이블 확정, 쿼리 패턴 검색, 누락 테이블 스키마 보완, 비즈니스 용어 사전 검색을 순차적으로 수행한다. 이 4-Stage 파이프라인은 모델의 SQL 생성 정확도(SQL Generation Accuracy)를 향상시키는 핵심 요소이다.

Human-in-the-Loop(HITL)를 통한 안전성 확보

티스푼은 Human-in-the-Loop(HITL) 이중 승인 시스템을 통해 안전한 SQL 실행을 보장한다. 1차 승인 단계에서는 에이전트가 사용자의 요청을 어떻게 이해했는지 자연어로 제시하고, 사용자는 Slack 버튼을 통해 진행/취소/수정을 선택한다. 2차 승인 단계에서는 생성된 SQL을 사용자에게 공개하고 실행 여부를 다시 묻는다. 이러한 HITL 과정은 잘못된 SQL 실행으로 인한 데이터 손실(Data Loss)을 방지하고, 사용자의 데이터 접근 권한(Data Access Control)을 강화한다. 또한, 중복 처리 및 오작동을 방지하기 위해 버튼 비활성화 기능을 제공한다.

가드레일(Guardrail) 및 상태 관리

티스푼은 SQL 생성 및 실행 과정에서 발생할 수 있는 예외 상황에 대비하기 위해 다양한 가드레일을 적용했다. 재시도 3회 제한, 동일 에러 반복 감지, HITL 이중 승인 등을 통해 무한 루프(Infinite Loop) 및 잘못된 데이터 반환을 방지한다. 또한, 멀티턴 대화에서 모델이 잘못된 정보를 참조하는 것을 막기 위해, 각 필드에 수명 계층을 설정하고 새로운 처리 단위가 시작될 때 해당 범위의 필드를 초기화한다. 이러한 가드레일과 상태 관리는 시스템의 안정성(System Stability)을 높이는 데 기여한다.

날짜 처리 및 RAG 검색 의존성 문제 해결

티스푼은 날짜 관련 할루시네이션(Hallucination) 문제를 해결하기 위해, AgentState에 current_date 필드를 추가하고 KST 기준으로 고정하는 방식을 사용한다. 또한, 쿼리 생성 시 상대적 표현 대신 YYYY-MM-DD 형식의 절댓값을 사용하도록 프롬프트를 구성했다. RAG 검색 의존성 문제 해결을 위해, 4-Stage 파이프라인을 통해 누락된 테이블의 스키마와 쿼리 패턴을 추가 검색하여 컨텍스트를 보완한다. 이러한 노력은 데이터 정확성(Data Accuracy)을 높이고, 모델의 신뢰도(Model Reliability)를 향상시킨다.

티오더의 Text2SQL 에이전트 티스푼 구현 사례