독서 모임 자료에서 “누가 무엇을 썼는가”를 찾는다
독서 모임에 책 세 권과 저자 인터뷰, 출판사 소개, 토론 질문이 모였다. 문서 목록만 만들면 같은 저자가 쓴 다른 책과 특정 주제를 다룬 자료를 한 번에 찾기 어렵다. 지식 그래프는 인물·책·기관·주제를 점으로 두고, “썼다”, “펴냈다”, “다룬다”처럼 뜻이 있는 선으로 잇는다. 한 사실을 읽을 때 출발점과 관계 이름, 도착점을 차례로 읽으면 완전한 문장이 된다.
이 구조는 자료가 늘수록 힘을 발휘한다. 새 인터뷰를 추가할 때 기존 저자 노드를 다시 쓰고 “인터뷰 대상” 관계만 더하면 된다. 같은 사람을 이름 철자가 다른 두 노드로 만들면 검색 결과가 갈라지므로, 식별자와 출처를 함께 관리해야 한다. 이번 글의 모든 수치와 경로는 도표 문법을 익히기 위해 준비한 예시다.
노드–관계–노드를 한 문장으로 읽는다
지식 그래프의 가장 작은 사실 단위는 “주어–관계–목적어”다. “김하늘–썼다–질문의 힘”에서 김하늘은 주어, 썼다는 관계, 질문의 힘은 목적어다. 선에 관계 이름이 빠지면 두 점이 왜 연결되었는지 알 수 없다. 화살표 방향도 문장 방향과 맞춰야 한다. “책–썼다–저자”로 그리면 한국어 문장이 뒤틀린다.
관계는 구체적인 동사를 사용한다. “관련 있음”은 검색 범위가 넓고 검증 기준도 모호하다. “집필했다”, “인용했다”, “출판했다”, “회의에 참석했다”처럼 원문에서 확인할 수 있는 행위를 고르면 반대 방향과 시간 조건도 점검하기 쉽다. 두 노드 사이에 여러 관계가 성립하면 선을 합치지 않고 각각 기록한다.
사물 노드·값·출처를 서로 다른 모양으로 둔다
사람과 책처럼 다시 연결될 대상은 개체 노드로 만든다. 출간 연도 2025, 페이지 수 312처럼 그 사실의 값으로만 쓰이는 정보는 값으로 둔다. “김하늘”이라는 글자만으로 동일 인물을 보장하기 어려울 때는 내부 식별자나 공식 식별자를 함께 저장한다. 그래프 화면에는 읽기 쉬운 이름을 보이고, 데이터에는 고유 식별자를 유지한다.
출처 노드는 해당 진술을 뒷받침하는 문서와 연결한다. 문서 전체가 모든 진술을 보증한다고 처리하면 근거 범위가 넓어진다. 가능한 경우 페이지, 문단, 표 번호, 확인 날짜를 속성으로 붙인다. 공식 서지와 저자 인터뷰의 진술이 다르면 둘 중 하나를 지우기보다 각 출처와 확인 상태를 표시해 검토 대상으로 남긴다.
표시 이름: 질문의 힘
페이지 312
확인 2026-10-05
논문·연구자·기관을 연결해 질문 경로를 만든다
연구 자료를 정리할 때 논문, 저자, 소속 기관, 연구 주제, 데이터셋을 각각 노드로 둔다. “이 기관 소속 연구자가 쓴 논문 가운데 한국어 추론을 평가한 글”이라는 질문은 연구자→소속→기관, 연구자→저자→논문, 논문→평가 대상→한국어 추론이라는 경로를 이어 찾는다. 표 한 칸에 저자와 소속을 함께 적는 방식보다 관계 변경을 고치기 쉽다.
소속에는 시점을 붙여야 한다. 논문 발표 당시 기관과 현재 기관이 다를 수 있기 때문이다. “소속” 선에 시작일·종료일 또는 “논문 발표 당시”라는 한정자를 붙이면 현재 정보와 과거 사실을 혼합하는 오류를 줄일 수 있다. 공동 저자는 모두 논문과 연결하되, 저자 순서를 별도 값으로 보존한다.
발표 당시 소속인가?
공동 저자 순서가 남았는가?
논문 본문·서지 어디인가?
동명이인을 나눴는가?
학교 규정은 적용 대상·행위·예외를 따로 기록한다
규정 안내 그래프에서는 문서 제목만 연결해도 실제 적용 여부를 판단하기 어렵다. “전자기기는 수업 중 보관함에 둔다”라는 문장을 규정 조항, 적용 대상, 행위, 시간, 예외 승인으로 나눈다. 학생→적용 대상→조항, 조항→요구 행위→보관, 조항→적용 시간→수업 중, 예외 신청→승인자→담임처럼 연결하면 답변이 어느 조건을 사용했는지 추적할 수 있다.
규정 개정일과 효력 기간도 필수다. 같은 조항 번호가 개정 전후에 다른 내용을 가질 수 있으므로 문서 버전을 하나의 노드로 둔다. LLM이 “휴대전화 사용 금지”처럼 강한 표현으로 요약하면 원문의 “보관”과 차이가 생긴다. 그래프 관계 이름을 원문의 행위에 맞추면 요약 과정에서 바뀐 의미를 발견하기 쉽다.
LLM에는 원문·관계 목록·금지 추정을 함께 준다
LLM에 “지식 그래프를 그려 줘”라고만 요청하면 관계 이름이 넓어지고 원문에 없는 사실이 보태질 수 있다. 먼저 사용할 원문을 붙이고, 노드 후보와 허용 관계를 제시한다. 문장마다 출처 식별자를 붙이게 하고, 원문에서 확인되지 않는 연결은 “미확인” 목록에 따로 남기도록 요청한다. 출력 형식은 표 또는 JSON처럼 다시 검사하기 쉬운 구조가 좋다.
아래 요청문은 준비된 교육용 예시다. 실제 모델 실행 결과를 그대로 옮긴 것이 아니다. 이용할 때는 원문을 자신의 자료로 바꾸고, 관계 어휘를 업무 목적에 맞춰 제한한다. 개인정보가 포함된 자료는 외부 서비스에 보내기 전에 기관 규정과 전송 범위를 확인한다.
결과 그래프를 질문 경로로 거꾸로 읽는다
초안을 받은 뒤에는 노드 수보다 질문에 답하는 경로가 있는지 확인한다. “김하늘이 쓴 책의 주제는 무엇인가?”를 시작점 김하늘에서 썼다→책, 다룬다→주제 순서로 따라간다. 경로가 끊기면 원문에 사실이 빠졌는지, 추출 과정이 놓쳤는지 구분한다. 답이 여러 개면 각각의 경로와 출처를 반환해야 한다.
그래프에서 찾은 결과도 원문 확인을 거친다. 연결이 존재한다는 사실은 그 연결이 참임을 자동으로 보장하지 않는다. 출처가 없거나 상충하는 진술은 검색 결과에 경고로 표시한다. 추론으로 새 관계를 만든 경우에는 “원문 진술”과 “규칙으로 도출”을 나눠 기록한다.
김하늘 노드를 찾는다.
‘썼다’를 따라 책 B-104로 간다.
‘다룬다’를 따라 토론 질문으로 간다.
두 진술의 출처 문장 2·5를 연다.
이름만 있는 선·중복 노드·출처 없는 사실을 고친다
흔한 오류는 선에 “관련”만 쓰는 것, 같은 사람을 두 노드로 만드는 것, 값과 개체를 같은 모양으로 처리하는 것이다. “저자 김하늘”과 “김하늘 연구자”가 같은 사람인지 근거 없이 합치면 다른 사람의 기록이 섞일 수 있다. 반대로 동일 인물을 이름 표기 차이만으로 나누면 검색 결과가 둘로 갈라진다. 식별 근거와 확인 상태를 함께 기록해 합치기와 나누기를 결정한다.
수정할 때는 관계 이름을 원문 동사로 바꾸고, 노드마다 유형과 식별자를 부여한다. 출처가 없는 진술은 삭제하거나 미확인 영역으로 옮긴다. 충돌하는 두 출처는 각각의 진술과 연결하고 담당자가 판단하도록 남긴다. 그래프의 깔끔함보다 사실의 경계와 검토 이력이 우선이다.
수정 전
관계 뜻·식별자·출처가 없다.
수정 후
출처: 인터뷰 3문단 · 확인됨
관계 깊이를 바꾸며 도달 경로와 빈 근거를 찾는다
실습에서는 시작 노드와 탐색 깊이를 고른다. 깊이 1은 직접 연결만, 깊이 2는 한 노드를 더 거친 관계까지 보여 준다. 깊이를 무작정 늘리면 관련성이 낮은 결과가 섞이므로 질문에 필요한 범위를 먼저 정한다. “저자가 쓴 책”은 깊이 1, “저자가 쓴 책의 주제”는 깊이 2가 알맞다.
준비된 그래프에는 출처가 없는 “수상했다” 진술 하나가 들어 있다. 결과에 이 관계가 포함되면 경고가 표시된다. 이는 그래프 화면이 사실 검증을 대신하지 않는다는 점을 확인하기 위한 장치다. 자신의 자료에서는 출처가 비어 있는 관계, 식별자가 중복된 노드, 방향이 반대인 선을 함께 검사한다.
자료와 출처
- W3C, 「RDF 1.1 Concepts and Abstract Syntax」(2014) — RDF 그래프와 주어·술어·목적어로 이루어진 트리플의 공식 데이터 모형을 확인했습니다.
- W3C, 「SPARQL 1.1 Query Language」(2013) — 그래프 패턴을 이용해 RDF 자료에서 경로와 값을 찾는 공식 질의 방식을 확인했습니다.
- Wikidata, 「Data model」 — 항목·속성·진술·한정자·참조를 구분하는 운영 데이터 모형을 확인했습니다.