우리가 노트 앱에 provenance를 구축한 이유
Source: Dev.to
소개
현장에서 작성한 노트는 결과와 성찰을 기록하는 데는 훌륭하지만, 그 결과에 이르게 된 흐름을 구조화된 데이터로 보존하는 것은 놀라울 정도로 어렵습니다. 누군가의 머리 속에만 있던 절차, 페이지에 적히지 않은 암묵적 가정, 회의 자료에 요약되어 사라진 판단—수년 후에 노트를 다시 읽을 때, 이 요소들은 거의 함께 살아남지 못합니다.
저도 직접 체감했습니다. 활발한 실험 작업을 떠난 지 10년이 넘은 뒤, 그 실험 중 하나의 흐름을 떠올리려 했습니다. 남아 있던 것은 파편화된 노트와 몇 장의 회의 자료뿐이었습니다. 결과는 있었지만, 그 결과에 이르게 된 흐름은 시간이 지나면서 희미해졌습니다.
구조화된 흐름의 필요성
일반적인 방법론에서는 노트북에 절차를 흐름도 형태로 작성하라고 제안합니다. 그럼에도 불구하고 현장 기록은 결과 중심이 되는 경우가 많으며, 그 위에 흐름을 구조화된 형태로 기록하는 것은 예상보다 더 많은 노력이 필요합니다. 나중에 작업을 재현하려면 결과와 함께 흐름을 구조화된 데이터로 기록하는 설정이 유용합니다.
일본 요리에는 사시스세소(사, 시, 스, 세, 소)라는 말이 있습니다—설탕, 소금, 식초, 간장, 된장을 그 순서대로 넣으면 맛이 변한다는 뜻이죠. 실험도 마찬가지입니다. 무엇을 언제, 얼마나 오래 가열하느냐—그 선택들이 결과를 좌우합니다. 흐름 그 자체가 결과입니다.
그래서 “무엇이 무엇에서, 어떤 흐름을 통해 나왔는가”라는 인과 데이터를 구조화된 기록으로 남길 방법이 필요했습니다. AI가 실험 데이터를 다루기 시작하면서 이 문제는 특히 흥미로워졌습니다.
Provenance Data Model (PROV‑DM)
저는 PROV‑DM(Provenance Data Model)을 접했습니다. 이는 무엇이 만들어졌는지, 무엇으로부터, 어떻게 만들어졌는지를 설명하기 위한 W3C 표준입니다. 이 모델은 Entity, Activity, Agent라는 세 가지 기본 요소와 이들 사이의 관계를 정의합니다.
학술 데이터 시스템에서는 이를 사용하지만, 개인 메모 앱에서는 일반적으로 사용되지 않습니다. 그러나 연구자의 일상적인 결과물은 이미 이 형태에 맞습니다: “샘플 A를 열처리하고 샘플 B를 얻었다”는 말은 문자 그대로 “Entity B는 Entity A로부터 열처리(Activity)라는 Activity에 의해 생성되었다”는 의미입니다. 이를 통해 나는 실험 흐름—예전에는 머릿속에만 있던 부분—을 구조화된 데이터로 보관할 수 있게 되었습니다.
더 깊이 살펴보면, 동일한 모델은 콘텐츠의 출처뿐만 아니라 문서 편집 이력에도 적용됩니다. 실제로 이것이 PROV‑DM이 원래 설계된 목적에 더 가까울 수도 있습니다.
Graphium: 두 층의 출처 추적
Graphium에서는 출처 정보를 두 개의 층으로 추적합니다:
레이어 1 – 콘텐츠 출처
실험 워크플로우 (Sample A → Sample B 등). 이는 절차를 노트 안에 인과 구조로 보관하여, 연구자나 나중에 노트를 읽는 AI가 더 높은 해상도로 흐름을 추적할 수 있게 합니다.
레이어 2 – 문서 편집 출처
누가 언제 무엇을 편집했는지. 편집자(인간 또는 AI)는 prov:Agent에 매핑되고, 편집 작업은 prov:Activity에, 문서 개정은 prov:Entity에 매핑됩니다. 에이전트로 “AI인지 여부”를 기록하면, 작업을 재검토하거나 공유할 때 명확한 구분이 가능합니다.
두 층 모두 AI가 작업에 포함됨에 따라 가치가 커집니다. 구조화된 절차는 분석하거나 재사용할 수 있는 자료가 되고, 편집 출처는 AI‑생성 콘텐츠의 출처를 명확히 합니다.
디자인 접근법
사용자에게 그래프를 직접 작성하도록 요구하는 것은 현실적이지 않습니다. Graphium은 PROV‑DM을 문서 자체의 문법에 매핑합니다:
- 헤딩은 활동(Activity) 으로 변환됩니다.
- 헤딩 안의 짧은 인라인 하이라이트는 명명된 용어(예: “NaCl”, “80 °C”, “clear solution”)를 엔터티(Entity) 로 전환합니다.
작성 경험은 “헤딩을 입력하고, 단락을 쓰고, 가끔 단어를 하이라이트한다”는 형태를 유지합니다. 프로벤스 그래프는 계산된 뷰이며—절대 손으로 편집하지 않습니다.
모든 링크가 인과 관계일 필요는 없습니다. “이 논문은 흥미로웠다” 혹은 “이 개념은 저 개념과 닮았다”와 같은 진술은 방향성이 없습니다. 이런 경우에 인과성을 강제하는 것은 부자연스럽기 때문에 Graphium은 다음과 같이 구분합니다:
@멘션은 기본적으로 지식 링크(knowledge links) 로 처리됩니다(방향 없음, 사이클 허용).- 헤딩 범위 내 인라인 하이라이트 사이의 관계는 프로벤스 링크(provenance links) 로 처리됩니다(방향성, 비순환).
이렇게 동일한 작성 행위가 두 개의 서로 다른 그래프를 아래에 생성합니다.
더 넓은 적용 가능성
“무엇이 무엇에서 왔는가”라는 질문은 실험실 작업을 훨씬 넘어 레시피, 소프트웨어 변경 이력, 의료 기록 등에도 적용됩니다—형태는 동일합니다. 그래서 이 게시물의 헤더 이미지가 화학 실험이 아니라 빵 만들기 노트인 것입니다.
Source Code
구현은 오픈 소스입니다: