Search

20. Text-to-SQL 1차 개선

섹션
6. Text-to-SQL: 어제 서울에서 가장 많이 팔린 물건은?

Text-to-SQL 1차 개선

기존 방식의 문제점

확장성 부족

데이터베이스 스키마가 하드코딩되어 있음
테이블 변경, 추가, 삭제 시마다 워크플로우 재작성 필요
프롬프트 업데이트만으로도 번거로움

동적 스키마 가져오기

데이터베이스에서 스키마 정보 추출

로컬 db setting에서 create table 정보 확인
PostgreSQL 쿼리로 스키마 정보 가져오기
강의 자료에 제공된 쿼리 사용 (암기 불필요)

쿼리 실행 및 처리

PostgreSQL에서 쿼리 실행 후 스키마 정보 획득
여러 항목에 대한 루프 처리 방식 변경
한 번에 전체 정보를 처리해야 함

코드 블록을 통한 스키마 처리

루프 처리 로직

코드 블록 추가하여 처리
input all에서 이미 루프 실행 중
스키마를 문자열로 추가하면서 루프 진행
줄바꿈 처리 포함

JavaScript 문법 처리

코드는 반드시 객체 배열을 반환해야 함
큰 괄호와 중괄호로 감싸기
key와 value가 같을 때 JavaScript 문법 적용
입력 26개에서 출력 1개로 변경

LLM 연결 수정

채팅 입력이 직접 연결되지 않아 define below로 변경
item 대신 first 사용 (문법 오류 수정)
스키마 부분을 동적으로 가져오도록 수정

툴 vs 워크플로우 선택 기준

개인적 견해

요즘 툴 개발에 집중하고 있음
툴을 잘 사용하는 것이 에이전트 개발과 AI 활용의 올바른 방향
하지만 이번에는 툴을 전혀 사용하지 않음

툴이 강력한 경우

패턴이 명확하지 않을 때
예시: 사내 서비스 (수집 PT 대체)
리서치 툴
오피스 문서 검색 툴
다양한 MCP 지원
사용자 의도를 알 수 없는 경우 (시장 조사, 웹 검색, 문서 비교, 시각화 등)

Text-to-SQL의 경우

패턴이 너무 명확함
질문 → 쿼리 변환 → DB 접근의 고정된 흐름
에이전트로 개발 시 불필요한 토큰 비용 발생
스키마 툴, 쿼리 변환 툴, 쿼리 실행 툴 필요
AI가 고정된 값들을 호출해야 함
개발자가 직접 호출 시 토큰 비용 없이 DB 통신 비용만 발생
AI 추론 과정 생략으로 시간 절약 및 속도 향상

서비스 특성에 따른 선택

서비스 복잡도에 따라 에이전트 vs 워크플로우 선택
여러 데이터베이스나 복잡한 테이블 구조 시 에이전트 활용 가능
툴로 스키마 분석을 에이전트에게 요청하는 방식도 고려
정답은 없으며 서비스 타입에 맞는 방식 선택 필요