작업 의뢰 가능 · AVAILABLE FOR WORK수원, KR/EST. 2025/--:--:-- KST
JADAN.

에이전트 워크플로우

주장과 출처를 분리하라: 발행 전에 헛소리를 걸러내는 장부

AI 조사 결과의 주장을 출처에 강제로 묶는 주장 장부(claim ledger)와, 발행 전 4단계 관문으로 근거 없는 주장을 걸러내는 할루시네이션 감사 절차를 정리한 노트.

Published
2026-06-11
Reading
1

앞 글에서 출처 기반 2단계 프로토콜의 큰 그림을 그렸다. 자료를 모으는 단계(Phase 1)와 그것을 글감으로 다듬는 단계(Phase 2)를 분리하고, 두 단계 모두에서 출처를 놓지 않는다는 것. 그리고 Phase 2의 핵심 장치인 주장 장부(claim ledger)는 "다음 글에서 구조를 따로 판다"고 미뤄 두었다. 이 글이 그 약속을 받는다.

여기서 다루는 질문은 하나다. 조사에서 뽑아낸 주장을 어떻게 기록해야, 나중에 어느 문장이 검증된 사실이고 어느 문장이 모델이 지어낸 것인지 가려낼 수 있는가. 매끄러운 보고서를 빨리 뽑는 일이 아니라, 나가는 문장마다 출처가 따라붙게 만드는 일이다.

문제는 모델이 주장과 출처를 한데 녹이려 한다는 것이다

조사 결과가 오염되는 근본 자리는 앞 글에서 짚었다 — 조사 과정에 출처를 따로 붙잡아 두는 구조가 없다는 것. 그 구조 없음이 가장 또렷하게 드러나는 지점이 바로 주장과 출처가 섞이는 순간이다.

모델은 자료를 컨텍스트 창(한 번에 들고 있는 작업 기억) 안에서 한데 녹이려는 습성이 있다. 여러 출처에서 읽은 내용이 모델의 머릿속에서 하나의 "이해"로 합쳐지고, 그 이해가 매끄러운 문장으로 흘러나온다. 문제는 이 융합이 일어나는 순간 "이 문장이 어느 출처에서 왔는가"라는 연결 고리가 끊긴다는 점이다.

연결이 끊기면 사후 검증이 불가능해진다. 보고서에 100개의 문장이 있는데 그중 어느 것이 출처에 실제로 적혀 있던 내용이고, 어느 것이 모델이 출처들을 종합하다 매끄럽게 채워 넣은 추론인지 구분할 수가 없다. 전부 같은 톤, 같은 확신으로 쓰여 있기 때문이다. 90%가 맞고 10%가 헛소리여도 그 10%를 골라낼 손잡이가 없다.

그래서 필요한 건 모델의 융합 습성을 거스르는 구조다. 주장이 출처에서 떨어져 나오지 못하게, 둘을 강제로 묶어 두는 장치. 그게 주장 장부다.

주장 장부는 주장 하나하나를 그 출처에 강제로 묶는다

주장 장부(claim ledger)는 조사에서 뽑아낸 주장 하나하나를 그 출처에 묶어 기록하는 구조다. "장부"라는 이름이 핵심을 담고 있다 — 회계 장부가 모든 돈의 출입을 한 줄씩 끊어 기록하듯, 주장 장부는 모든 주장을 한 줄씩 끊어 그 근거와 함께 적는다.

핵심은 묶음을 강제한다는 데 있다. 모델에게 "출처를 잘 기억해 둬"라고 부탁하는 게 아니다. 장부라는 형식 자체가 주장과 출처를 떼어 놓을 수 없게 만든다. 출처 없는 주장은 장부에 들어갈 자리가 없다. 빈 출처 칸은 그 자체로 "이 주장은 근거가 비어 있다"는 신호가 된다.

이 구조가 주는 것은 추적 가능성이다. 나중에 어떤 문장을 보고 "이거 근거가 뭐였지" 하고 물으면, 장부를 거슬러 올라가 그 주장이 묶인 출처로 곧장 갈 수 있다. 출처가 분리돼 기록돼 있지 않으면 이 추적 자체가 불가능하다. 그리고 추적이 불가능하면 다음 단계인 감사도 불가능하다. 장부는 감사의 전제 조건인 셈이다.

또 하나 중요한 건, 장부가 주장을 개별 단위로 쪼갠다는 점이다. 보고서 한 덩어리를 통째로 검증하려 들면 무엇부터 봐야 할지 막막하지만, 주장이 한 줄씩 끊겨 있으면 위험해 보이는 줄만 골라 집중해서 들여다볼 수 있다. 검증 비용을 위험한 주장에만 몰아줄 수 있게 된다.

장부에는 주장과 함께 출처·근거 역할·신뢰도 같은 꼬리표가 따라붙는다

장부에 들어가는 건 주장 문장 하나만이 아니다. 그 주장을 평가하는 데 필요한 꼬리표(라벨)가 함께 붙는다.

앞 단계인 분류(classification)에서 자료마다 이미 몇 가지 꼬리표를 달아 둔다 — 주제(topic), 신뢰도(trust), 근거 역할(evidence role), 유용성(usefulness)이다. 장부는 이 꼬리표들을 이어받아 주장 단위로 끌어온다. 각 항목이 뜻하는 바는 이렇다.

  • 출처 — 이 주장이 어디서 왔는가. 장부의 뼈대다.
  • 근거 역할(evidence role) — 이 출처가 주장에 대해 어떤 역할을 하는가. 직접 뒷받침하는 1차 근거인지, 곁가지 참고인지, 아니면 반증인지. 같은 출처라도 어떤 주장에는 강한 근거이고 어떤 주장에는 약한 참고에 그친다.
  • 신뢰도(trust) — 그 출처 자체를 얼마나 믿을 수 있는가. 공식 문서와 베껴 쓴 요약 페이지는 같은 무게가 아니다.
  • 검증 상태 — 이 주장을 출처에 비춰 확인했는가, 아직 안 했는가, 확인했더니 출처가 뒷받침하지 않았는가.

이 꼬리표들이 붙으면 장부는 단순한 "주장-출처 목록"을 넘어, 각 주장이 얼마나 단단한지를 한눈에 가늠할 수 있는 표가 된다. 신뢰도 낮은 출처에 약한 근거 역할로 매달려 있고 아직 검증도 안 된 주장이라면, 그건 감사에서 가장 먼저 의심해야 할 줄이다.

여기서 한 가지 주의할 게 있다. 장부의 꼬리표는 위에서 든 것처럼 "출처·근거 역할·신뢰도·검증 상태 같은" 것들이지, 정해진 수십 개의 필드를 빠짐없이 채워야 하는 양식이 아니다. 핵심은 필드의 가짓수가 아니라, 주장이 출처에서 떨어져 나오지 못하게 묶여 있고 그 주장이 얼마나 믿을 만한지 판단할 단서가 함께 붙어 있다는 데 있다.

발행은 4단계 관문을 통과해야 한다

장부 하나만으로 헛소리가 걸러지는 건 아니다. 장부는 검증을 가능하게 하는 토대일 뿐이고, 실제로 무언가가 결과물로 나가려면 정해진 관문을 순서대로 통과해야 한다.

공개 글이나 의사결정에 영향을 줄 수 있는 주장은 반드시 다음 네 단계를 거친다.

  1. 편집 큐레이션(editorial curation) — 모인 원자료 더미 중에서 실제로 쓸 만한 것을 추린다. 모았다고 다 쓰는 게 아니다.
  2. 주장 장부(claim ledger) — 추려낸 것에서 주장을 뽑아 출처에 묶어 기록한다. 이 글에서 다룬 그 구조다.
  3. 할루시네이션 감사(hallucination audit) — 장부를 훑어 근거 없이 떠 있는 주장을 골라낸다.
  4. 토픽 팩 / 아티클 브리프(topic pack / article brief) — 감사를 통과한 것만 모아 글감 묶음으로 정리한다.

이 순서가 중요하다. 큐레이션 없이 장부를 만들면 쓸모없는 자료까지 다 장부에 올라와 감사가 무거워진다. 장부 없이 감사하려 들면 무엇을 어느 출처에 비춰 봐야 할지 알 수 없다. 각 단계는 앞 단계의 산출물 위에서만 성립한다.

그리고 이 관문은 통과하지 못한 문장을 결과물 밖에 가둬 둔다. 감사를 통과 못 한 주장은 사라지는 게 아니라 재료 더미에 그대로 남는다. 다만 토픽 팩이나 브리프, 즉 실제 글이나 의사결정으로 가는 출구를 통과하지 못할 뿐이다. 검증 안 된 인상이 매끄러운 문장으로 위장해 결과물에 새어 드는 길목을 이 관문이 막는다.

할루시네이션 감사는 위험한 주장만 골라 집중 검증한다

할루시네이션 감사(hallucination audit)는 장부를 훑으며 두 종류의 주장을 골라내는 작업이다. 하나는 근거 없이 떠 있는 주장 — 출처 칸이 비어 있거나 검증 상태가 미확인인 줄. 다른 하나는 출처가 뒷받침하지 않는 주장 — 출처는 달려 있지만 정작 그 출처를 열어 보면 해당 내용이 없는 줄. 후자가 특히 위험하다. 링크가 달려 있어 검증된 것처럼 보이지만 실은 그렇지 않기 때문이다.

이 감사가 현실적으로 가능한 건 앞 단계에서 출처를 분리해 두었기 때문이다. 만약 주장과 출처가 한 덩어리로 녹아 있었다면, 감사관은 보고서 전체를 처음부터 다시 조사하는 수밖에 없다. 그건 사실상 조사를 두 번 하는 일이라 아무도 하지 않는다. 반면 장부가 있으면, 신뢰도 낮고 검증 안 된 줄만 골라 그 줄에 묶인 출처만 확인하면 된다. 검증 비용을 위험한 곳에만 집중할 수 있다 — 이게 출처 분리가 주는 실질적 보상이다.

여기서 감사관이 따르는 단 하나의 규칙이 헛소리를 막는 마지막 방어선이다. 근거가 없으면 모델 기억으로 메우지 말고 UNKNOWN으로 둔다. 모델은 "모른다"라고 말하는 데 약해서, 빈자리를 만나면 그럴듯한 문장으로 채우려 든다. 그 충동을 막는 게 UNKNOWN이다. 빈자리를 정직하게 빈자리로 남겨 두는 것 — UNKNOWN이라고 적힌 칸은 거짓이 아니라 정직한 신호다. 나중에 사람이 채우거나 추가 조사를 붙일 수 있는 표식으로 남는다. 반면 그럴듯하게 메워진 칸은 거짓인 줄도 모르고 통과한다.

검증 작업 자체도 흔적을 남긴다. 앞 글에서 짚었듯 모든 작업은 완료 표식(done 마커) 파일로 추적되는데, 검증과 감사 작업도 예외가 아니다. 그리고 실패한 검증도 실패로 기록한다. 출처 사이트가 접근을 막아 확인하지 못한 주장이 있으면, 그 작업은 status: failed로 표식에 남는다. 검증을 시도조차 안 한 것과, 시도했지만 막힌 것은 다르다. 어느 쪽이든 핵심은 같다 — 빈자리를 슬그머니 메우지 않고, 빈자리가 있다는 사실 자체를 남긴다.

정리 — 우선순위는 매끄러움이 아니라 추적 가능성이다

주장 장부는 화려한 장치가 아니다. 모델이 주장과 출처를 한데 녹이려는 습성을 거슬러, 둘을 한 줄씩 끊어 강제로 묶어 두는 단순한 구조일 뿐이다. 하지만 그 단순한 묶음이 사후 검증을 가능하게 하고, 검증이 가능해야 감사가 가능하며, 감사를 통과한 것만 결과물로 나갈 수 있다. 장부 → 감사 → 발행이라는 사슬은 첫 고리인 출처 분리 위에서만 성립한다.

그리고 이 모든 절차가 향하는 건 하나의 우선순위 전환이다. 매끄러운 초안을 빨리 뽑는 것보다, 나가는 문장마다 출처가 따라붙고 그게 감사를 통과했다는 게 먼저다. 빈자리는 UNKNOWN으로 정직하게 남기고, 실패한 검증도 실패로 기록한다. 결과물의 표면이 조금 덜 매끄럽더라도, 어느 문장이든 거슬러 올라가 근거를 댈 수 있는 쪽이 낫다. 신뢰는 매끄러움이 아니라 추적 가능성에서 나오기 때문이다.

이 글에서 다룬 주장 장부와 할루시네이션 감사를 포함한 파일 규칙들은 한곳에 정리해 공개 저장소로 묶어 두었다.

저장소: github.com/aminpiano/agentic-workflows

문의

프로젝트 문의.

내용을 남겨 주시면 검토 후 연락드립니다. 이메일이나 전화로 직접 연락 주셔도 됩니다.