데이터

온톨로지

Ontology

특정 분야에 어떤 개념이 있고 서로 어떤 관계인지 기계가 읽을 수 있게 적어 둔 규칙집이자, 사람과 프로그램이 같은 단어를 같은 뜻으로 쓰게 하는 공용 어휘집이다. 실제 데이터를 담는 지식 그래프와 달리 그 틀(스키마)에 해당하며, 지식 그래프를 설계하거나 LLM이 문서에서 그래프를 뽑을 때 기준으로 쓴다.

구분온톨로지지식 그래프
역할틀 (스키마)틀에 채운 실제 데이터
예시'환자는 질환을 진단받는다''환자 A가 제2형 당뇨를 진단받았다'
비유설계 도면도면대로 지은 건물

'전기차는 자동차다', '자동차는 탈것이다'를 적어 두면 시스템은 '아이오닉 5는 탈것이다'를 따로 입력받지 않아도 알아낸다.

LLM이 그래프를 뽑을 때 틀을 잡아 준다

요즘 온톨로지가 가장 많이 쓰이는 곳은 GraphRAG다. 틀 없이 LLM에게 그래프를 뽑으라고 하면 '제2형 당뇨병'과 'T2D'를 다른 질환으로 저장하고, 관계 이름도 '진단받음', 'HAS_DISEASE'처럼 문서마다 달라져 나중에 일관되게 검색할 수 없다.

그래서 추출할 때 온톨로지를 스키마로 넘긴다. neo4j-graphrag 패키지의 SimpleKGPipeline에 노드 타입, 관계 타입, 허용되는 연결 패턴을 지정하면 LLM이 그 틀 안에서만 뽑는다. 필수 속성이 빠진 노드나 정의되지 않은 관계도 막을 수 있다.

지정할 것예시
노드 타입Patient, Condition, Medication
관계 타입DIAGNOSED_WITH, PRESCRIBED
허용 패턴(Patient, DIAGNOSED_WITH, Condition)

스키마 없이 LLM이 추정하게 두면 빠른 실험에는 편하다. 하지만 실제 서비스용 그래프라면 사람이 다듬은 온톨로지를 쓰는 편이 안전하다.

처음부터 다 만들 필요는 없다

표준 언어는 W3C의 RDF와 OWL이다. 개념의 상하 관계, 속성, '주민등록번호는 하나뿐' 같은 제약을 적을 수 있다. 공개된 온톨로지에서 필요한 부분만 가져와 늘리거나, LLM에게 도메인 문서를 주고 초안을 뽑게 한 뒤 전문가가 다듬는 방법도 많이 쓴다.

하고 싶은 일도구
눈으로 보며 설계Protégé (오픈소스 편집기)
Python에서 읽고 조회rdflib로 .ttl 파일 읽기, SPARQL로 질의
기존 온톨로지 가져오기웹 전반은 schema.org, 의료는 SNOMED CT
사내 OWL을 GraphRAG에 연결rdflib로 읽어 추출 스키마로 바꾸기

용어가 엄격한 분야에서만 공을 들인다

의료·법률·제조처럼 용어가 엄격하고 개념 사이 관계를 정확히 따라가야 하는 분야라면 온톨로지가 LLM의 구조화된 기억이 되어 환각을 줄인다. 반대로 질문이 대부분 "이 문서에 뭐라고 쓰여 있나" 수준이라면 벡터 검색 RAG로 충분하다.

업무 개념이 바뀔 때마다 스키마와 데이터를 함께 고쳐야 하므로 유지 비용이 든다. 그 비용이 얻는 이득보다 큰지 먼저 따져 보는 게 좋다.

주로 추출 틀과 용어 통일에 쓴다

가장 흔한 건 LLM이 그래프를 뽑을 때 넘기는 스키마로 쓰는 방식이다. 그 밖에는 같은 개념이 여러 이름으로 흩어지지 않도록 표준 어휘로 묶는 데 많이 쓴다.

어디서어떻게 쓰나
GraphRAG 구축노드·관계 타입과 허용 패턴을 스키마로 넘겨 LLM 추출을 틀 안에 묶는다
의료 데이터SNOMED CT 같은 표준 용어로 '제2형 당뇨병'과 'T2D'를 하나의 개념으로 맞춘다
웹 페이지schema.org 어휘로 상품·기사 정보를 표시해 검색엔진이 읽게 한다
사내 지식 그래프사내 OWL을 rdflib로 읽어 SPARQL로 조회하거나 추출 스키마로 바꾼다
#지식표현#OWL#지식그래프
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-10-20