Neo4j GraphRAG: AI와 함께하는 지능형 지식 그래프 쿼리
Source: Dev.to
GraphRAG란?
GraphRAG (Graph‑based Retrieval‑Augmented Generation) 은 다음을 결합한 고급 AI 기법입니다.
- 지식 그래프 탐색 및 그래프 신경망
- 구조화된 그래프 데이터에 대한 의미 벡터 검색
- 자연어 이해를 위한 대형 언어 모델(LLM)
- 지능형 지식 검색을 위한 온톨로지 추론
이 글의 코드는 여기에서 확인할 수 있습니다.
GraphRAG vs 전통적인 RAG
| 구분 | 전통적인 RAG | GraphRAG (이 플러그인) |
|---|---|---|
| 데이터 소스 | 비구조화 문서, PDF | 지식 그래프, OWL 온톨로지, Neo4j 속성 그래프 |
| 구조 | 텍스트 청크 | 노드, 엣지, 관계, 의미 트리플 |
| 관계 | 텍스트 내 암시적 | 타입이 지정된 명시적 그래프 구조 |
| 검색 방법 | 벡터 유사도만 | 그래프 탐색 + 벡터 임베딩 + 온톨로지 추론 |
| 컨텍스트 | 유사한 문단 | 연결된 서브그래프와 관계 경로 |
| 쿼리 이해 | 키워드 매칭 | 그래프 패턴 매칭 + 의미 이해 |
flowchart LR
subgraph Traditional_RAG
D[Documents] --> C[Text chunks] --> V[Vector embeddings] --> S[Similarity search] --> L[LLM]
end
subgraph GraphRAG
KG[Knowledge Graph + Ontology] --> ER[Entity/Relationship extraction] --> SE[Structure‑aware embeddings] --> GR[Graph‑based retrieval] --> CL[Context‑enriched LLM]
end
이 프로젝트가 하는 일
이 프로젝트는 Protégé GraphRAG 플러그인으로, 그래프 데이터베이스, 온톨로지 엔지니어링, 그리고 AI‑기반 의미 검색을 결합해 자연어로 지식 그래프를 지능적으로 질의할 수 있게 합니다.
핵심 기능
┌─────────────────────────────────────────────────────────────────┐
│ 사용자 경험 │
├─────────────────────────────────────────────────────────────────┤
│ 사용자가 묻는다: "내 온톨로지에 있는 모든 클래스와 그 관계는 │
│ 무엇인가요?" │
│ │
│ 플러그인: │
│ 1. 인덱싱된 온톨로지를 검색한다 (의미 검색) │
│ 2. 관련 클래스와 관계를 가져온다 │
│ 3. 컨텍스트 + 질문을 AI(GPT‑4, Claude 등)에 전달한다 │
│ 4. 자연어 답변을 반환한다 │
│ │
│ 답변: "당신의 온톨로지는 다음과 같은 주요 클래스를 포함합니다: │
│ - Person (Agent의 하위 클래스) │
│ - Organization (Agent의 하위 클래스) │
│ 이들은 'worksFor' 속성을 통해 연결됩니다..." │
└─────────────────────────────────────────────────────────────────┘
이 GraphRAG 시스템의 주요 특징
- 그래프 기반 자연어 질의 – SPARQL이나 Cypher를 작성하지 않고도 영어로 지식 그래프와 온톨로지를 질문할 수 있습니다.
- 이중 지식 그래프 소스
- OWL 온톨로지(RDF 트리플, RDFS/OWL 공리, 클래스 계층, 속성 체인) 질의
- Neo4j 속성 그래프(라벨이 붙은 노드, 타입이 지정된 관계, 그래프 속성) 질의
- GraphRAG‑구동 답변 – Retrieval‑Augmented Generation이 활용하는 요소:
- 그래프 토폴로지(노드 이웃, 관계 경로)
- 의미 임베딩(벡터 유사도 검색)
- 온톨로지 추론(추론, 포함 계층)
- 실제 그래프 데이터, AI 환각이 아닌 실제 데이터 기반
- 인‑메모리 벡터 스토어 – 외부 벡터 DB 없이 빠른 의미 검색 및 임베딩 기반 검색 가능
- 원활한 Protégé 통합 – Protégé UI 안에서 바로 동작하며 OSGi 플러그인 아키텍처를 완전 지원
왜 Neo4j + GraphRAG + Protégé를 결합할까?
각 기술이 해결하는 문제
| 기술 | 해결하는 문제 | 제공하는 가치 |
|---|---|---|
| Protégé | OWL 온톨로지 엔지니어링이 복잡함 | 시각적 온톨로지 편집기, DL 추론, SWRL 규칙, OWL 공리 |
| Neo4j | 지식 그래프에 유연한 질의가 필요함 | 속성 그래프 모델, Cypher 질의, 그래프 알고리즘(PageRank, 커뮤니티 탐지) |
| GraphRAG | 그래프 지식이 기술적인 질의 언어에 가두어짐 | 자연어 인터페이스, 의미 그래프 검색, AI‑기반 그래프 탐색 |
이 조합의 장점
Protégé: 온톨로지 기반
Protégé가 제공하는 것
- OWL 온톨로지를 만들고 편집하기 위한 산업 표준 도구
- 내장 추론기(HermiT, Pellet)로 논리적 추론 지원
- 클래스 계층 및 관계 시각화
- 플러그인 아키텍처를 통한 확장성
플러그인 없이의 한계
- ❌ SPARQL 지식이 필요함
- ❌ 외부 그래프 데이터베이스와 연동되지 않음
- ❌ 자연어 인터페이스 부재
- ❌ OWL 추론에만 국한
플러그인 적용 시
- ✅ 영어로 질문 가능
- ✅ OWL 온톨로지 + Neo4j 그래프 데이터 결합
- ✅ 온톨로지 기반 AI 인사이트 제공
- ✅ SPARQL 학습 불필요
Neo4j: 그래프 데이터베이스 파워
Neo4j가 제공하는 것
- 속성 그래프 모델 – RDF 트리플보다 풍부
- Cypher – SPARQL보다 직관적인 질의 언어
- 내장 그래프 알고리즘(PageRank, 최단 경로, 커뮤니티 탐지)
- 수십억 노드·관계까지 확장 가능
예시 사용 사례
// 조직 내 영향력 있는 사람 찾기
MATCH (p:Person)-[:WORKS_FOR]->(o:Organization)
WHERE o.name = 'TechCorp'
RETURN p.name, size((p)-[:MANAGES]->()) AS team_size
ORDER BY team_size DESC
RAG 없이의 한계
- ❌ Cypher 문법을 배워야 함
- ❌ 구조를 모르면 데이터 탐색이 어려움
- ❌ 복잡한 질의는 비기술 사용자에게 부담
RAG + Neo4j 적용 시
- ✅ “TechCorp에서 가장 큰 팀을 관리하는 사람은 누구인가요?” 라고 질문 가능
- ✅ 플러그인이 자연어 → 컨텍스트 검색 → 답변 생성 과정을 자동화
- ✅ 비기술 사용자도 그래프를 질의할 수 있음
GraphRAG: 지식 그래프 지능 레이어
GraphRAG가 제공하는 것
-
그래프 인식 검색 – 의미 검색 + 그래프 탐색으로 관련 서브그래프 찾기
Query: "What is a Person?" ↓ Graph Traversal + Vector Search finds: - Structure: Person --subClassOf--> Agent - Properties: Person --hasProperty--> name, age - Instances: John --rdf:type--> Person - Related Paths: Person --worksFor--> Organization -
컨텍스트 확장 – 검색된 노드를 그래프 이웃으로 확대
Initial Results → Graph Expansion → Related Entities Person node → Traverse 2‑hops → - Superclasses (Agent, Thing) - Properties (name, age, email) - Instances (John, Jane) - Relationships (worksFor, manages) -
LLM 생성 – 그래프‑강화 컨텍스트를 이용해 자연어 답변 생성
Graph Context + Question → LLM → Answer "A Person is a subclass of Agent in your ontology. Persons have properties like name and age. In your knowledge graph, John is an instance of Person. Persons can work for Organizations via the 'worksFor' relationship."
왜 GraphRAG가 순수 LLM 및 전통 RAG보다 우수한가
- 정확성 – 실제 그래프 데이터와 온톨로지 추론에 기반한 답변 제공
- 컨텍스트 – 의미 유사도와 명시적 그래프 구조를 모두 활용
- 환각 감소 – LLM이 검증된 그래프 컨텍스트를 바탕으로만 텍스트를 생성함