지식그래프(온톨로지) 개념과 설계

2023. 2. 20. 15:25업무관련

728x90
반응형

지식그래프(Knowledge Graph)란?

지식그래프는 현재 시장에서 많은 관심을 받고 있습니다. 기존에 ‘지식’이란 사람들의 기억에 의존하는 경우가 많았습니다. 사람들이 기억하거나 메모한 글을 기록으로 작성하게 되면서, 그런 기록물들을 컴퓨터로 작성하게 되고, 작성한 문서들이 무한하게 공유되어 현재는 다양한 장치를 통해 대량의 정보를 볼 수 있게 되었습니다.

 

지식그래프는 사람이 기억으로 생성하고 활용하는 지식 정보를 좀 더 정확하게 관리하고, 많은 양의 지식 탐색을 위한 기법으로 나타나 현재 구글이나 마이크로소프트 같은 거대 IT 기업에서 대중적으로 사용하고 있습니다. 

 

지식그래프를 알기 전에 우선 지식베이스에 대한 정리가 필요합니다. 지식베이스는 도메인 정보(개인이 알고 있는 정보, 업체가 사용하는 정보)와 특정 분야의 전문가들이 축적한 전문 지식과 문제 해결을 위한 자료 등을 저장해 놓은 지식창고, 즉 데이터베이스입니다. 지식 베이스는 지식을 구조화하여 표현하고 새로운 지식이 왔을 때 지식의 확장이 가능합니다. 이러한 지식베이스라는 체계를 그래프 DB로 구축한 것이 지식그래프라고 표현할 수 있습니다.

 

지식그래프는 파편화되어 있는 데이터를 그래프 모델링을 통해 지식 정보를 구조화할 수 있고, 지식베이스를 네트워크 형태의 구조로 연결하여 저장할 수 있습니다. 지식그래프는 그래프 데이터 모델 또는 토폴로지(topology)를 사용하여 데이터를 통합하는 기술로써 시맨틱 정보를 노드와 엣지의 연결로 구성해 다양한 종류의 데이터를 지식그래프의 형태로 변환, 축적, 추출하여 지식을 빠르게 탐색하는 기술입니다. 또한, 지식그래프는 인공지능을 만들기 위한 대표적인 방법이자 ML/DL 및 클라우드 컴퓨팅 등 다양한 기술과의 조합이 필수인 지능형 서비스에 폭넓게 사용되고 있습니다. 

 

지식그래프는 대체로 RDF와 그래프 DB, 이 두 가지 형태가 대표적입니다. 그렇다면 RDF와 그래프 DB로 구현하는 지식그래프는 어떤 차이가 있는지 알아보겠습니다.

 

RDF vs 그래프 DB 

RDF와 그래프 DB의 차이는 다음 표에서 정리한 것과 같습니다.

 

항목 RDF GDB
목적 연결된 데이터를 표현할 때 RDB에 저장하기 쉽게 개발된 형태 시맨틱 웹을 잘 처리할 수 있는 DB 형태의 모델로 개발된 형태
데이터모델 Triplet Schema  Property Graph Model
탐색성능 recursive table search로 인해 depth가 깊어질수록 매우 느림 그래프 구조별 최적화된 그래프 Path 알고리즘 사용
데이터 모델 예시 모든 데이터를 노드 또는 엣지에 저장해야하므로 속성정보가 많을수록 복잡해짐 Property 등을 활용하여 시스템적으로 가볍고, 논리적으로 직관적인 표현이 가능함
기타 장단점 - 자연어를 저장하기에 효율적
- 그래프 구조에 대한 표현에 한계가 있음
- DB 형태로 개발된 것이 아니기에 관리 시스템으로서 기능 부족 
- 패턴 탐색(질의) 기반 서비스 제공
- 스키마리스 저장 방식으로 새로운 형태의 데이터가 추가되더라도 유연하게 대처
- 관계 모델링이 복잡하여 쉽게 구성하기 어려움

 

일반적으로 RDF는 정해진 양의 데이터 또는 학술적인 용도로 사용될 때 적합하며, 그래프 DB는 비즈니스 및 빅데이터 분석 등 데이터가 새롭게 생성되는 환경과 같이 실용적인 용도로 사용할 때 효율적입니다. 

 

뿐만아니라 모든 데이터를 노드와 엣지에 저장해야 하는 RDF는 그래프 DB의 프로퍼티 및 레이블 기능이 없습니다. 따라서 노드와 엣지가 급격히 늘어나게 되는 치명적인 단점이 있습니다. 데이터가 많아질수록 점과 선도 함께 더 많아져 복잡해질 수밖에 없으며, depth가 많아질수록 성능 저하도 발생할 수 있습니다. 

 

RDF와 그래프 DB를 그래프 구조로 표현할 때, 둘의 차이를 좀 더 명확하게 볼 수 있습니다. 아래 지식그래프로 표현한 모델링이 좋은 예시입니다.

 

지식그래프 RDF vs GDB

RDF vs GDB

 

위 우측 이미지는 지식그래프를 표현하는 예시를 보여주고 있습니다. 모델링 이미지 위에 있는 테이블에 4가지 와인과 각 와인의 품명, 주종, 수입사, 빈티지, 원산지, 가격 등에 대한 샘플 데이터를 담았습니다. 

 

좌측에는 RDF로 표현한 지식그래프입니다. 와인 1에 대한 5가지의 칼럼 데이터에 대해 각각 엣지가 만들어졌습니다. 한정된 데이터를 RDF로 지식그래프로 표현하면 한눈에 보기는 쉽습니다. 하지만 와인 4개가 아니라 100 또는 1,000개에 대한 데이터를 지식그래프 모델링으로 표현했다면 어땠을까요? 지금도 충분히 하나의 이미지 안이 꽉 찬 것으로 보이는데, 속성정보가 여러 개 펼쳐질수록 모델링도 더 복잡해질 수 있을 것입니다. 

 

우측에서 표현하는 그래프 모델링은 와인 1에 대한 속성값 중 두 가지를 프로퍼티로 만들어 와인 1 노드에 포함했습니다. 와인 1의 빈티지와 가격이 하나의 노드로 합쳐져 있어 전체적인 모델링이 RDF보다 더 깔끔해지고 엣지의 개수가 줄어든다는 장점이 있습니다. 또한, 공통된 수입사의 와인들을 보며 서로 어떤 연결 관계가 있는지, 혹은 원산지는 프랑스를 보고 싶다면, 따로 프로퍼티를 빼는 것이 아니라 노드로 빼서 연결 관계를 만들어줄 수 있습니다. 다양한 형태의 표현이 가능하다는 점이 그래프 DB로 표현한 지식그래프 모델링의 장점입니다. 




지식그래프로 추론하기

 

위 이미지는 GDB 기반 지식그래프와 더불어 결제 데이터가 추가된 이미지를 보여주고 있습니다. 위 시나리오의 결제 데이터에는 구매한 와인에 대한 데이터와 특정 와인과 함께 주문한 음식들에 대한 데이터를 담고 있습니다. 와인 1과 와인 2는 안주로 스테이크와 곁들어 마시게 되는 것을 볼 수 있습니다. 둘 다 레드와인이니까 스테이크를 먹는 사람에겐 레드와인을 추천해주거나, 레드와인에 해당하는 다른 항목들을 추천해주면 스테이크 주문하는 사람들에게 효과적으로 정보 제공하는 서비스가 가능할 것이라는 추론을 할 수 있게 됩니다.

 

지식그래프를 설계하는 4가지 단계

지식그래프를 구축할 때 총 4가지 설계 단계를 거쳐 갑니다.

우선 첫째는 지식그래프를 만드는 목적을 세워야 하고, 데이터를 어떻게 사용할지 지식의 구조를 설계해야 합니다.

 

둘째는 데이터를 처리해야 하는데 대부분의 지식 정보가 text로 되어있다 보니 자연어처리와 태깅 작업을 진행하게 됩니다.

Text 데이터 외 추가적인 거래내역과 같은 기타 데이터는 지식에 표현할 수 있도록 전처리를 진행하고, 데이터에 대한 구조화를 다시 잡습니다.

 

데이터의 구조를 잡으면 세번째로 모델링을 거쳐 갑니다. 모델링을 통해 데이터의 연결 관계를 적재하게 되고, 연결되어있는 정보를 통해서 예측 알고리즘을 활용하면 새로운 관계가 형성됩니다.  

 

마지막으로는 형성된 지식그래프를 조회하고 이를 서비스하는 시각화 단계까지 진행합니다.

 

 

728x90
반응형