Knowledge Graph - (1) What is Knowledge Graph?

손기훈·2024년 11월 11일

지식그래프

목록 보기
1/3
post-thumbnail

Intro

더욱 더 정확한 Retrieval을 위한 RAG 시스템을 갖추려는 움직임에서 최근에 가장 각광받는 것 중에 하나는 전통적인 지식검색 방법론에서 활발하게 사용되는 지식 그래프를 RAG를 위한 지식베이스로 활용하는 방안인 것 같다.

Advanced RAG를 통한 더욱 정확한 임베딩과 retrieval을 구축하는 동시에 지식 그래프를 통해 더욱 정확한 맥락을 가지고 있는 데이터를 통해 LLM에게 질문하는 템플릿 안에 아래와 같이 삽입하고자 하는 것이다.

다만, 검색 엔진이나 SNS처럼 전통적으로 그래프 데이터베이스를 활용하는 경우가 아니라면 지식 그래프라는 용어 자체가 낯설기만하다. 따라서, O'really에서 최근에 출간한 Building-Knowledge-Graphs-Practitioner's-Guide의 내용과 neo4j의 공식문서를 알아보고자 한다.

지식 그래프란?

지식 그래프에 들어가기에 앞서, '그래프'란 용어는 그래프 자료구조에서 활용되는 그 '그래프'가 맞다. 다만, 지식 그래프의 그래프는 그래프와는 다른 구분되는 지점이 있다. 지식 그래프는 일반적인 그래프와는 달리, 지식 그래프 자체로 추가적인 설명이나 매뉴얼 없이도 사용자가 데이터의 체계와 특성을 이해가능하게 하는 것을 목표로 설계 된다. 즉, 사람들이 어떤 데이터를 설명할 때 그려내는 다이어그램을 데이터베이스화 한 것에 가깝다고 할 수 있다.

일반적인 그래프의 예시를 들어보자. 아래는 병원에 내원한 환자와 처방, 그리고 진료 받은 의사의 관계를 나타낸 그래프다. 아래의 그래프 역시 많은 걸 보여주지만, 아래의 그래프를 설명하는 추가적인 설명이나 매뉴얼 없이는 아래의 그래프를 이해할 수 없다.

D0와 D1이 의사이고, P1~P4는 환자라는 설명이 있다면, 이 그래프가 나타내고자 하는 바가 좀 더 확실해진다. 하지만, 위의 그래프만으로는 의사와 환자가 가리키는 화살표의 연결이 무엇을 의미하는지는 알 수 없다. 이 역시 추가적인 설명이 필요하다.

아래는 위를 보완한, 속성 그래프이다.

우리는 이 그래프만으로 추가적인 설명 없이 그래프가 나타내는 데이터가 무엇인지, 환자와 의사가 어떤 관계를 갖고 있는지 그리고 병원에 여러번 방문한 환자가 누구인지 등을 알아낼 수 있다. 이것이 지식 그래프가 목표하는 바이다. 즉 현실의 사건과 객체들을 묘사할 때 사람들이 사용하는 어떠한 도식을 그대로 소프트웨어에서 사용하고자 함이다.

지식그래프의 구성요소

지식 그래프는 그래프와 마찬가지로, 노드와 연결(관계)로 이루어져있다. 다만, 지식 그래프의 관계는 모두 방향을 가지고 있어야한다.

그래프와 다른 점은 여기에 더해 '구성 원칙(Organizing Principle)'을 지식 그래프는 가지고 있어야 한다. 구성원칙이란 말 그대로 지식 그래프를 구성하고 있는 규칙이자 동시에 사람과 소프트웨어가 데이터를 이해할 수 있게 하는 계약이다. 즉, 지식 그래프의 구성 원칙을 통해서 우리는 위와 같은 그래프의 형성 구조와 의미를 이해할 수 있는 것이다.

다음 시리즈에서 우리는 구성 원칙에 따른 지식 그래프의 종류를 알아볼 것이다.

profile
파이썬과 함께라면 두렵지 않아

0개의 댓글