RAG 파이프라인이 3일 연속으로 죽자, 저는 그것이 죽을 것이라고 가정하고 재구축했습니다.
요약
RAG 파이프라인의 불안정성을 경험한 후, 작성자는 '시스템은 실패할 것'이라는 가정 하에 문서 수집 계층을 재구축했습니다. 이 과정에서 핵심은 임베딩 모델이나 벡터 DB가 아닌, 멱등성 쓰기(upserts), 체크포인트 기반 재개, 서브프로세스 격리 등 복원력 아키텍처 설계임을 강조합니다.
핵심 포인트
- 핵심은 기술 스택이 아니라 시스템의 복원력 아키텍처입니다.
- 멱등성 쓰기(Idempotent writes)를 통해 중복 없이 재실행할 수 있습니다.
- 체크포인트 기반으로 멈춘 지점부터 정확하게 작업을 재개해야 합니다.
- 서브프로세스 격리 및 상세 로깅은 시스템 안정성을 높이는 핵심 요소입니다.
문서 수집(document-ingestion) 파이프라인이 3일 연속으로 작동을 멈춘 후, 저는 '작동할 것이다'라는 믿음을 버리고 다음 하나의 가정을 중심으로 수집 계층을 재구축했습니다. 바로 그것은 죽을 것이다는 가정입니다.
이후 이 시스템은 127개의 대화 코퍼스(~8.2M 문자, ~11,400 청크)에 걸쳐 5번의 세션 종료(session kills)와 19번의 워치독 재시작을 견뎌냈으며 — 손실된 대화는 없고, 중복도 없습니다.
실제로 중요했던 것들 (순서대로)
- 멱등성 쓰기(Idempotent writes) (upserts) — 재실행 시 중복이 발생하지 않아 충돌 비용이 없습니다.
- 작업을 설명하는 내용보다 먼저 체크포인트 작성 — 사이드카가 멈춘 정확한 지점부터 재개됩니다.
- 각 벡터 스토어 쓰기를 서브프로세스에서 처리 — 한 부분이 하나의 대화를 오염시키지만, 전체 실행은 그렇지 않습니다.
- 청크별 로깅(Per-chunk logging) — '조용한' 프로세스를 종료시키는 워치독이 작동하는 프로세스도 종료시킬 수 있습니다. 따라서 로그는 진실을 말해야 합니다.
- 로깅 속도에 맞춰 보정된 만료 시간(staleness timeout)을 가진 워치독 — 알려진 하나의 결합 요소이며, 문서화되었습니다.
중요하지 않았던 것들
임베딩 모델, 벡터 DB 선택, 프레임워크. 모두 교체 가능합니다. 실질적인 제품은 복원력 아키텍처입니다.
스택(The stack)
완전히 로컬 환경: 8GB MacBook Air에서 Ollama + nomic-embed-text + ChromaDB를 사용하며, 클라우드도 API 키도 계정도 없습니다. 비행기 모드에서도 안전합니다.
이 도구 세트는 AGPL 라이선스로 공개된 세 가지 도구로 구성되어 있습니다: Scribe (수집 엔진 + 사이드카 체크포인트), Warden (워치독), Hand (서브프로세스 격리 쓰기)
실패 이야기와 증거 자료
3일간의 부분이 로깅 오류가 아니라 시스템 오류로 진단된 밤, 그리고 제가 재시작 횟수를 완료 횟수로 세는 대신 수정해야 했던 기록을 포함한 전체 설계 근거는 다음에서 공개되었습니다: The Cache Is Not the Corpus
자신의 오류를 숨기는 기록은 문서화가 아니라 홍보입니다.
다음 시리즈에서는, 감시견(watchdog) 대 하트비트(heartbeat) 디자인이 운영자들로부터 살아남는 AI 시스템을 구축하는 데 무엇을 가르쳐 주는지 다룹니다. 관심 있으시면 팔로우해주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기