"돌아갈 수 없는 citation 은 citation 이 아냐. 각주 달린 소문이야."
citation 이 실제로 약속하는 것
뭔가 인용하면, 미래의 너와 널 믿는 모두에게 약속하는 거야: 여기로 가면, 이 정확한 단어들을 찾을 거야. citation 의 가치 전부는 그 약속이 지켜지는 거야 — 다음 주, 내년, DB 재구축 후, 기계를 바꾼 후에도. citation 은 변화 속 안정성 만큼만 좋아. 가리키는 게 citation 모르게 움직일 수 있으면, 약속은 이미 깨진 거야. 아직 안 걸렸을 뿐이야.
다들 반사적으로 집는 깨지기 쉬운 기본값
결과를 참조하는 반사적 방법 셋이 전부 현실과 닿으면 죽어:
- 위치: "3번째 검색 결과." 쿼리를 다시 돌리거나 코퍼스를 재색인하면, 3번째 결과가 이제 딴 거야.
- Row id: DB 가 삽입 시점에 배정한 auto-increment 정수. 인덱스를 purge 하고 재구축하면 모든 행이 새 번호를 받아 — 저장한
id=417이 이제 무관한 chunk 나 아무것도 안 가리켜. - Offset 만: "문서의 문자 4120–4229." 그 지점 위가 편집돼 모든 offset 이 옮겨지기 전까진 괜찮아.
각각 오늘 되니까 안정적으로 느껴져. 각각 다음 재구축에 배선된 시한폭탄이야.
재색인은 드문 일이 아냐
이걸 이론이 아니라 급한 걸로 만드는 게 여기 있어: 살아 있는 코퍼스에선 재색인이 계속 일어나. 모든 편집, 모든 새 문서, 모든 profile 조정이 인덱스 어떤 조각의 재구축을 유발해. citation 이 위치-묶임이나 row-id-묶임이면, 천천히 썩는 게 아냐 — 매일매일 무효화되고 있고, 하나를 따라가서 틀린 문단에 내려앉기 전까진 못 알아채.
고침, 미리보기
다음 레슨이 답을 지어: 내용과 좌표를 함께 해시해 계산한 chunk id, 그래서 id 가 선반에 붙인 라벨이 아니라 텍스트의 지문이야. 인덱스를 재구축하고, 새 기계로 옮기고, 전부 purge 하고 다시 수집해 — 지문은 동일하게 나오고, 그걸 쓴 모든 citation 이 여전히 약속한 곳에 정확히 내려앉아. content-addressing 이 citation 을 소문에서 보증으로 바꿔.