관계를 명시하는 데이터 모델링
AI가 근거를 따라갈 수 있는 데이터를 만드는 법
데이터에 "의미"를 부여하는 두 가지 핵심 개념
도메인의 개념과 관계를 형식적으로 정의한 체계. "고객은 주문을 하고, 주문은 제품을 포함하고, 제품은 카테고리에 속한다"를 기계가 이해할 수 있는 형태로 표현한다. 온톨로지는 스키마다 — 실제 데이터가 아니라 데이터의 구조와 규칙을 정의한다.
온톨로지를 기반으로 실제 데이터를 노드와 엣지로 연결한 그래프 구조. 온톨로지가 "고객은 주문을 한다"라는 규칙이면, 지식 그래프는 "김철수가 주문#1234를 했다"라는 실제 사실이다. 지식 그래프는 인스턴스 데이터다.
관계형 DB는 테이블과 JOIN으로 관계를 표현한다. 관계가 깊어지면 JOIN이 복잡해지고 성능이 떨어진다. 지식 그래프는 관계 자체를 일급 시민으로 저장하기 때문에, "3단계 떨어진 관계"를 찾는 것이 자연스럽고 빠르다. AI가 "김철수의 동료가 구매한 제품의 카테고리"를 찾아야 할 때, JOIN 5개보다 그래프 순회가 빠르다.
벡터 검색은 의미가 비슷한 문서를 찾는 데 강하지만, 관계의 종류와 경로를 그대로 보존하지는 않는다. 지식 그래프는 엔티티와 관계를 명시해 멀티홉 탐색과 전역 요약에 쓸 구조를 제공한다. 다만 효과는 데이터·질문·추출 품질에 따라 달라지므로, Microsoft Research의 GraphRAG 연구처럼 과업별 평가로 확인해야 한다.
처음부터 OWL을 만들 필요는 없다 — 단계적으로 깊이를 더한다
단어와 정의만 있는 목록
시작점계층 구조 (is-a 관계). 예: 동물 > 포유류 > 개
분류동의어, 관련어, 상위어/하위어
관계속성, 제약, 논리 규칙, 추론 가능
추론모든 지식 그래프는 주어-술어-목적어 트리플로 구성된다
벡터 검색만으로 한계에 부딪혔다면 — 그래프가 답일 수 있다
| 질문 유형 | Vector RAG | GraphRAG | 추천 |
|---|---|---|---|
| "X에 대한 문서 찾아줘" | 적합 | 과잉 | Vector |
| "A와 B의 관계가 뭐야?" | 부족 | 적합 | Graph |
| "지난달 X의 정확한 총 매출은?" | 부적합 | 생성 답변은 위험 | DB/그래프 직접 쿼리 |
| "A가 B에게 미친 영향의 경로?" | 불가 | 적합 | Graph |
| "이 주제의 최신 논문 요약해줘" | 적합 | 불필요 | Vector |
지식 그래프를 직접 만들어보기 위한 도구들
온톨로지를 처음 만드는 사람을 위한 단계별 접근
연구에 따르면, DB 스키마에서 온톨로지를 추출하면 텍스트에서 추출한 것과 성능이 비슷하면서 비용은 훨씬 낮다. DDL(테이블 정의)을 LLM에게 주면 클래스, 속성, 관계를 자동 추출할 수 있다. 이미 있는 데이터의 구조를 활용하라.
첫 컴피턴시 질문을 답하는 데 필요한 핵심 노드와 관계만으로 시작하라. 클래스 수에 보편적인 정답은 없다. 새 질문이 기존 모델로 표현되지 않을 때 근거를 남기고 점진적으로 확장한다.
벡터 검색을 버리고 그래프로 갈 필요는 없다. 의미 검색은 벡터에, 관계 탐색과 전역 종합은 그래프에, 정확 집계는 직접 쿼리에 맡긴다. 실제 질문 분포로 라우팅 기준을 검증하라.
초기 GraphRAG 구현에서 가장 큰 문제: "John Doe, 45" vs "John Doe, age 45", "Type 2 Diabetes" vs "T2D". 같은 엔티티를 다른 이름으로 인식하면 그래프가 무너진다. 동의어 사전과 정규화가 핵심.