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는 온톨로지 설계의 최종 산물물이다:

  1. 온톨로지 정의 → 클래스, 프로퍼티, 관계 명시
  2. 지식그래프 구축 → 온톨로지 인스턴스화
  3. Graph RAG 구현 → 지식그래프 기반 검색 및 생성

관련 개념: Graph Database, RAG, Vector Retriever, Embedding

참고: neo4j-vector-retriever