Week 5 · 🟢 과제 5

스케줄링 + Vector DB 기초

Supabase pgvector · 첫 RAG · 멀티 Cron으로 시간대별 자동 실행

🏠 강의노트 홈 📦 이 페이지 GitHub ↗ 📂 W5 폴더 ↗
목표

이번 주 목표

지금까지의 워크플로우를 장 시간대별로 자동 실행되게 묶고, 첫 RAG 시스템을 Supabase pgvector로 구축합니다.

Multi-Schedule

1. 멀티 스케줄 구조

시각이름실행 워크플로우
08:00Pre-marketW1 데이터수집 → W2 지표 → W3 뉴스 → 시황 메일
11:00Mid-day checkW3 뉴스 + 강한 신호 알림만
14:00Pre-closeW4 차트 Vision + verdict 갱신
16:30Post-market일일 손익 + 다음날 후보 추천

각 시각마다 별도의 Schedule Trigger를 가진 워크플로우 운영. Execute Workflow 노드로 W1~W4 호출 체이닝.

First RAG

2. 첫 RAG — 본인 투자 노트 검색

본인이 작성한 종목 분석 노트(텍스트 파일)를 검색 가능하게 만듭니다. W6 사업보고서 RAG의 워밍업.

임베딩 워크플로우 (1회성)

🔴 Trigger Drive Trigger — investment_notes/ 폴더 newFile
🔵 Read Drive 파일 다운로드 → 텍스트 추출
⚫ Split Code 노드 — 1000자 청크, overlap 200자
🟣 Embed OpenAI text-embedding-3-small (1536d)
🟢 Insert Supabase HTTP — embeddings 테이블 insert

질의 워크플로우

🔴 Trigger Webhook (Slack /ask 또는 form)
🟣 Embed 질의 텍스트 임베딩
🟢 Search Supabase RPC — match_documents top-K=5
🟣 Answer Claude — 검색 결과를 컨텍스트로 답변 생성
🟢 Reply Slack message + 출처 링크
Supabase

Supabase RPC 함수 (코사인 유사도 top-K)

-- SQL Editor에서 한 번만 생성
create or replace function match_documents(
  query_embedding vector(1536),
  match_count int default 5
)
returns table(id bigint, content text, metadata jsonb, similarity float)
language sql stable as $$
  select id, content, metadata,
         1 - (embedding <=> query_embedding) as similarity
  from embeddings
  order by embedding <=> query_embedding
  limit match_count;
$$;
Missions

🟢 과제 5개

1
4개 시간대 워크플로우 분리
하나의 거대 워크플로우 X. 시간대별 4개 분리 + 공통 모듈은 sub-workflow로
2
Supabase 테이블 + 함수 생성
SQL Editor에서 vector extension + embeddings 테이블 + match_documents 함수
3
투자 노트 5개 임베딩
본인이 정리한 종목 분석 메모 5개를 Drive에 올려 자동 임베딩되는지 확인
4
자연어 질의 동작
"삼성전자에 대한 내 의견은?" 같은 질의에 본인 노트 인용 답변
5
Cron 시각 검증
평일 08:00 한 번 실행 후 Sheets에 실행 로그(timestamp, items 처리 수)가 1행 추가되는지 확인
왜 Supabase 무료? pgvector + Postgres + REST API + Auth가 통합된 BaaS. 무료 500MB · 50MB egress/day로 학습엔 충분.