1. 데이터만 넣으면 끝?! AI가 숫자 분석·리포트까지! SQL RAG 에이전트 완전정복 [0]

thumbnail

매주 반복되는 데이터 분석 및 보고서 작성 업무를 AI에게 맡겨, 데이터 업데이트만으로 SQL 쿼리 작성부터 분석, 리포트 생성, 이메일 발송까지 자동화하는 방법을 소개합니다.

1.1. SQL 기반 RAG 에이전트의 작동 방식 [0]

기존 RAG 시스템과 달리, SQL 기반 RAG 에이전트는 정형 데이터를 활용하여 AI가 직접 SQL 쿼리를 생성하고 데이터베이스에서 값을 추출하여 답변을 생성합니다.

  1. 일반적인 RAG 시스템:
    • 문서나 텍스트를 잘게 쪼개(청크) 벡터로 변환 후 데이터베이스에 저장합니다. [6]
    • 질문 시 질문 내용도 벡터화하여 저장된 벡터와 유사도를 비교하고, 유사한 내용을 AI 모델에 포함시켜 답변을 생성합니다. [8]
  2. SQL 기반 RAG 시스템:
    • CSV나 엑셀 같은 정형 데이터를 행별로 데이터베이스에 벡터화 없이 저장합니다. [10]
    • 질문 시 AI가 해당 질문에 대한 SQL 명령어를 자동으로 생성하여 데이터베이스에서 값을 추출합니다. [13]
    • 추출된 값을 활용하여 답변을 생성하며, 특히 매출, 재고, 고객 데이터 등 숫자가 중요한 비즈니스 데이터 분석에 신뢰도 높은 답변을 제공합니다. [14]

1.2. 슈퍼베이스(Superbase) 데이터베이스 설정 [18]

가상의 이커머스 브랜드 '구시'의 주간 매출 리포트 자동 생성을 위해 슈퍼베이스에 데이터베이스를 설정합니다.

  1. 프로젝트 생성 및 테이블 추가:
    • superbase.com에 접속하여 로그인 후 새 프로젝트를 생성합니다. [22]
    • document_info 테이블 생성: 파일별 URL, 스키마(컬럼명) 등 문서 관련 정보를 저장합니다. [29]
      • 스키마는 나중에 SQL 명령어 작성을 위해 컬럼명을 지정하는 데 사용됩니다. [36]
    • document 테이블 생성: 실제 문서의 행 정보를 저장하며, row_data 컬럼에 JSONB 형식으로 데이터를 저장하여 파일별 컬럼이 달라도 유연하게 관리합니다. [41]
      • document_id는 document_info 테이블의 파일 ID와 연결됩니다. [46]

1.3. N8N 워크플로우 구축: 구글 드라이브 데이터 연동 및 데이터베이스 업데이트 [55]

구글 드라이브에 업로드된 스프레드시트 또는 엑셀 파일을 감지하여 슈퍼베이스 데이터베이스에 업데이트하는 워크플로우를 설정합니다.

  1. 구글 드라이브 파일 감지 및 루프 설정:
    • 구글 드라이브 노드에서 'Specific Folder' 트리거를 사용하여 'SQL RAG' 폴더에 파일이 생성되거나 업데이트될 때 감지합니다. [58]
    • 여러 파일이 동시에 처리될 수 있도록 'Loop Over Items' 노드를 추가하여 반복 처리합니다. [65]
  2. 파일 정보 추출 및 변수 설정:
    • 루프 내에서 'Edit Fields' 노드를 사용하여 파일 ID, 타입, 타이틀, URL 등 주요 정보를 변수로 저장합니다. [71]
  3. 기존 데이터 삭제 (중복 방지):
    • 새로운 파일 업데이트 전, 동일한 파일 ID를 가진 기존 데이터를 document 테이블과 document_info 테이블에서 삭제합니다. [85]
    • 슈퍼베이스 'Delete Row' 노드를 사용하여 document_id 또는 id 값을 기준으로 삭제 조건을 설정합니다. [88]
    • 테스트 시 이전 단계 필터링 결과가 없어도 다음 단계가 실행되도록 'Always Output Data' 옵션을 활성화합니다. [111]
  4. 데이터베이스 테이블 업데이트:
    • document_info 테이블 업데이트:
      • 슈퍼베이스 'Upsert Rows in a Table' 노드를 사용하여 파일 ID, 타이틀, URL 등을 document_info 테이블에 추가합니다. [116]
      • 스키마 정보는 추후 컬럼 정보 추출 후 업데이트합니다. [131]
    • 파일 다운로드 및 형식 변환:
      • 구글 드라이브 'Download File' 노드를 사용하여 파일을 다운로드하고, 'Google File Conversion' 옵션으로 구글 시트를 CSV 형식으로 변환합니다. [141]
    • 데이터 추출 (CSV/Excel):
      • 'Switch' 노드를 사용하여 파일 타입(엑셀 또는 스프레드시트)에 따라 분기합니다. [155]
      • CSV 파일은 'Extract from CSV' 노드로, 엑셀 파일은 'Extract from Excel' 노드로 데이터를 추출합니다. [164]
    • document 테이블 업데이트:
      • 추출된 행 데이터를 슈퍼베이스 'Upsert Rows in a Table' 노드를 사용하여 document 테이블의 row_data 컬럼에 JSON 문자열 형태로 저장합니다. [173]
      • document_id는 document_info의 파일 ID와 매핑됩니다. [177]
  5. 스키마 정보 업데이트:
    • 추출된 데이터의 컬럼 정보를 document_info 테이블의 schema 컬럼에 업데이트합니다. [193]
    • 500개 행 데이터가 개별적으로 처리되는 것을 방지하기 위해 'Aggregate' 노드로 데이터를 합치고, 'Edit Fields' 노드에서 'Execute Once' 옵션을 사용하여 스키마 업데이트 작업을 한 번만 실행하도록 최적화합니다. [206]
    • 슈퍼베이스 'Upsert Rows in a Table' 노드를 사용하여 document_info 테이블의 schema 값을 업데이트합니다. [223]
  6. 워크플로우 반복 및 활성화:
    • 스키마 업데이트 후, 루프의 시작 부분으로 연결하여 여러 파일에 대한 데이터 업데이트 작업을 반복하도록 설정합니다. [230]
    • 워크플로우를 활성화하고 구글 드라이브에 파일을 추가하면 자동으로 데이터베이스 업데이트가 진행됩니다. [236]

1.4. SQL 기반 RAG 에이전트 제작 및 리포트 생성 [249]

데이터베이스에 저장된 정보를 바탕으로 AI 에이전트가 SQL 쿼리를 생성하고, 분석 결과를 리포트로 작성하여 이메일로 발송하는 과정을 설정합니다.

  1. AI 에이전트 설정:
    • 'Chat Trigger'와 'AI Agent' 노드를 추가합니다. [250]
    • Chat Model: OpenAI의 GPT-4.1 모델을 사용하고, 사실적인 답변을 위해 템퍼레처를 0.2로 낮춥니다. [252]
    • Memory: PostgreSQL Chat Memory를 사용하여 대화 내용을 기억하도록 설정합니다. [257]
  2. 시스템 프롬프트 및 툴 설정:
    • System Prompt: 에이전트에게 '구시' 브랜드의 비즈니스 리포트 제작 역할을 부여하고, document_info와 document 테이블에 접근할 수 있는 두 개의 툴을 사용하도록 지시합니다. SQL 활용, 한국어 요약, 특정 아웃풋 포맷을 명시합니다. [261]
    • Tool 1 (check_document_info): 슈퍼베이스 'Postgres Tool'을 사용하여 document_info 테이블에서 스키마 정보를 가져오는 툴을 설정합니다. [270]
    • Tool 2 (query_document): 슈퍼베이스 'Postgres Tool'을 사용하여 document 테이블에서 SQL 쿼리를 실행하는 툴을 설정합니다. AI가 SQL 쿼리를 생성하도록 프롬프트를 구성합니다. [280]
  3. 아웃풋 파서 설정:
    • 안정적인 아웃풋을 위해 'Structured Output Parser'를 사용하여 원하는 JSON 포맷으로 결과를 받도록 설정합니다. [290]
    • 이는 구글 문서 템플릿에 값을 채워 넣기 위한 준비 과정입니다. [294]
  4. 리포트 생성 및 이메일 발송:
    • 구글 문서 템플릿 복사 및 업데이트:
      • 구글 드라이브 'Copy File' 노드를 사용하여 미리 준비된 리포트 템플릿을 복사합니다. [308]
      • 구글 드라이브 'Update Document' 노드를 사용하여 AI 에이전트의 분석 결과(JSON)를 템플릿의 해당 플레이스홀더에 대체합니다. [315]
        • 숫자 값은 텍스트로 변환하여 'Find and Replace Text' 액션에 사용합니다. [324]
    • 파일 다운로드:
      • 업데이트된 구글 문서를 구글 드라이브 'Download File' 노드를 사용하여 다운로드합니다. [329]
    • 이메일 발송:
      • Gmail 'Send Message' 노드를 사용하여 다운로드된 리포트 파일을 첨부하여 이메일로 발송합니다. [333]
  5. 스케줄링 설정 (자동화):
    • 'Schedule' 노드를 추가하여 매주 특정 요일과 시간에 리포트 발송을 자동화할 수 있습니다. [346]
    • 스케줄 트리거 시 AI 에이전트에게 전달할 사용자 메시지(프롬프트)를 설정하여 특정 기간의 데이터를 분석하도록 지시할 수 있습니다. [349]
    • 메모리 설정 시 세션 ID가 없을 경우를 대비하여 'schedule session' 값을 사용하도록 설정합니다. [357]

1.5. 생성된 리포트 값 검증 [359]

자동 생성된 리포트의 값이 실제 수동 분석 결과와 일치하는지 검증합니다.

  1. 수동 데이터 취합 및 분석:
    • 리포트에서 요청한 특정 기간(예: 4월 28일 ~ 5월 4일)의 데이터를 수동으로 취합하고 피벗 테이블 등을 활용하여 분석합니다. [360]
  2. 결과 비교:
    • 매출액, 순이익, 베스트셀러 상품, 최고 매출 카테고리 등 리포트의 주요 지표들이 수동 분석 결과와 일치하는지 확인합니다. [365]
    • 수동 작업 시 많은 시간이 소요되지만, SQL 기반 RAG 에이전트를 사용하면 자동으로 리포트를 받아볼 수 있습니다. [368]

1.6. 결론 및 활용 방안 [370]

SQL 기반 RAG 에이전트를 활용하여 데이터만 업데이트하면 AI가 자동으로 분석하고 리포트를 생성하는 시스템을 구축했습니다.

  1. 핵심 기능:
    • 구글 드라이브에 데이터를 업데이트하면 AI 에이전트가 자동으로 데이터를 분석하고 리포트를 생성합니다. [370]
    • SQL 지식이 없어도 AI가 SQL 명령어를 생성해주므로 다양한 분석 작업을 손쉽게 수행할 수 있습니다. [371]
  2. 활용 제안:
    • 매출 데이터뿐만 아니라 스프레드시트나 엑셀에 있는 데이터를 기반으로 루틴하게 분석해야 하는 업무에 이 시스템을 적용해 볼 수 있습니다. [372]
  3. 향후 계획:
    • 생산성을 높이는 시스템 구축 방법을 지속적으로 공유할 예정입니다. [374]