Summary

Vector Retriever 기반 RAG의 한계(텍스트 유사도 의존)를 극복하고, LLM이 자동으로 Cypher 쿼리를 생성하는 Text2Cypher Retriever를 통해 더 정확한 Graph RAG를 구현하는 심화 튜토리얼. 질문의 의도를 파악한 구조화 쿼리로 환각 현상이 없는 신뢰성 높은 답변 생성.

Key Claims

  • Vector Retriever의 한계: 텍스트 유사도에만 의존하므로 특정 단어가 없으면 검색 실패
  • Text2Cypher의 강점: 사용자 질문 → LLM이 Cypher 쿼리 자동 생성 → DB 실행 → 구조화 결과
  • 질문 의도 인식: “로맨스 영화” 검색 시 줄거리의 “romance” 단어 여부와 무관하게 장르 필터링 가능
  • 환각 제거: 검색 결과 기반 답변이므로 LLM의 거짓 정보 생성 불가능
  • Cypher 자동 생성의 핵심: DB 스키마 정보 + 질문-쿼리 예시 제공 → 높은 정확도 달성

Key Concepts Introduced

  1. Text2Cypher Retriever: LLM을 사용하여 자연어 질문을 Cypher 쿼리로 변환
  2. DB 스키마 정보: 노드 타입, 프로퍼티, 관계를 LLM에 제공하는 구조화 텍스트
  3. 예시 기반 학습: Few-shot learning으로 LLM의 쿼리 생성 정확도 향상
  4. Graph RAG 프로세스: Vector Retriever vs Text2Cypher의 정확도 비교

Implementation Flow

사용자 질문
  ↓
[Text2Cypher Retriever]
├─ DB 스키마 참조
├─ 예시 쿼리 참조
├─ LLM이 Cypher 쿼리 생성
  ↓
[Neo4j 실행]
  ↓
[구조화 결과]
  ↓
[Graph RAG]
├─ 검색 결과 + 질문 → 프롬프트
├─ LLM 답변 생성
  ↓
[최종 답변]

Key Quotes

“벡터 유사도 검색 기반의 리트리버뿐만 아니라 오늘은 사이퍼 쿼리를 자동으로 생성해 주는 텍스트 투 사이퍼 리트리버를 활용해서 래그를 구현해 볼 거”

“질문의 의도를 파악해서 그 사용자가 필요로 하는 걸 가지고 있는 데이터라면 모두 대상이 되어서 LM 참조를 할 수 있게끔 환경이 만들어지는 거”

“창조적인 답변이나 어떤 화려한 답변을 원하는 것이 아니라 실제로 정말 정확한 정보만을 전달해야 하는 상황이라면 이 그래프 디비를 활용한 그래프 래그 방식이 정말 필요하다”

Connections

Entities

Concepts

Vector vs Text2Cypher Comparison

Vector Retriever

  • 검색: 임베딩 벡터 유사도
  • 의도: 암시적 (단어 유사도)
  • 정확도: 중간
  • 문제: 특정 단어 부재 시 검색 실패

Text2Cypher Retriever

  • 검색: LLM 생성 Cypher 쿼리 실행
  • 의도: 명시적 (쿼리 구조)
  • 정확도: 높음
  • 장점: 의도 기반 검색, 환각 없음

Real-World Examples

예제 1: 배우 검색

MATCH (actor:Actor)-[r:ACTED_IN]->(movie:Movie)
WHERE actor.name = "Tom Hanks"
RETURN movie.title

→ 단순한 속성 필터링으로 정확한 결과

예제 2: 장르 필터링

MATCH (movie:Movie)-[r:BELONGS_TO]->(genre:Genre)
WHERE genre.name = "Comedy"
RETURN movie.title
LIMIT 5

→ 줄거리에 “comedy” 단어가 없어도 검색 가능

예제 3: 복합 집계

MATCH (genre:Genre)<-[r1:BELONGS_TO]-(movie:Movie)<-[r2:RATED]-(user:User)
WHERE genre.name = "Romance"
RETURN movie.title, COUNT(user) AS review_count
ORDER BY review_count DESC
LIMIT 5

→ 다중 홉 및 집계 쿼리 자동 생성

Technical Highlights

DB 스키마 추출 함수

  • 노드의 프로퍼티 + 타입 자동 추출
  • 관계의 방향성 + 프로퍼티 추출
  • 딕셔너리 → 구조화 텍스트 변환

프롬프트 템플릿 (Text2Cypher)

"Neo4j 그래프 DB 스키마를 사용하여 Cypher 쿼리를 생성하세요"
[DB 스키마 정보]
[질문-쿼리 예시]
[사용자 질문]

할루시네이션 방지

  • 스키마에 없는 프로퍼티/관계 사용 금지
  • 결과는 순수 Cypher만 반환

Project Relevance

온톨로지 → 지식그래프 → Graph RAG 완전체:

  • 온톨로지 = DB 스키마
  • 지식그래프 = 인스턴스 저장
  • Text2Cypher = 자동 쿼리 생성
  • 답변 = 신뢰성 높은 출력

인정: YouTube 공원나연 채널 | 녹화본 요약 및 개념 추출