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

인용 구절은 읽은 문장을 붙잡아 둬

~12 min · passages, durability, pinning, content-addressing-limit

Level 0꺼진 심지
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"문서에서 한 바이트만 바뀌어도 문서 해시와 그 안의 모든 chunk id가 바뀌어. 내용 기반 주소는 재구축은 견디지만 편집은 견디지 못해."

트랙 4의 보장에는 정확한 경계가 있어

같은 원본을 같은 profile로 다시 색인하면 chunk id도 같다는 사실은 그대로야. 인덱스를 지우거나 다른 기계에서 다시 만들어도 인용은 그대로 유지돼. 하지만 chunk id에는 doc_sha256이 들어가. 문서 첫 문단의 오타 하나를 고쳐도 문서 해시가 바뀌고, 그 문서에서 나온 모든 chunk id가 새로 계산돼. 오류가 아니라 내용이 달라졌다는 정직한 반응이야.

재구축 안정성과 편집 안정성은 다른 약속이야

  • 재구축 안정성: 같은 내용을 다시 수집하면 같은 id를 얻어. 내용 기반 주소가 이 보장을 해.
  • 편집 안정성: 소스 문서가 달라져도 과거의 참조가 남아. 내용 기반 주소만으로는 이 보장을 할 수 없어.

검색 결과라면 문서를 다시 색인하고 새 id를 쓰면 돼. 하지만 2년 전 어떤 claim을 뒷받침한 증거가 나중의 오타 수정 때문에 사라져서는 안 돼.

증거로 삼는 순간 정확한 텍스트를 복사해

그래서 인용 구절(passage)을 만들 때 chunk id만 저장하지 않아. 그 순간 읽은 정확한 텍스트를 passage 레코드 안에 복사하고, 코퍼스와 문서 경로, 문서 해시, 문자 위치, profile 같은 출처 정보도 함께 남겨. 복사된 텍스트는 과거에 무엇을 근거로 삼았는지 영구히 알려주고, 출처 정보는 원문을 다시 찾아 현재 상태를 확인하게 해.

오래 남겨야 하는 증거라면 주소만 기록하지 말고 내용도 보존해. 가변 문서를 가리키는 포인터는 문서가 바뀌는 순간 낡을 수 있어. 포인터는 맥락을 다시 찾는 데 유용하지만 증거의 유일한 복사본이 되어서는 안 돼.

복사본과 출처는 서로 다른 질문에 답해

고정된 텍스트는 '그때 정확히 무엇을 인용했나?'에 답하고, 출처 정보는 '어디서 왔으며 지금도 거기에 있나?'에 답해. 뒤의 재검증 단계는 두 기록을 함께 사용해 인용을 유효(live), 위치 재고정(reanchored), 원문 이탈(drifted)로 분류할 거야. 하나만으로 다른 하나의 일을 대신할 수 없어. 증거의 내구성과 현재 원문에 대한 정직함을 동시에 얻으려면 둘 다 필요해.

Code

텍스트와 출처 정보를 함께 복사해야 증거가 고정돼·python
def pin_passage(chunk) -> Passage:
    """Mint a passage: COPY the exact text, and carry provenance alongside it."""
    return Passage(
        text=chunk.text,                    # <-- the copy. This is the durable part.
        corpus_id=chunk.corpus_id,          # provenance below: how to re-find it
        doc_relpath=chunk.doc_relpath,
        doc_sha256=chunk.doc_sha256,        # will go stale if the doc is ever edited
        char_start=chunk.char_start,
        char_end=chunk.char_end,
        chunk_id=chunk.id,                  # ditto — a pointer, not the evidence
        minted_at=now(),
    )

# Fix a typo in paragraph 1 of that document tomorrow:
#   -> doc_sha256 changes -> every chunk_id in the doc changes -> the pointer rots.
#   -> passage.text is untouched. The evidence survives. That's why we copied.

External links

Exercise

오늘 인용과 참조를 어떻게 저장하고 있는지 살펴봐. 북마크, 노트의 링크, 페이지 번호마다 원문이 내일 삭제되지 않고 내용만 바뀌어도 내가 읽었던 문장을 정확히 확인할 수 있는지 물어. 답이 아니요인 참조 하나를 골라 링크 옆에 당시의 정확한 문장을 복사해 둬. 그게 손으로 고정한 인용 구절이야.
Hint
느껴야 할 구분은 삭제 대 편집이야. 대부분 삭제('페이지가 사라지면?')를 대비하고 편집('페이지가 바뀌었는데 링크는 여전히 되고, 이제 다른 말을 하면?')을 잊어. 조용한 편집이 더 흔하고 더 위험한 경우인데 — 복사본만이 그걸 막아.

Progress

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

댓글 0

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

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