Graph RAG
정의
그래프 데이터베이스를 기반으로 구축한 RAG 시스템. 단순 벡터 유사도 검색이 아닌, 엔티티 간의 관계와 경로를 활용하여 더 정교하고 의미론적인 검색 결과를 제공한다.
핵심 차이: Vector RAG vs. Graph RAG
Vector RAG (일반적인 RAG)
쿼리 → 임베딩 벡터화 → 유사도 검색 → 관련 텍스트 반환
- 단점: 단순 텍스트 유사도에 의존
- 문제: 엔티티 간 관계 파악 부족, 컨텍스트 제한
Graph RAG
쿼리 → 임베딩 + 그래프 탐색 →
다중 홉(Multi-hop) 관계 검색 →
컨텍스트 풍부한 답변 생성
- 장점: 의미론적 + 구조적 정보 활용
- 특징: 엔티티 관계, 경로, 계층 구조 명시적 반영
Graph RAG의 구조
[데이터 소스]
↓
[엔티티 + 관계 추출] → 온톨로지/지식그래프 구축
↓
[Neo4j Graph DB] → 노드 + 관계 저장
↓
[Graph Retriever]
├─ Vector Retriever: 유사도 검색
├─ Cypher Query: 구조화된 쿼리
└─ Path Traversal: 다중 홉 탐색
↓
[LLM] + [검색 결과] → 답변 생성
Graph RAG의 특징
1. 다중 홉 (Multi-hop) 검색
- 예: “A가 작성한 논문 중에서 B가 인용한 논문”
- Vector RAG로는 불가능한 복잡한 관계 탐색
2. 관계 기반 검색
MATCH (movie:Movie)-[r:BELONGS_TO]->(genre:Genre)
WHERE genre.name = "Action"
RETURN movie.title, movie.plot- 관계의 의미를 명시적으로 활용
3. 엔티티 중심 검색
- 키워드가 아닌 **엔티티(개념)**를 중심으로 검색
- 온톨로지의 클래스와 개념을 활용
4. 컨텍스트 풍부성
- 검색된 엔티티의 속성, 관계, 이웃 정보 모두 제공
- LLM이 충분한 컨텍스트로 고품질 답변 생성
온톨로지 기반 Graph RAG
온톨로지 정의
├─ 클래스 (Class): Product, Category, Person, ...
├─ 프로퍼티 (Property): name, price, rating, ...
└─ 관계 (Relationship): BELONGS_TO, RATED_BY, ...
↓
지식그래프 구축
├─ 인스턴스(노드) 생성
├─ 관계 연결
└─ 프로퍼티 값 저장
↓
Graph RAG 검색
├─ 쿼리 인식 (의도 파악)
├─ 관련 엔티티 조회 (Vector + Cypher)
├─ 컨텍스트 수집 (인접 노드 정보)
└─ 답변 생성
구현 예시
데이터: 영화 추천 그래프
노드: Movie, Genre, Actor, User
관계: BELONGS_TO, ACTED_IN, RATED, SIMILAR_TO
쿼리: “톰 행크스가 출연한 액션 영화 추천”
# 1. 벡터 검색: "톰 행크스" 엔티티 찾기
actor = vector_retriever.search("톰 행크스", top_k=1)
# 2. 그래프 탐색: 톰 행크스의 출연 영화 중 액션 영화 찾기
# MATCH (actor:Actor)-[r:ACTED_IN]->(movie:Movie)-[r2:BELONGS_TO]->(genre:Genre)
# WHERE actor.name = "Tom Hanks" AND genre.name = "Action"
# RETURN movie
# 3. 컨텍스트 수집: 영화의 평점, 유사 영화, 출연 배우 정보
# 4. LLM: 수집한 정보로 추천 설명 생성Graph RAG의 장점
✅ 높은 정확성: 관계 정보를 명시적으로 활용
✅ 이해 가능성 (Explainability): 검색 경로를 추적 가능
✅ 복잡한 쿼리: 다중 조건, 다중 홉 지원
✅ 의미론적 추론: 엔티티 간 관계로부터 새로운 지식 도출
✅ 확장성: 새로운 관계와 엔티티 추가 용이
실제 활용 사례
✅ 전자상거래 (t-커머스): 상품-카테고리-속성 기반 검색
✅ 제약/의료: 질병-증상-약물 관계 기반 진단 보조
✅ 학술 문헌: 저자-논문-인용 관계 기반 검색
✅ 지식 베이스: Wikipedia-like 지식그래프 기반 질문 응답
온톨로지 설계와의 연관성
Graph RAG는 온톨로지 설계의 최종 산물물이다:
- 온톨로지 정의 → 클래스, 프로퍼티, 관계 명시
- 지식그래프 구축 → 온톨로지 인스턴스화
- Graph RAG 구현 → 지식그래프 기반 검색 및 생성
관련 개념: Graph Database, RAG, Vector Retriever, Embedding