'I vibe coded it' 한 줄로 toaster 서버에서 HN — 도메인 텍스트 RAG의 최소 사이클
핵심 요약 (TL;DR)
jacksonastone이 World English Bible 전체를 OpenAI 임베딩으로 단락 단위 인덱싱한 crosscanon.com을 띄워 6월 25일 HN Show 123pts·75댓글을 받았습니다. 본인이 본문에서 "I vibe coded it", "basically running on a toaster"라고 직접 적었고, 4GB 인덱스에 검색 응답은 약 15초입니다. 코드는 github.com/jacksonStone/cross-cannon에 공개되어 있어, "내가 좋아하는 도메인 텍스트로 RAG를 만들면 누가 쓸까"를 의심하던 바이브코더가 최소 사이클을 그대로 복제할 수 있습니다.
도메인 텍스트 RAG가 작아도 통하는 이유
crosscanon.com에 "more money more problems"를 넣으면 Ecclesiastes 5:9-13의 부의 무의미와 잠 못 이루는 풍요에 대한 구절이 정확하게 반환됩니다. 단순 키워드 검색으로는 닿기 어려운 의미 매핑이죠. WEB 번역본은 공도메인 텍스트라 라이선스 부담이 없고, 단락 단위로 임베딩을 그루핑해 검색 결과가 한 줄짜리 단편이 아니라 맥락이 살아 있는 단위로 돌아옵니다. Protestant 정경에 우선 한정해 책별 체크박스로 범위 좁히기 UI도 깔끔합니다.
흥미로운 건 이 결과를 만든 인프라가 말 그대로 "toaster"라는 점입니다. OP가 본문에 직접 적었듯 백엔드 사양은 그리 거창하지 않습니다. 4GB 인덱스를 메모리에 올리고 검색 한 번에 약 15초가 걸린다는 솔직한 한계 고백이 함께 붙어 있죠. 그럼에도 HN 댓글 75개는 "에티오피아 정경도 넣어 달라", "다국어 번역", "오디오 생성", "LUME retrieval primitives 추천" 같은 기능 요청과 확장 아이디어가 폭주합니다. 도메인 텍스트 RAG는 인프라가 빈약해도 도메인이 좁고 의미가 깊으면 충분히 1면 직전까지 갈 수 있다는 살아 있는 증거입니다.
"vibe coded"의 정직한 정의
이 사례가 가치 있는 또 한 가지는 본인이 README에 정확하게 명시한 한 줄입니다. "(This was vibe coded, be warned!)" 코드 품질이 정돈된 프로덕션 수준이 아닐 수 있다는 솔직한 단서를 본인이 먼저 답니다. 동시에 코드는 공개합니다. 기술 스택은 Remix, TypeScript, libSQL이고, 임베딩은 OpenAI API를 씁니다. "vibe coded"가 무엇을 뜻하는지를 가장 정확하게 보여주는 표본 중 하나입니다. 완성도를 자랑하지 않습니다. 결과물이 동작하고, 그게 충분히 의미 있다는 것만 말합니다.
최소 사이클: 도메인 → 임베딩 → 공개
이 모델을 자기 도메인에 옮기는 사이클은 짧습니다.
텍스트 확보. 공도메인 또는 자기 콘텐츠 위주로 시작합니다. 한국어라면 국립국어원 모두의 말뭉치, 위키문헌, 본인 블로그 누적분, 회사 내부 문서 같은 후보가 있습니다. 라이선스를 검수한 후 단위(단락·페이지·챕터)를 결정합니다.
단락 단위 임베딩. OpenAI 임베딩 API로 충분합니다. 단락마다 임베딩을 만들고, 메타데이터(책·장·절·작성일)를 함께 저장합니다. crosscanon이 libSQL을 쓴 것처럼 SQLite 계열에 vector extension을 얹는 가벼운 조합으로 시작해도 됩니다. 의사 코드로 적으면 이렇습니다.
for para in paragraphs:
vec = openai.embeddings.create(
model='text-embedding-3-small',
input=para.text,
).data[0].embedding
db.execute(
'INSERT INTO chunks(book, chapter, verse_from, verse_to, text, vec)'
' VALUES (?, ?, ?, ?, ?, ?)',
(para.book, para.chapter, para.start, para.end, para.text, vec),
)
검색 + 한 페이지. Remix 같은 가벼운 풀스택 프레임워크로 한 페이지짜리 검색 UI를 만듭니다. 입력창과 결과 카드만 있어도 첫 출시 가능합니다. 응답 속도는 15초가 나와도 솔직하게 표기하면 됩니다. 사용자는 도메인 특화 검색의 정확도를 더 중요하게 봅니다.
오픈소스 공개. GitHub에 코드 그대로 올립니다. README 첫 줄에 "vibe coded" 단서와 한계를 직접 적습니다. Show HN 또는 자기 커뮤니티에 올리면 기능 요청 댓글이 다음 분기 로드맵을 대신 짜줍니다.
자주 묻는 질문 (FAQ)
Q. 임베딩 비용이 얼마나 드나요?
WEB 성경 분량(약 80만 단어)을 OpenAI 임베딩으로 처리해도 수 달러 수준입니다. 자기 도메인이 그보다 작거나 비슷하다면 부담 없는 일회성 비용입니다.
Q. 검색 응답 15초가 너무 길지 않나요?
도메인 특화 검색에서는 정확도가 속도를 이깁니다. 다만 출시 후에는 인덱스를 메모리에 상주시키거나 결과 캐시를 깔아 1~2초대로 줄이는 게 다음 분기 과제로 자연스럽습니다. 첫 출시는 솔직한 표기로 충분합니다.
Q. 종교 텍스트 외 어떤 도메인이 잘 맞나요?
조항이 길고 의미 매핑이 중요한 모든 텍스트가 후보입니다. 법령, 학술 논문, 회사 내부 위키, 의료 가이드라인, 게임 룰북, 영화 시나리오 대사 같은 도메인이 잘 작동합니다.
댓글 0
아직 댓글이 없습니다