본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

raw 는 불변이야

~11 min · evidence, immutability, audit, append-only

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"기계가 돌려준 건 사실이야. 그게 진실인지는 별개 질문이고."

한 단어를 쓰고 있는 두 가지

음성 model 이 영상을 전사하면 텍스트를 돌려줘. 그 텍스트를 '그 transcript' 라고 부르고 넘어가기가 너무 쉬워. 위험하게 쉽지. 근데 그 텍스트는 사실 두 가지가 붙어 있는 거고, Recall 의 데이터 모델 전체가 그 둘을 떼어내는 데 달려 있어.

  • model 이 돌려준 것 — 단단한 사실. 이 정확한 model 이, 이 정확한 설정으로, 이 정확한 오디오 바이트를 받아 이 정확한 출력을 냈어. 그건 절대 안 바뀌어. 일어난 일이야.
  • 실제로 진실인 것 — 판단. 단어를 맞게 들었나? 침묵에서 hallucinate 했나? 한국어랑 영어를 헷갈렸나? 그건 틀릴 수 있고, 고치고 싶을 거야.

이 둘을 붙여놓으면 고전적인 버그가 나와. transcript 를 편집해서 '고쳤다' 고 하는 순간, model 이 실제로 뭐라고 했는지의 기록이 날아가거든. Recall 은 그걸 거부해. raw 출력은 불변 증거 야. 받아들인 transcription run 은 갱신도 삭제도 못 해. 교정은 별도 계층에서 일어나고(다음 레슨들). 증거는 받아들여지는 순간 얼어.

raw 출력을 얼리는 게 왜 중요해

불변성은 깔끔해 보이려고 하는 게 아냐. 구체적인 힘 세 가지를 사주거든.

  • 감사(Audit). 반년 뒤에 '이 요약이 실제로 전사된 내용을 충실히 옮긴 게 맞나?' 를 물어볼 수 있어. 단, 원래 전사가 손대지 않은 채로 남아 있어야만. 덮어쓰면 그 질문 자체가 답이 없어져.
  • 재파생(Re-derivation). 하류 산물(release, 요약, index) 은 전부 증거에서 파생돼. projection 단계에 버그가 있었으면 손 안 댄 증거에다 다시 돌리면 그만이야. 증거 자체가 바뀔 수 있으면 다시 파생할 바닥이 없고.
  • drift 감지. 새 model 버전이 다른 텍스트를 돌려준다고? run 을 둘 다 남겨두면 차이를 잴 수 있어. 옛것을 덮어쓰면 drift 가 아예 안 보이고.

메모장 말고 실험실처럼 생각해

과학 실험실은 정제된 데이터셋을 발표한 뒤에도 raw 기기 측정값을 영원히 보관해. 정제된 데이터는 주장이고 raw 측정값은 그 뒤를 받치는 증거니까. 메모장은 반대로 그냥 지우고 다시 쓰지. 대부분의 소프트웨어는 데이터를 메모장처럼 다뤄: 제자리 편집, 최신만 보관. Recall 은 실험실처럼 다뤄. raw 측정값은 영구적이고, 그 위에 얹은 다듬은 버전은 전부 날짜가 붙고 추적할 수 있는 주장이라 언제든 원본과 대조할 수 있어. raw 출력은 초안이 아니라 증거라는 이 한 번의 뒤집기가 이 퀘스트에서 가장 옮겨 쓰기 좋은 아이디어야.

Code

run 테이블은 append-only 증거 (모양 스케치)·sql
-- 받아들인 transcription run: 도착하는 순간 얼린다.
CREATE TABLE transcript_runs (
  run_id           TEXT PRIMARY KEY,
  video_id         TEXT NOT NULL,
  source_sha256    TEXT NOT NULL,   -- 정확한 source 바이트
  asr_config_sha   TEXT NOT NULL,   -- 정확한 model + 설정
  proxy_config_sha TEXT NOT NULL,   -- 정확한 오디오 준비
  raw_response     TEXT NOT NULL,   -- model 의 정확한 출력
  accepted_at      TEXT NOT NULL,
  -- (video + source + asr config + proxy config) 당 run 하나
  UNIQUE (video_id, source_sha256, asr_config_sha, proxy_config_sha)
);

-- 애플리케이션 코드에 UPDATE, DELETE 경로 없음.
-- 교정은 별도 releases 테이블에 산다 (다음 레슨들).

External links

Exercise

네가 아는 시스템에서 '데이터' 가 제자리에서 편집되는 데를 찾아봐. 덮어써지는 status, 실수를 고치려고 갱신되는 record, 항상 '최신' 만 쥐고 있는 field 같은 거. 그리고 물어봐. 그 값이 원래 뭐였는지 나중에 증명할 수 있어? 못 하면, 원본은 얼린 증거로 두고 교정은 그 위에 날짜가 붙은 새 계층으로 올리게 다시 설계해. 그렇게 하면 어떤 감사 질문, 어떤 drift 질문이 새로 열리는지도 적어보고.
Hint
신호는 뒤에 이력 없이 '현재 값' 만 뜻하는 컬럼이야. 그걸 둘로 쪼개. 처음 관찰되거나 반환된 것의 불변 기록, 그리고 교정용 버전 계층. 그럼 '원래 뭐라고 했어?' 와 '지금은 뭘 믿어?' 가 답할 수 있는 두 질문이 돼. 하나로 뭉개져 사라지는 대신.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.