본문 바로가기
AI2026년 5월 28일3분 읽기

Cloudflare Workers AI에 RAG — vector + KV + R2로 만든 검색봇

YS
김영삼
조회 405
Cloudflare Workers AI에 RAG — vector + KV + R2로 만든 검색봇

핵심 요약

Cloudflare 단일 스택으로 사내 RAG 검색봇 — Workers AI(임베딩·생성) + Vectorize(벡터 인덱스) + KV(메타) + R2(원본 문서). 월 비용 $14, p50 320ms, 사용자 28명 6개월 운영. 가성비 압승.

1. 파이프라인

// 색인
const embed = await env.AI.run('@cf/baai/bge-large-en-v1.5', { text: chunk })
await env.VECTOR.upsert([{ id, values: embed.data[0], metadata: { docId } }])
await env.KV.put(`doc:${id}`, JSON.stringify({ title, url }))
await env.R2.put(`docs/${docId}.md`, raw)

// 검색
const q = await env.AI.run('@cf/baai/bge-large-en-v1.5', { text: query })
const results = await env.VECTOR.query(q.data[0], { topK: 8 })
const ctx = await Promise.all(results.matches.map(m => env.KV.get(`doc:${m.id}`)))
const answer = await env.AI.run('@cf/meta/llama-4-8b', { messages: ... })

2. 데이터 규모

  • 문서 8,400개(사내 위키, 노션, PDF)
  • chunk 142K, 임베딩 1024차원
  • Vectorize index 580MB
  • R2 raw 4.8GB

3. 비용 분해

항목월 비용
Workers AI(임베딩+생성)$8.4
Vectorize$3.2
KV reads$0.6
R2 storage$0.08
Workers 요청$2

4. 함정

  • Vectorize 인덱스 metadata 필터 — 정확 매칭만, range·full-text는 KV로 보조
  • 임베딩 모델 변경 = 재색인 — 모델 선택 신중
  • rate limit — Workers AI 분당 500, 큰 색인 작업은 Queue로 분산
  • chunk 크기 — 한국어는 800자, 영어는 1024 토큰 권장

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록