데이터는 넘쳐나지만 그로부터 가치를 얻는 일은 별개의 문제다. 이 장은 지식 그래프의 배경과 동기를 설명하고, 그래프와 그래프 데이터의 개념을 도입하며, 지식 그래프로 더 똑똑한 시스템을 구축하는 길의 출발점을 제시한다. 맥락 속에서 지식을 적용하는 것 — 그것이 대부분의 비즈니스가 가진 가장 강력한 도구다.
우리는 데이터에 압도되어 있다. 데이터는 어디에나 있고, 놀라운 속도로 수집되며, 상당한 비용을 들여 저장된다. 그러나 그 안에 분명히 존재하는 가치를 실제로 끌어내지는 못하고 있다. 문제는 데이터의 양이 아니라 데이터를 이해하는 능력이다.
희망이 없는 것은 아니다. 지난 10년 사이 그래프에 기반한 새로운 기술 범주가 무명에서 두각을 드러내는 위치로 올라섰다. 그래프는 내비게이션과 소셜 네트워크 같은 소비자 대면 시스템부터 공급망과 전력망 같은 핵심 인프라에 이르기까지 모든 것의 기반이 되었다.
이러한 그래프 활용 사례들은 하나의 공통 결론에 도달했다. 맥락 속에서 지식을 적용하는 것이 대부분의 비즈니스가 가진 가장 강력한 도구라는 것이다. 연결된 데이터 항목들의 그래프로 맥락을 표현하여 데이터를 맥락 안에서 이해하도록 돕는 패턴과 실천의 집합 — 그것이 지식 그래프(knowledge graph)다.
지식 그래프가 유용한 이유는 데이터에 대한 맥락화된 이해(contextualized understanding)를 제공하기 때문이다. 맥락은 구조와 해석의 규칙을 제공하는 메타데이터 계층(그래프 위상 및 기타 특징)에서 나온다. 지식 그래프가 제공하는 연결된 맥락은 기존 데이터에서 더 큰 가치를 추출하고, 자동화와 프로세스 최적화를 추진하며, 예측을 개선하고, 변화하는 비즈니스 환경에 대한 민첩한 대응을 가능하게 한다.
이 책은 비즈니스 안에서 지식 그래프를 구축하고 운영하는 데 관심 있는 기술 전문가를 위해 쓰였다. 2021년 O'Reilly 리포트 Knowledge Graphs: Data in Context for Responsive Businesses의 후속작이자 확장판에 해당한다. 그 리포트가 CIO와 CDO에게 지식 그래프의 이점을 이해시키는 것을 목표로 했다면, 이번 책은 정교한 정보 시스템을 구축하는 데이터·소프트웨어 실무자를 겨냥한다.
그래프 데이터베이스, 질의 언어, 데이터 랭글링, 그래프 데이터 과학을 다룬다. 2부를 이해하는 데 필요한 기본 도구를 기술 실무자에게 가르친다.
주요 지식 그래프 활용 사례와 구현 방법을 코드 예제와 시스템 아키텍처와 함께 다룬다. 그래프 기초부터 그래프 머신러닝까지의 깊이 있는 예제를 제공한다.
CIO나 CDO에게도 이 책은 여전히 유용하다. 지식 그래프가 무엇이고 어떻게 전달되는지에 대한 좋은 개관을 제공하기 때문이다. 앞부분의 장과 코드 예제는 건너뛰어도 되며, 그래도 실무 동료들이 무엇을 왜 하고 있는지 이해할 수 있다. 실무자에게 이 책은 지식 그래프 세계로의 진입로(on-ramp)이자, 동료 및 경영진과 구현을 논의할 수 있는 공통 언어가 된다.
지식 그래프는 그래프의 한 종류이므로 그래프에 대한 기본 이해가 필요하다. 그래프는 노드(node, 정점 vertex)를 관계(relationship, 간선 edge)로 연결하여 도메인의 고충실도(high-fidelity) 모델을 만드는 단순한 구조다.
혼동을 피하기 위해 분명히 하면, 이 책에서 말하는 그래프는 히스토그램이나 함수 플롯 같은 데이터 시각화 — 즉 차트(chart) — 와는 아무 관련이 없다. 이 책의 그래프는 때로 네트워크(network)라고도 불리며, 사물이 어떻게 연결되는지를 보여주는 단순하지만 강력한 방법이다.
그래프는 새로운 것이 아니다. 그래프 이론은 18세기 스위스 수학자 레온하르트 오일러(Leonhard Euler)가 발명했다. 프로이센 황제가 쾨니히스베르크(현재의 칼리닌그라드)를 둘러보되 일곱 개의 다리를 각각 정확히 한 번씩만 건너는 최소 거리 경로를 계산하는 문제가 그 출발점이었다.
오일러의 통찰은 그림 1-2의 문제를 논리적 형태로 환원할 수 있다는 것이었다. 현실 세계의 모든 잡음을 걷어내고 오직 사물이 어떻게 연결되는가에만 집중하면, 문제에서 다리도, 섬도, 황제도 사라진다. 쾨니히스베르크의 물리적 지리는 완전히 무관하다는 것을 그는 증명했다.
실제로 오일러는 황제가 각 다리를 한 번씩만 건너며 도시 전체를 걷는 것이 불가능함을 증명했다. 그러한 경로(path)가 존재하려면 걷기를 시작할 수 있는, 연결 다리(관계) 수가 짝수인 섬(노드)이 적어도 하나 필요한데, 쾨니히스베르크에는 그런 섬이 존재하지 않았기 때문이다. 그래프를 이용하면 걷기 부츠를 신고 직접 시험해 보지 않고도 이 결론에 도달할 수 있다.
오일러의 접근은 현대 소프트웨어 개발과 닮았다. 현실 세계의 고유한 잡음을 걷어내어 더 가치 있는 논리적 표현 — 즉 소프트웨어 — 만 남기는 것이다. 소프트웨어 전문가에게 이 방식은 편안할 만큼 친숙하다.
오일러의 연구 위에서 수학자들은 다양한 그래프 모델을 연구해 왔다. 모두 "관계로 연결된 노드"라는 주제의 변주다. 관계에 명시적 시작·끝 노드가 있는 방향(directed) 모델, 방향이 없는 무방향(undirected) 모델, 하나의 관계가 여러 노드를 연결할 수 있는 하이퍼그래프(hypergraph) 등이 있다.
이론적으로 단 하나의 최선의 그래프 모델은 없다(대개 모델 간 변환도 가능하다). 그러나 실무에서 — 특히 컴퓨터 시스템 구축에서 — 더 낫거나 못한 모델은 분명히 존재한다. 이 책은 레이블 속성 그래프(labeled property graph, LPG) 모델을 기반으로 선택했다. 소프트웨어·데이터 전문가가 이해하기 쉬운 대중적 모델이면서, 가장 복잡한 도메인까지 표현할 만큼 표현력이 풍부하고, (수학자들이 사랑하는 그래프와 달리) 정보가 풍부(information rich)하기 때문이다.
속성 그래프 모델은 현대 그래프 데이터베이스에서 가장 대중적인 모델이며, 그에 따라 지식 그래프를 만드는 일반적인 토대다. 노드, 레이블, 관계, 속성이라는 원시 요소(primitive)와 규칙만으로 정교하고 충실도 높은 그래프 데이터 모델을 비교적 쉽게 조립할 수 있다.
노드는 0개 이상의 속성(property)을 가질 수 있다. 속성은 가격이나 생년월일처럼 엔터티 데이터를
표현하는 키-값 쌍이다. 노드는 0개 이상의 레이블(label)을 가질 수 있으며, 레이블은
Customer, Product처럼 그래프 안에서 노드의 역할을 선언한다.
관계는 BOUGHT, FOLLOWS, LIKES 같은
타입(type)과 한 노드에서 다른 노드로(또는 자기 자신으로) 향하는 방향을 가진다.
타임스탬프나 거리처럼 연결의 특성을 표현하는 속성도 0개 이상 가질 수 있다.
관계는 결코 매달리지(dangle) 않는다 — 시작 노드와 끝 노드가 항상 존재한다(둘이 같아도 된다).
그림 1-3에서 각 노드는 그래프 안에서의 역할을 나타내는 레이블을 가진다. 어떤 노드는
Person, 어떤 노드는 Place다. 노드 내부에는 속성이 저장된다.
예컨대 name:'Rosa', gender:'f'를 가진 노드는 "Rosa라는 여성"으로
해석할 수 있다. 주목할 점은 Karl과 Fred 노드가 서로 조금 다른 속성을 가진다는 것이다
(Karl은 born:1975, Fred는 age:77). 이는 현실 세계의
지저분함(messiness)을 수용하는 완벽하게 정상적인 도구다.
관계를 읽는 법도 단순하다. name:'Rosa'인 Person 노드에서
city:'Berlin'인 Place 노드로 향하는
LIVES_IN 관계(속성 since:2020)는 관계의 방향에 따라
"Rosa는 2020년부터 베를린에 살고 있다"로 읽는다. Fred와 Karl은 서로 FRIEND이고
Rosa와 Karl도 친구지만, Rosa와 Fred는 친구가 아니다.
속성 그래프 모델은 레이블이나 관계 타입에 기반한 어떤 스키마도 강제하지 않는다. 고충실도 모델 개발을 돕기 위해 의도적으로 유연하고 수용적으로 설계되었다. 특정 레이블의 노드가 특정 속성을 반드시 갖도록 보장해야 한다면, 해당 레이블에 제약 조건(constraint)을 적용하여 속성의 존재나 유일성 등을 강제할 수 있다.
이는 스키마(schema)도 스키마리스(schemaless)도 아닌 "schema-ish"로 볼 수 있다. 전체 데이터 모델을 성급하게 잠그는 대신, 필요한 곳에만 스키마 같은 제약을 사용하자는 발상이다. 이러한 제약도 그래프 데이터 모델의 다른 모든 요소처럼 시간에 따라 변할 수 있다. 현실 세계의 데이터는 종종 고르지 않고 불완전하며, 지식 그래프는 그 현실을 반영해야 한다.
속성 그래프 모델에는 노드 수나 이들을 상호 연결하는 관계의 수·종류에 제한이 없다. 어떤 노드는 조밀하게, 어떤 노드는 성기게 연결된다. 속성이 많은 노드도, 전혀 없는 관계도 모두 정상이다. 중요한 것은 오직 모델이 문제 도메인과 일치하는가이다. 취미·출판물·직업 같은 데이터를 추가하는 확장도 간단하다 — 문제 도메인에 맞춰 노드와 관계를 계속 추가하면 된다. 수백만·수십억 연결 규모의 크고 복잡한 그래프도 현대 그래프 데이터베이스와 그래프 처리 소프트웨어에는 문제가 되지 않는다.
그래프 데이터 모델은 복잡한 관계의 네트워크를 사람이 읽을 수 있으면서 기계 친화적인 방식으로 무리 없이 표현한다. 처음에는 매우 기술적으로 보일 수 있지만, 그래프는 아주 단순한 원시 요소로 만들어지기에 실무에서 매우 접근하기 쉽다. 단순한 데이터 모델과, 연결·패턴·특징을 발견하는 알고리즘적 처리의 용이함 — 이 조합이 그래프를 이토록 대중적으로 만든 원동력이며, 지식 그래프에서도 그대로 활용하게 될 강력한 조합이다.
지식 그래프에 대한 관심은 폭발적으로 증가했다. 이 주제에 관한 무수한 연구 논문, 솔루션, 애널리스트 리포트, 그룹, 컨퍼런스가 그 증거다. 이러한 인기는 부분적으로는 그래프 기술 자체가 최근 몇 년간 가속했기 때문이고, 또한 데이터를 이해하려는 수요가 강력하기 때문이다.
외부 요인도 지식 그래프의 부상을 가속했다. COVID-19 팬데믹의 스트레스와 지정학적 여파는 일부 조직을 한계점까지 몰아붙였다. 의사결정이 지금처럼 신속해야 했던 적이 없다. 동시에 기업들은 시의적절하고 정확한 인사이트의 부재로 발목을 잡혀 있다.
기업들은 신속하게 유연해질 수 있도록 운영과 프로세스를 재구성하고 있다.
과거의 지식은 시장 역학에 의해 더 빨리 낡고 무효화된다. 데이터를 포착·분석·학습하는 새로운 방법이 필요하다.
고객 경험과 환자 결과부터 제품 혁신, 사기 탐지, 자동화까지 — 신속한 인사이트와 추천을 위해 지식을 생성하는 맥락화된 데이터가 필요하다.
(과대광고에도 불구하고) 모든 그래프가 지식 그래프인 것은 분명히 아니다. 지식 그래프는 맥락적 이해(contextual understanding)에 방점을 둔 특정한 유형의 그래프다.
지식 그래프는 현실 세계의 엔터티, 사건, 사물과 이들의 상호 관계를 사람과 기계가 모두 이해할 수 있는 형식으로 기술하는, 상호 연결된 사실(fact)들의 집합이다.
— Barrasa & Webber, Building Knowledge Graphs, Ch.1 (2023)결정적으로, 지식 그래프에는 사용자(또는 컴퓨터 시스템)가 기저 데이터에 대해 추론(reason)할 수 있게 하는 조직화 원리(organizing principle)가 반드시 있어야 한다. 조직화 원리는 지식 발견을 지원하는 맥락을 더하는 추가적인 구조 계층을 제공한다. 즉, 데이터 자체를 더 똑똑하게 만든다.
이 발상은 통념과 정반대다. 통념에서는 지능이 애플리케이션에 상주하고, 데이터는 그저 채굴되고 정제되는 멍청한 대상이다. 반면 더 똑똑한 데이터는 시스템을 단순화하는 동시에 폭넓은 재사용을 장려한다.
지식 그래프는 하나의 그래프 데이터베이스에 존재하는 자기 완결적 단위일 수도 있고, 여러 개의 조율된 그래프 저장소가 이루는 그래프 연합(federation of graphs)일 수도 있다. 미분화된 대용량 저장소에 구조와 지식을 부여하기 위해 데이터 레이크 위에 구축될 수도 있으며, 서로 다른 종류의 여러 데이터 소스 위에서 구조와 인사이트를 제공하여 데이터 소비자에게 전체적이고 선별된(curated) 뷰를 주는 논리 계층일 수도 있다.
원칙적으로 지식 그래프는 기저 데이터의 물리적 저장 방식에 대해 불가지론적(agnostic)이다. 외부 저장 데이터 위의 똑똑한 인덱스로 동작하는 가상화(virtualized) 접근부터, 데이터가 그래프 플랫폼에 완전히 호스팅되는 완전 구체화(fully materialized) 접근, 그리고 그 사이의 어떤 하이브리드 접근까지 모두 지원할 수 있다.
조직화 원리, 추론, 지식 발견은 처음에는 복잡해 보일 수 있다. 그러나 실제로 지식 그래프는 데이터 위의 풍부한 인덱스로서 큐레이션을 제공하는 존재로 생각하면 된다. 마치 숙련된 사서가 연구자에게 책과 저널을 추천해 주는 것과 같다.
그래프 = 노드 + 관계. 사물이 어떻게 연결되는지를 모델링하는 고충실도 구조이며, 차트(시각화)와는 무관하다. 그 기원은 1736년 오일러의 쾨니히스베르크 다리 문제로 거슬러 올라간다.
이 책의 기반은 레이블 속성 그래프(LPG). 노드·레이블·관계·속성이라는 단순한 원시 요소로 복잡한 도메인을 표현하며, 스키마를 강제하지 않되 필요한 곳에만 제약을 거는 "schema-ish" 접근을 취한다.
지식 그래프 = 그래프 + 조직화 원리. 상호 연결된 사실의 집합에 추론을 가능하게 하는 조직화 원리가 더해질 때 비로소 지식 그래프가 되며, 지능을 애플리케이션이 아닌 데이터에 인코딩한다.
저장 방식은 불가지론적. 단일 그래프 DB, 그래프 연합, 데이터 레이크 위 계층, 가상화·구체화·하이브리드 — 어떤 아키텍처든 지식 그래프가 될 수 있다.
여기서부터는 조금 더 기술적인 내용으로 들어간다. 2장에서는 조직화 원리의 정의를 확장하여, 지식 그래프와 이를 소비하는 사용자·시스템 사이의 계약(contract)으로 작동하게 하는 방법을 배운다. 또한 조직화 원리를 만드는 여러 가지 선택지 — 평범한 그래프부터 택소노미, 온톨로지까지 — 를 살펴본다.