가이드

지식 베이스에서 AI 에이전트가 출처를 밝히게 하는 방법

AI 에이전트가 출처를 달게 하려면, 각 출처를 바뀌지 않는 id와 함께 문서의 frontmatter에 나열하고, 사실에 관한 모든 주장 뒤에 [^billing-export] 같은 각주를 요구하고, 두 번째 에이전트가 각 각주가 주장과 같은 말을 하는지 확인하게 하세요. 출처가 없으면 그 주장은 빼요. 그러면 종단간 암호화 지식 베이스인 Knowtarium이 마우스를 올린 인용마다 그 뒤의 출처를 보여 줘요.

Fadel Kaadan · 업데이트

출처 없는 주장이 AI 지식 베이스를 망가뜨리는 이유

에이전트는 유창하고 구체적이지만 틀린 문장을 쓸 수 있고, 그 문장은 출처에서 그대로 옮긴 문장과 똑같아 보여요. 일단 노트에 저장되면 둘을 구별할 방법이 없어요.

에이전트가 쓰는 지식 베이스에서는 그 한 문장이 제자리에 머물지 않아요. 다음 세션은 그 문장을 맥락으로 읽고 되풀이해요. 요약이 그 문장을 가져가요. 한 달 뒤에는 네 개의 노트에 등장하고, 이미 확정된 사실처럼 보여요. 누구도 일부러 지어내지 않았고, 누구도 어디서 왔는지 찾을 수 없어요.

인용은 이 문제를 가장 적은 비용으로 해결할 수 있는 순간에 해결해요. 에이전트가 주장을 쓸 때는 자신이 어떤 파일이나 페이지를 읽었는지 알고 있어요. 그걸 기록하는 데는 한 줄이면 충분해요. 나중에 되짚으려면 모든 출처를 다시 읽어야 해요. 그리고 모든 주장에 출처가 필요하다는 규칙은 에이전트가 쓰는 내용 자체를 바꿔요. 출처가 없으면 빈칸을 채우는 대신 출처가 없다고 말해야 하니까요.

이 가이드에서는 어떤 에이전트든 쓸 수 있는 일반 frontmatter로 인용을 직접 설정해요. 각 단계 뒤에는 같은 단계를 Knowtarium에서는 어떻게 하는지 짧게 설명해요. Knowtarium은 사람과 에이전트가 함께 쓰는 노트를 위해 저희가 만든 종단간 암호화 지식 베이스예요.

주장마다 인용할까, 문서마다 인용할까

출처는 두 가지 수준에서 요구할 수 있어요. 대부분의 지식 베이스에는 둘 다 필요해요.

수준방법쓰임새
문서마다frontmatter의 출처 목록요약, 개요, 회의 한 번이나 보고서 하나로 만든 노트
주장마다문장 뒤에 붙여 그 출처 중 하나를 가리키는 각주숫자, 날짜, 이름, 인용, 결정: 누군가 이를 근거로 행동할 수 있는 모든 것

좋은 기본값은 이래요. 모든 문서는 출처를 나열하고, 숫자, 날짜, 이름, 인용이 들어간 문장은 모두 그중 하나를 인용해요. 의견과 직접 한 추론에는 각주가 필요 없지만, 의견이라는 게 드러나게 써야 해요.

Knowtarium에서는

Knowtarium에서는 두 수준이 모두 보여요. 문서의 출처는 속성의 Details 아래에 작성자(그리고 검토가 켜진 폴더에서는 확인한 사람) 옆에 표시되고, 본문의 각 각주는 마우스를 올리면 출처를 보여 주는 인용이에요.

Knowtarium 노트에서 각주 1을 가리키면 출처가 열려요: plans-page, Public pricing page, URL, team:marketing, 그리고 마지막 업데이트 날짜 (새 탭에서 원래 크기로 열림)Knowtarium 노트에서 각주 1을 가리키면 출처가 열려요: plans-page, Public pricing page, URL, team:marketing, 그리고 마지막 업데이트 날짜 (새 탭에서 원래 크기로 열림)
데모 워크스페이스의 가격 노트에서 각주에 마우스를 올린 모습. 선택하면 원래 크기로 열려요.

OKF가 frontmatter에 출처를 기록하는 방법

인용 형식을 직접 만들 수도 있지만, 공개된 형식을 쓰면 모든 도구와 에이전트가 같은 방식으로 읽어요. Google Cloud가 공개한 개방형 사양인 Open Knowledge Format(OKF)은 출처 정보를 sources 필드에 기록하고, 각주로 주장과 연결해요.

metrics/churn.md
---
type: Metric
title: Churn
generated: { by: claude-code/2.1, at: 2026-09-26T08:10:00Z }
stale_after: 2026-12-31T00:00:00Z
sources:
- id: billing-export
resource: /references/billing-2026-09.csv
title: 결제 내보내기, 2026년 9월
author: process:billing-sync
last_modified: 2026-09-25T23:00:00Z
- id: pricing-decision
resource: /decisions/2026-07-01-annual-plans.md
title: 결제를 연간 플랜으로 전환
---
9월 월간 이탈률은 2.4%로 떨어졌어요.[^billing-export]
이 하락은 연간 플랜으로 전환한 뒤에 나타났어요.[^pricing-decision]
[^billing-export]: 결제 내보내기, 2026년 9월
[^pricing-decision]: 결제를 연간 플랜으로 전환

sources의 각 항목에는 resource가 필요해요. URL, 지식 베이스 안의 경로, 또는 references/ 폴더의 파일이에요. 나머지 필드는 선택 사항이에요.

  • id: 바뀌지 않는 키. 사양에 따르면 본문이 그 출처를 인용할 때는 반드시 있어야 해요.
  • title: 읽기 쉬운 레이블.
  • author: 출처를 만든 사람이나 주체. human:maya나 process:billing-sync 같은 행위자로 적어요.
  • last_modified: 출처 자체가 마지막으로 바뀐 시각.
  • usage_count: 같은 항목의 usage_window 필드에 적힌 기간 동안 출처가 쓰인 횟수.

각주 레이블이 연결 키예요. 사양은 이것이 “출처 2” 같은 순서가 아니라 id인 이유를 설명해요. 에이전트는 이런 문서를 끊임없이 다시 쓰고, 번호로 된 참조는 누군가 목록 순서를 바꾸는 순간 엉뚱한 출처를 가리켜요. 이름이 붙은 id는 그대로 남아요.

resource가 지식 베이스의 다른 문서를 가리키면, 그 링크가 곧 계보예요. 읽는 사람은 링크를 따라가 그 문서의 출처까지 확인할 수 있어요. OKF는 신뢰 점수가 아니라 이런 신호를 기록해요. 전체 규칙은 OKF 사양에서 읽어 보세요.

에이전트가 출처를 달게 만드는 규칙

에이전트는 세션을 시작할 때 읽는 지침 파일을 따라요. 대부분의 도구는 AGENTS.md, Claude Code는 CLAUDE.md예요. 여기에 출처 섹션을 추가하세요.

AGENTS.md (발췌)
## 출처
- 모든 숫자, 날짜, 이름, 인용, 결정에는 출처가 필요해요.
- 각 출처를 짧고 바뀌지 않는 `id`와 `resource`와 함께 `sources`에 추가하세요.
- 주장 바로 뒤에 각주로 출처를 다세요: [^the-id].
- 이번 세션에서 직접 연 출처만 인용하세요. URL이나 제목을 지어내지
마세요.
- 숫자는 출처에 나온 그대로 옮기세요. 반올림하지 마세요.
- 인용한 웹 페이지와 내보낸 파일의 사본을 references/에 저장하세요.
- 출처를 찾을 수 없으면 그 주장을 쓰지 마세요. 대신
"## 미해결 질문" 아래에 적고, 확인하려면 무엇이 필요한지 함께 적으세요.
- 문서가 인용하고 있는 출처의 `id`는 절대 바꾸지 마세요.

이 중 두 가지가 대부분의 일을 해요. “직접 연 출처만 인용하세요”는 에이전트가 어떤 페이지에 있었다고 기억하는 내용을 인용하지 못하게 막아요. “출처를 찾을 수 없으면 그 주장을 쓰지 마세요”는 추측을 노트가 아닌 다른 곳에 둘 자리를 줘요. 전체 템플릿은 지식 베이스를 위한 AGENTS.md 가이드에 있어요.

인용한 자료의 사본을 보관하세요. 웹 페이지는 바뀌고 내보낸 파일은 덮어써져요. references/에 저장한 사본이 있으면 내년에도 인용을 확인할 수 있어요.

두 번째 에이전트로 인용 검증하기

규칙은 잘못된 인용을 줄여 주지만 없애지는 못해요. 에이전트는 출처가 말하지 않은 주장에 실제 출처를 갖다 붙일 수 있어요. 그러니 인용은 따로, 두 단계로 확인하세요.

1. 기계적 확인

모든 각주는 sources의 id와 일치해야 하고, 모든 id는 어딘가에서 인용되어야 해요. 두 목록은 터미널에서 확인할 수 있어요.

terminal
# 본문에서 인용한 각주 레이블
# frontmatter에 선언된 id

2. 읽기 확인

그다음 다른 에이전트 세션이 각 주장을 출처와 대조해 읽게 하세요. 쓰기 세션의 맥락 없이 새로 시작해야, 처음 보는 사람처럼 문서를 읽어요. Codex가 Claude Code의 작업을 확인하는 것처럼 아예 다른 에이전트를 쓰면 더 좋아요.

확인 에이전트용 프롬프트
metrics/churn.md의 인용을 확인해 주세요. 문서는 수정하지 마세요.
1. 각주마다 같은 id를 가진 sources 항목을 찾아 주세요.
항목이 없는 각주와 아무도 인용하지 않는 항목을
보고해 주세요.
2. 각 resource를 열어 보세요. 존재하지 않는 것이 있으면
보고해 주세요.
3. 인용된 주장마다 그 주장을 뒷받침하는 출처의 구절을
인용하거나, 찾을 수 없다고 말해 주세요.
4. 숫자, 날짜, 이름이 있는데 아무것도 인용하지 않은
주장을 보고해 주세요.
모든 주장이 확인되면 현재 UTC 시각과 함께 `verified`에
자신을 추가해 주세요. 그렇지 않으면 문제를 나열하고
멈춰 주세요.

마지막 단계는 확인을 기록해요. OKF에서는 에이전트의 verified 항목이 문서를 machine-confirmed로 만들어요. 직접 읽고 자신의 human: 항목을 추가하면 human-reviewed가 돼요.

frontmatter
verified:
- { by: second-agent/1.0, at: 2026-09-26T09:02:00Z } # 확인한 에이전트
- { by: human:maya, at: 2026-09-26T10:30:00Z } # 직접 읽은 뒤의 나

에이전트가 대신 서명하게 두지 마세요

에이전트에게 human: 항목을 절대 추가하지 말라고 알려 주세요. human: 접두사가 있어야 검증이 사람의 검토로 인정되므로, 이 항목은 반드시 사람이 추가해야 해요.

Knowtarium에서는

검토가 켜진 Knowtarium 폴더에서는 위의 두 항목이 검증의 두 측면이에요. 에이전트의 확인은 문서를 machine-confirmed로 만들고, 직접 한 검토는 human: 항목을 추가해요. 마지막 변경 이후에 둘 다 있으면 문서는 완전히 검증된 상태가 돼요. 에이전트는 어떤 것도 사람이 확인한 것으로 표시할 수 없으므로, 에이전트가 위 안내를 무시하더라도 규칙은 지켜져요.

출처는 바뀌므로 인용에도 유효 기간이 있어요

인용은 누군가 확인한 시점 기준으로 참이에요. 숫자가 있는 문서에는 stale_after 날짜를 넣고, 바뀌는 것으로 알려진 출처에는 last_modified를 기록하세요. 9월 내보내기가 10월 것으로 바뀌면 이탈률 노트는 조용히 믿을 게 아니라 다시 확인해야 해요. 현재 시각이 stale_after를 지나면 누가 검증했든 문서는 오래된 상태가 돼요.

Knowtarium에서는

Knowtarium의 Stale and expiring 페이지는 stale_after가 지난 문서와 곧 기한이 다가오는 문서를 보여 줘요. 갱신은 새로운 변경이에요. 서명되고 되돌릴 수 있으며, 검토가 켜진 폴더에서는 승인을 기다려요.

Knowtarium에서 추적되는 인용

Knowtarium은 sources 필드와 그것을 가리키는 각주를 읽고, 읽는 동안 눈앞에 보여 줘요. 형식은 전혀 바뀌지 않아요. 인용은 에이전트가 이미 쓰는 일반 OKF 그대로이고, 워크스페이스에 종단간 암호화되어 보관돼요.

  • 모든 주장을 추적해요. 인용에 마우스를 올리면 그 뒤의 출처, 출처를 만든 사람, 마지막으로 바뀐 시각이 보여요. 따라가면 문서의 상세 정보에서 그 출처가 표시돼요.
  • 날것의 YAML이 아니라 속성으로. frontmatter는 문서 맨 위에 표시돼요. 누가 문서를 썼는지(검토가 켜진 폴더에서는 누가 확인했는지), 언제 만료되는지, 어디서 왔는지 보여 줘요.
  • 링크 그래프. 무엇이 오래되었는지 보여 주고, 검토가 켜져 있으면 문서를 신뢰 등급별로 색칠해 검증되지 않은 노트가 눈에 띄게 해요. 아직 아무도 쓰지 않은 문서로 가는 링크는 유령처럼 표시돼요.
  • 전문 검색. 입력하는 대로 어떤 숫자나 출처를 언급하는 모든 문서를 찾고, 일치하는 텍스트를 보여 줘요. 저희는 노트를 읽을 수 없으므로 검색은 브라우저에서 실행돼요(연결한 에이전트는 자신이 읽는 내용을 봐요).
Knowtarium 노트의 Details: Claude Code가 생성했고 출처가 세 개 있어요. 각 출처에 id, 제목, 링크나 경로, 작성자, 그리고 알 수 있는 경우 마지막 업데이트 날짜가 있어요 (새 탭에서 원래 크기로 열림)Knowtarium 노트의 Details: Claude Code가 생성했고 출처가 세 개 있어요. 각 출처에 id, 제목, 링크나 경로, 작성자, 그리고 알 수 있는 경우 마지막 업데이트 날짜가 있어요 (새 탭에서 원래 크기로 열림)
데모 워크스페이스의 가격 노트 Details: 노트를 쓴 에이전트와 세 개의 출처. 선택하면 원래 크기로 열려요.

출처나 숫자가 바뀔 때

인용은 무언가 바뀔 때 가장 중요해요. 에이전트가 이탈률 노트를 다시 쓰면, 그 변경은 서명되고 diff와 Undo와 함께 문서에 표시돼요. 검토가 켜진 폴더에서는 승인할 때까지 diff로 대기해요. 그런 폴더에서 숫자를 직접 고치면, 그 편집은 에이전트의 확인을 기다려요. 요청하면 에이전트가 diff를 읽고, 링크와 같은 출처를 공유하는 문서를 따라가, 이전 값이 아직 남아 있는 곳을 고치거나 표시해요.

Knowtarium은 직접 AI를 호출하지 않아요. 이미 쓰고 있는 에이전트가 MCP로 연결해 쓰기와 확인을 맡아요. 모든 기능을 살펴보세요.

질문

AI 에이전트가 출처를 달게 하려면 어떻게 하나요?

AGENTS.md나 CLAUDE.md처럼 에이전트가 읽는 지침 파일에 규칙을 적으세요. 모든 숫자, 날짜, 이름, 인용에는 frontmatter에 나열된 출처를 가리키는 각주가 필요하다는 규칙이에요. 그런 다음 두 번째 에이전트가 각 인용을 출처와 대조해 확인하게 하세요.

인용으로 노트 속 AI 환각을 막을 수 있나요?

에이전트가 지어내는 것 자체를 막지는 못하지만, 눈에 보이게 만들어요. 출처가 없는 주장이나 출처가 주장과 다른 말을 하는 경우는 검토에서 쉽게 잡혀요. 인용이 없으면 틀린 주장과 맞는 주장이 똑같아 보여요.

출처 frontmatter란 무엇인가요?

마크다운 파일 맨 위에서 내용이 어디서 왔고 누가 다뤘는지 기록하는 필드예요. Open Knowledge Format에서는 sources가 문서의 바탕이 된 자료를, generated가 누가 썼는지를, verified가 누가 확인했는지를 기록해요.

번호 대신 각주 id를 쓰는 이유는 무엇인가요?

에이전트는 문서를 자주 다시 써요. 번호로 된 참조는 목록 순서가 바뀌는 순간 엉뚱한 출처를 가리키지만, [^billing-export] 같은 이름 붙은 id는 올바른 출처에 계속 붙어 있어요.

노트를 쓴 에이전트가 직접 검증해도 되나요?

가급적 그러지 마세요. 새 세션이나 다른 에이전트를 써야 확인이 작성자의 가정을 물려받지 않아요. 중요한 내용이라면 직접 읽고 자신의 verified 항목도 추가하세요.

인용 뒤의 출처는 어떻게 확인하나요?

마크다운 파일에서는 각주 레이블과 id가 같은 sources 항목을 찾아 그 resource를 열면 돼요. Knowtarium에서는 인용에 마우스를 올리면 그 뒤의 출처, 출처를 만든 사람, 마지막으로 바뀐 시각이 보여요.