Graph RAG

Donghyun Kang·2024년 8월 25일

RAG

Retrieval-Augmented Generation (RAG)는 대형 언어 모델(LLM)의 한계를 보완하기 위해 개발된 기술로, 외부 지식 베이스를 참조하여 모델의 출력을 개선합니다. RAG는 "환각(hallucination)" 문제를 줄이고, 도메인 특화 지식의 부족 및 오래된 정보를 해결하는 데 효과적입니다. RAG의 핵심은 대형 텍스트 코퍼스를 동적으로 쿼리하여 관련 사실적 지식을 응답에 통합하는 것입니다. 이를 통해 응답의 맥락적 깊이를 풍부하게 하고, 사실적 정확성과 구체성을 보장합니다.

RAG & Vector DB

RAG에서 벡터 데이터베이스(Vector DB)는 텍스트 데이터를 벡터로 인코딩하여 유사한 정보를 빠르게 검색하는 데 사용됩니다. 벡터 기반 검색은 문서 간의 의미적 유사성을 측정하여 관련 정보를 찾는 방식으로, 대량의 데이터를 효율적으로 처리할 수 있습니다. 이러한 방식은 특히 대규모 데이터셋에서 빠른 검색이 필요한 경우에 유용합니다.

Graph RAG

이미 많은 데이터들이 embedding을 기반으로 vector DB화 되고 있는 상황에서,
Vector embedding 방식을 따르는 것이 아닌, 그래프 형태로 임베딩한 데이터를 기반으로 한 Graph RAG에 대한 활발한 연구가 이루어 지고 있습니다.

Reference

서베이 논문

개요

GraphRAG는 기존 RAG 시스템의 한계를 극복하기 위해 그래프 데이터베이스를 활용하는 새로운 접근 방식입니다. GraphRAG는 관계형 지식을 포착하고 활용하여 더 정확하고 맥락에 맞는 정보를 검색합니다. 그래프 데이터베이스는 노드와 엣지로 구성된 구조화된 데이터를 제공하며, 이는 복잡한 관계를 이해하고 처리하는 데 유리합니다.

GraphRAG 워크플로우

Graph-Based Indexing (G-Indexing), Graph-Guided Retrieval (G-Retrieval), Graph-Enhanced Generation (G-Generation)의 세 단계로 구성됩니다. 이 세 단계를 통해 GraphRAG는 그래프 데이터의 구조적 특성을 활용하여 기존 RAG 시스템보다 더 정확하고 맥락에 맞는 정보 검색 및 응답 생성을 가능하게 합니다.

Graph-Based Indexing (G-Indexing)

G-Indexing은 그래프 데이터를 효율적으로 검색 가능한 형태로 변환하는 단계입니다.

  • 목적: 대규모 그래프 데이터에서 빠르고 정확한 검색을 가능하게 합니다.
  • 방법:
    • 그래프 임베딩: 노드, 엣지, 서브그래프를 벡터 공간으로 매핑합니다.
    • 인덱스 구조 생성: KD-트리, LSH 등의 기법을 사용해 검색 가능한 구조를 만듭니다.
  • 특징: 그래프의 구조적 정보와 텍스트 속성을 모두 고려하여 인덱싱합니다.

아래는 Knowledge Graph 예시입니다.
Knowledge Graph 예시

Graph-Guided Retrieval (G-Retrieval)

G-Retrieval은 주어진 쿼리에 대해 관련성 높은 그래프 요소를 검색하는 단계입니다.

  • 목적: 쿼리와 가장 관련 있는 그래프 정보를 효과적으로 찾아냅니다.
  • 방법:
    • 쿼리 처리: 사용자 쿼리를 그래프 검색에 적합한 형태로 변환합니다.
    • 유사도 계산: 쿼리와 인덱싱된 그래프 요소 간의 유사도를 계산합니다.
    • 랭킹 및 선택: 유사도 기반으로 가장 관련 있는 그래프 요소를 선택합니다.
  • 특징: 단순 키워드 매칭을 넘어 그래프의 구조적 정보를 활용한 검색이 가능합니다.

Graph-Enhanced Generation (G-Generation)

G-Generation은 검색된 그래프 정보를 활용하여 최종 응답을 생성하는 단계입니다.

  • 목적: 검색된 그래프 정보를 바탕으로 정확하고 맥락에 맞는 응답을 생성합니다.
  • 방법:
    • 그래프-텍스트 변환: 검색된 그래프 요소를 언어 모델이 이해할 수 있는 텍스트 형태로 변환합니다.
    • 프롬프트 구성: 변환된 그래프 정보를 쿼리와 함께 프롬프트로 구성합니다.
    • 응답 생성: 구성된 프롬프트를 바탕으로 언어 모델이 최종 응답을 생성합니다.
  • 특징: 그래프의 구조적 정보를 활용하여 더 정확하고 맥락에 맞는 응답 생성이 가능합니다.

응용 분야

아래 응용 분야에서 Graph RAG는 복잡한 관계 정보를 효과적으로 활용하여 더 정확하고 맥락에 맞는 정보 검색 및 생성을 가능하게 합니다. 특히 단순한 텍스트 기반 검색으로는 포착하기 어려운 구조적 정보와 관계를 활용할 수 있다는 점에서 큰 강점을 가집니다.

지식 그래프 기반 질의응답 (KBQA)

Graph RAG는 복잡한 관계 정보를 포함하는 지식 그래프에서 효과적으로 정보를 추출하고 활용할 수 있습니다. 이는 단순한 사실 검색을 넘어 추론이 필요한 복잡한 질문에 대해서도 정확한 답변을 생성할 수 있게 합니다.

의료 및 생명과학 분야

의학 지식과 생물학적 관계는 복잡한 네트워크 구조를 가지고 있습니다. Graph RAG는 이러한 복잡한 관계를 모델링하고 활용하여 진단 지원, 약물 상호작용 분석, 유전자 네트워크 분석 등에 활용될 수 있습니다.

금융 및 리스크 분석

금융 거래, 기업 간 관계, 시장 동향 등은 그래프 구조로 표현될 수 있습니다. Graph RAG는 이러한 복잡한 금융 네트워크에서 패턴을 인식하고 리스크를 분석하는 데 효과적입니다.

추천 시스템

사용자-아이템 관계, 아이템 간 유사성 등을 그래프로 모델링할 수 있습니다. Graph RAG는 이러한 관계 정보를 활용하여 더 정확하고 맥락에 맞는 추천을 생성할 수 있습니다.

소셜 네트워크 분석

소셜 미디어 플랫폼의 사용자 관계와 상호작용은 본질적으로 그래프 구조입니다. Graph RAG는 이러한 네트워크에서 영향력 있는 사용자 식별, 커뮤니티 탐지, 정보 전파 분석 등에 활용될 수 있습니다.

학술 연구 및 인용 네트워크 분석

논문 간의 인용 관계는 그래프로 표현됩니다. Graph RAG는 이러한 인용 네트워크를 분석하여 연구 동향 파악, 핵심 논문 식별, 연구 영향력 평가 등에 활용될 수 있습니다.

Graph RAG vs Traditional RAG

Graph RAG의 장점

  • 구조화된 관계형 지식: GraphRAG는 벡터 기반 RAG 시스템에서 놓칠 수 있는 구조화된 관계형 지식을 포착하고 활용하는 데 뛰어납니다. 이를 통해 정보를 더 정확하고 맥락에 맞게 검색할 수 있습니다.
  • 복잡한 관계 처리: 그래프 데이터베이스를 사용함으로써 GraphRAG는 인용 네트워크나 지식 그래프와 같은 복잡한 관계를 효과적으로 관리할 수 있습니다.
  • 중복 감소: GraphRAG는 텍스트 데이터를 그래프 구조로 추상화하고 요약할 수 있어, RAG 시스템에서 자주 발생하는 "중간에서 길을 잃는" 문제를 완화하는 데 도움이 됩니다.

Graph RAG의 단점

  • 복잡성과 오버헤드: GraphRAG 구현은 그래프 구성, 인덱싱, 검색 프로세스로 인해 더 복잡합니다. 이로 인해 단순한 벡터 기반 시스템에 비해 계산 오버헤드가 높아질 수 있습니다.
  • 제한된 채택과 성숙도: GraphRAG는 비교적 새로운 접근 방식이기 때문에 벡터 기반 RAG 시스템만큼 널리 채택되거나 성숙하지 않을 수 있습니다. 이는 구현과 문제 해결을 위한 도구, 라이브러리, 커뮤니티 지원이 부족할 수 있음을 의미합니다.
  • 확장성 문제: 그래프 데이터베이스는 복잡한 관계를 처리할 수 있지만, 매우 큰 데이터셋을 다룰 때 효율적으로 확장하는 데 어려움을 겪을 수 있어 고수요 애플리케이션에서 성능에 영향을 미칠 수 있습니다.

결론

GraphRAG는 관계형 지식을 포착하고 복잡한 엔티티 관계를 처리하는 데 있어 상당한 이점을 제공하지만, 그 복잡성, 제한된 채택, 잠재적인 확장성 문제는 전통적인 벡터 데이터베이스 기반 RAG 시스템과 비교할 때 중요한 고려 사항입니다.

0개의 댓글