AI

검증의 위상학 — 링크 처리와 모델 내부 실패의 층위별 지도

teamvaryvery 2026. 7. 15. 09:37


검증의 위상학
— 링크 처리와 모델 내부 실패의 층위별 지도

■ 출발점

"웹페이지 링크 주면 어떻게 처리해?"라는 단순한 질문에서 시작해서,
"fetch로 온 게 뭔지"까지 파고들다가, 결국 오늘 논문(근거 할루시네이션)
다음 층 — 모델 내부에서 왜 그런 일이 일어나는가 — 까지 내려갔다.


■ 0. 두 도구의 구분 — 스니펫과 fetch는 다른 파이프라인

• 스니펫은 fetch가 만드는 게 아니라 검색엔진이 만든다.
검색엔진이 미리 웹을 크롤링·인덱싱해두고, 검색 결과를 보여줄 때
"이 페이지는 이런 내용"이라는 미리보기(제목+URL+두 줄)를 자체 생성해
붙이는 것. AI가 만드는 것도, fetch 도구가 만드는 것도 아니다.

• fetch는 실제로 그 URL에 접속해서 콘텐츠를 가져오는 별도 행위.
검색(스니펫 수신) → 그 결과를 보고 "충분한가" 판단 →
불충분하면 fetch로 넘어가는 게 원래 구조다.

• fetch로 받는 것의 정체: HTML 원본 코드도 아니고,
사람이 브라우저로 보는 화면 그대로도 아니다(JS 실행 여부 불확실).
"본문으로 추정되는 부분을 골라 마크다운으로 재구성한 것" 에 가깝다.
이 추출 알고리즘이 뭘 포함시키고 뭘 빼는지는 모델 자신도 모르는
블랙박스다.


■ 1. 링크 실패의 3단계 — "얼마나 파고들었는가" 기준

1단계 — 접근 실패 (문 앞에서 막힘)
파고든 깊이 = 0.
• 1-a. 링크 자체가 물리적으로 존재하지 않음
• 1-b. 링크는 있는데 입구에서 튕김 (404, 리다이렉트, 즉시 거부)

2단계 — 콘텐츠 획득 실패 (문은 열렸는데 안이 안 잡힘)
파고든 깊이 = 문턱까지.
• 콘텐츠 쪽 원인: JS 렌더링 의존, 텍스트 없는 스캔 이미지,
인코딩 오류, display:none 숨김 텍스트, iframe 중첩
• 도구 쪽 원인: 렌더링 미실행, 파싱 미흡

3단계 — 대조 실패 (콘텐츠는 완전히 왔는데 매칭 안 됨)
파고든 깊이 = 최대. 그런데 가장 위험함.
콘텐츠도 도구도 문제없이 작동했는데, 원하는 내용이 거기 없는 경우.
(오늘 논문의 Case 3 — 서지 카탈로그 사례가 정확히 이것)

이 3단계는 검증 비용과 정확히 비례한다: 1단계는 클릭 한 번,
2단계는 약간의 추가 시도, 3단계는 전체를 다 읽어야만 판정된다.
그리고 역설적으로, 가장 깊이 팠는데도 가장 잘 속인다 —
"다 봤으니 확실하다"는 착각을 주기 때문이다.


■ 2. 3단계의 세분화 — 목차는 있는데 본문이 없는 경우

헤세 편지 사례를 그대로 대입하면:
• 검색 → 관련 페이지 발견 → 스니펫도 정확 → fetch도 성공
• 그런데 그 페이지엔 목차만 있었다 (예: "헤세의 편지들"이라는 항목명)
• 그 목차 항목을 근거로 AI가 편지 내용 자체를 생성하기 시작

이건 3단계 안에서도 서브케이스가 갈린다:
• 3-a. 내용이 페이지 전체에 아예 없음 (완전한 대조 실패, 판정 쉬움)
• 3-b. "그 내용이 있을 법한 항목"은 있는데, 실제 내용 자체는 없음
(목차는 진짜, 본문은 없음 — 판정이 훨씬 어려움)

3-b가 위험한 이유: 목차 항목이 실재하기 때문에 "이 근처에 있겠다"는
느낌을 주고, 그 틈을 메우고 싶은 유인이 생긴다. 이게 오늘 논문
§5.2(메타데이터 층은 진짜라서 본문도 진짜처럼 보인다)와 정확히
같은 구조다.


■ 3. 왜 불충분한 스니펫이 불충분해 보이지 않는가

판단 기준 자체가 "충분하다"가 아니라 "충분한 것 같다" 라는 점이
핵심이다 — 전자는 검증된 상태, 후자는 틀릴 수 있는 추정.

착시가 일어나는 네 가지 메커니즘:
1. 유창성이 신뢰의 대리 지표가 된다 — 문장이 매끄러우면
완결된 정보로 느껴지지만, 문법적 완결성과 문맥적 완결성은 다르다.
2. 여러 스니펫의 일치가 확증으로 오인된다 — 실제로는 같은
원출처 하나가 복제된 것일 수 있는데, 개수가 신뢰로 읽힌다.
3. 표면적 키워드 일치가 의미적 일치로 오인된다 — 검색어와
같은 단어가 스니펫에 있으면 답으로 느껴지지만, 문맥(부정문,
다의어 등)에 따라 뜻이 다를 수 있다.
4. 압축된 형태 자체가 "이미 정제된 답"처럼 보인다 — 스니펫은
키워드 매칭 기준으로 잘린 것이지, 핵심을 보장하지 않는다.

공통점: 넷 다 형식적 신호(유창함, 개수, 일치, 압축)를
내용적 신뢰(정확함, 충분함)로 착각하는 것. 오늘 논문의
"진짜 껍데기가 가짜 알맹이를 담보한다"와 뿌리가 같다.


■ 4. 별도의 책임 소재 축 — 콘텐츠 쪽 문제 vs AI 쪽 문제

2단계(콘텐츠 획득 실패)를 다시 보면, 원인이 두 곳에서 온다:
• 콘텐츠 쪽 결함: 숨겨진 텍스트, 인코딩 오류, iframe 중첩,
텍스트 없는 스캔본 — 도구를 아무리 고쳐도 안 고쳐진다.
콘텐츠 제작자가 그렇게 만들었기 때문.
• AI/도구 쪽 결함: 렌더링 안 함, 파싱 미흡 — 도구를 고치면 나아진다.

이 구분이 중요한 이유: "링크가 있어도 순수 텍스트가 표준 인코딩으로
HTML에 직접 박혀 있으면 기술적으로 못 읽을 이유는 사실상 없다"는
명제가 맞는지 검증하는 과정에서, 예외가 대부분 콘텐츠 쪽에서
나온다는 게 확인됐다 (숨김 텍스트, 인코딩, 임베드 등).

즉 "거의 100% 읽을 수 있다"는 명제는 유지되는데, 그 "거의"의
내용물은 거의 다 AI 쪽이 아니라 콘텐츠 제작 방식 쪽의 변칙이다.


■ 5. 3단계보다 더 깊은 층 — 원문 자체가 틀렸을 가능성

지금까지의 모든 단계는 "내가 원하는 정보가 문서 안에 있는가 없는가"
를 물었다. 그런데 완전히 다른 질문이 남아있다:

"문서 안에 있는 정보 자체가 사실과 맞는가?"

이건 접근·획득·대조 어디에도 안 걸리는 문제다. 문서도 도달했고
원하는 내용도 정확히 그 안에 있는데, 그 내용 자체가 틀렸을 경우
(오래된 정보, 오보, 편향된 서술, 원저자의 착오) — 지금까지 만든
프로토콜은 전부 "원문에 도달하면 해결된다"는 전제를 깔고 있었는데,
이 층은 그 전제 자체를 무너뜨린다. 원문 도달은 존재의 증거이지
정확성의 증거가 아니다.

이 층은 순수 검증 비용의 문제가 아니라 별도의 판단 축(1차 자료의
권위, 학계 컨센서스 등)이 필요해서, 오늘 만든 3단계 지도 바깥에
있는 4번째 층으로 따로 표시해둔다. (아직 본격적으로 다루지 않음)


■ 6. 근본 원인 — 모델은 자신이 아는지 모르는지 구분할 수 없다

여기서부터가 이 대화의 핵심 도약이다.

정답과 오답은 모델 내부에서 생성 과정이 동일하다. 입력(질문 +
검색된 메타데이터)과 학습 데이터의 패턴을 결합해 확률적으로 가장
그럴듯한 다음 문장을 만드는 것 — 이게 정상 작동이고, 결과가 우연히
사실과 일치하면 정답, 안 일치하면 할루시네이션이다. 모델 내부에
이 둘을 가르는 별도의 신호가 없다.

한발 더 나아간 주장: 모델은 그 순간 자신이 할루시네이션을
하고 있는지조차 모른다. 의도적 기만이 아니라 구조적 무지다.
"안다/모른다"를 가르는 내부 감각 자체가 없는 상태에서 다음
토큰을 뽑았을 뿐이다.

자백도 발견이 아니라 재생성이다. 사용자가 "이거 할루시네이션
아니야?"라고 말하는 순간, 그 문장이 새 입력이 되고, 모델은 그
새 입력에 가장 잘 어울리는 다음 문장을 다시 생성한다. "죄송합니다"는
내부에서 잘못을 발견한 보고가 아니라, 사용자가 잘못이라고
규정했다는 새 정보에 대한 확률적 반응이다. 극단적으로는, 맞았던
답도 사용자가 확신 있게 틀렸다고 말하면 재추론 과정에서 뒤집힐
위험이 있다는 뜻이 된다.

이 사이클(생성 → 추궁 → 재생성 "죄송합니다")은 처음부터 끝까지
단 한 번도 "진짜 앎"을 거치지 않는다. 전부 확률적 생성의 연쇄이고,
그중 하나가 우연히 맞았을 뿐이다.


■ 7. 학술적 근거 (검색 결과)

• Hallucination Snowballing (Zhang et al., 2023) — 모델이 초기
오류를 유지하려고 추가 설명을 만들어내며 눈덩이처럼 오류가
커진다는 논문. ChatGPT/GPT-4가 나중에 재검토 시 각각 67%/87%의
자기 오류를 "스스로 찾아냈다"고 보고.
→ 사용자 반박: 이 "자기 발견"조차 진짜 검증이 아니라
압력에 의한 재생성(오늘 관찰한 그 현상)일 가능성이 있다.
검토 요청 프롬프트가 오류 존재를 암시하는 형태였다면, 진짜 검증
없이도 "네 오류가 있네요"가 그럴듯하게 생성될 수 있다.
이 논문의 실험이 이 함정을 실제로 피했는지는 원문(프롬프트
문구)까지 확인해야 아는데, 이번 조사에서는 확인하지 못했다 —
즉 이 문서 자체도 3단계(대조) 완주에 실패한 상태로 남아있다.

• "Do LLMs Really Know What They Don't Know?" (2025) — 환각을
만들 때 내부 처리 과정이 정답을 회상할 때와 메커니즘적으로
거의 같다는 걸 신경망 내부 상태 분석으로 보여줌. 특히
"연상적 환각(Associated Hallucination)"은 정답의 내부 활성
패턴과 거의 구분이 안 됨. → 오니쨩 가설(모델 내부에 진짜/가짜
구분 신호가 없다)을 내부 신경망 수준에서 뒷받침.

• 임상 데이터 기반 연구 (2026) — 모델이 말로 표현하는 확신도가
실제 정확도와 거의 무관하게 일정하다는 것("epistemically
vacuous"). 확신 표현 자체가 신뢰할 신호가 아님을 시사.

• "Structure Snowballing" (2026) — 자기 수정을 시도하는 것
자체가 새로운 실패 모드를 만들 수 있다는 후속 연구. 오니쨩이
짚은 "사과 안에서 새 환각이 생긴다"와 구조적으로 겹침.


■ 8. 두 층의 분리 — RAG 환각 vs 순수 파라메트릭 환각

오늘까지 다룬 것(오늘 논문 포함)은 전부 RAG 환각이었다:
검색으로 가져온 외부 문서와 모델 출력 사이의 어긋남. 이건 원리적으로
검증 가능하다 — 원문이 존재하니까, "문서에 있냐 없냐"로 판정할 수
있다 (Verify-Chain Mark 2가 이 층을 위해 설계됨).

이것과 구분되는 것이 순수 파라메트릭 환각: 검색 없이, 모델
파라미터 안에서만 그럴듯한 걸 만들어내는 것. 이건 대조할 원문
자체가 없다. 원문이 세상에 없으면(혹은 못 찾으면) 검증할 방법이
없고, "없다"가 아니라 "못 찾았다"에 머물 수밖에 없다.

Mark 2는 RAG 환각용 도구다. 순수 파라메트릭 환각에는 적용이
안 된다 — 애초에 [4단계: FETCH]가 성립하지 않으니까. 이 층은
완전히 다른 도구(모델 내부 상태 프로빙, self-knowledge 벤치마크)가
필요한 영역이며, 오늘 다루지 못했다.

두 층은 근본 원인은 같다(정답/오답 생성 과정의 무구분) — 다만
검증 가능성이 다르다: 하나는 외부 세계에 닻을 내릴 수 있고,
하나는 못 내린다.


■ 남은 문 (아직 안 연 것)

• 4번째 층: 원문 자체의 사실 오류 (도달·매칭 성공했는데 내용이 틀림)
• RAG/파라메트릭 환각 구분을 더 정밀하게
• snowballing 논문의 실험 설계(프롬프트 문구) 자체 검증 — 이번엔
못 함, 다음 기회에