비밀번호

커뮤니티2

데이터 엔지니어링데이터 엔지니어링

RAG? Vector RAG? Graph RAG?

Graph RAG는 RAG [ Retrieval Augmented Generation]의 방법입니다.

 

Screenshot 2024-06-26 at 12.32.58 PM.png

 

Graph RAG를 설명하기 전에 RAG가 무엇인지 간단하게 설명을 드리자면, 

최근 Chat GPT와 같이 대규모 언어 모델을 통한 서비스가 개발되고 있는데, 이 모델들의 단점은 학습되어 있는 정보를 바탕으로 결과를 나타낸다는 것입니다.

 

한 예로, 최근 발표된 gpt-4o의 모델은 2023년 10월 까지의 데이터를 사용하였다는 의미입니다.

최근에는 Chat GPT에 인터넷에서의 정보를 가져오는 기능이 포함되어 2023년 10월 이후의 데이터에 대한 정확도를 어느정도 확보 하였지만, 이 기능이 있기전 까지는 정확한 정보를 가져오는것이 불가능했습니다.

 

그렇기 때문에 각 특정분야에서는 대규모 언어모델을 자신들의 데이터로 학습하여 데이터에 대한 정보를 주입하는 방법을 사용했습니다. 그러나 이런 Fine-Tunning 방식은 데이터를 준비하고, 데이터의 품질 검사 및 학습에 소요되는 시간, 비용을 생각하면 소규모 조직에서는 득보다는 실이 많은 상황이 많습니다.

 

이런 방식을 최소화 하기 위해서, RAG라는 방법론이 2021년 Facebook AI를 통해 연구되었습니다.

https://arxiv.org/pdf/2005.11401

 

해당 방법은 다양한 문서들에 대해서 검색 및 색인을 할수 있도록 하며, 해당 문서는 대규모 언어모델과도 연동이 되어야 하는 방법입니다.

 

 

 RAG와 관련되어서 더 자세한 글은 여기에서 더 확인해보실수 있습니다.

 

그렇다면 Graph RAG는 무엇인가라면, 기존의 RAG는 문서의 Embedding Vector를 통해 Query와의 유사성을 연산하였다면, Graph RAG는 Knowledge Graph를 추가적으로 이용한다는 것입니다.

 

Knowledge Graph (지식 그래프)는 " (노드) - [관계] -> (노드) " 의 형태를 가지는 그래프입니다.

 

한 예시로, "플러스제로는 서울의 강남에 위치한 데이터 마케팅 회사입니다" 라는 문장에서

 

(플러스제로) - [위치해 있다] - (강남)

(플러스제로) - [일을 한다] - (데이터 마케팅)

(플러스제로) - [is] - (회사)

(강남) - [Entity] - (위치)

등등 다양한 정보를 그래프로 나타낼수 있습니다

소괄호  ( ) 안에 있는 단어는 명사 같은 노드를, 중괄호[ ] 는 노드끼리의 관계를 나타냅니다.

 

Screenshot 2024-06-26 at 12.18.30 PM.png

[이미지 출처 : Neo4j]

 

다양한 문서들에 대해서 이러한 Knowledge Graph를 만들게 되면 아래와 같이 데이터들의 관계를 나타낼수 있습니다.

 

visualisation.png

 

해당 그래프에는 문서의 노드와 관계 뿐만 아니라 문서 자체도 포함되어 있습니다.

 

이렇게 데이터화가 되었다면, Graph RAG는 Embedding Vector의 유사성 뿐만 아니라, Query에서 중요한 단어에 대해서 Graph Query를 통해 연관된 노드들과 관계를 찾아서 해당 정보를 가져옵니다.

 

1. Graph Query를 통해 나온 노드들의 연관관계와 2. Query의 embedding vector와 유사도가 높은 문서의 정보

를 바탕으로 대규모 언어모델은 사용자가 질의한 내용에 대해서 답변하도록 합니다.

 

Graph RAG방식은 문서와 질의의 유사성과 질의에 포함되어 있는 중요 단어 및 관계에 대한 정보를 더 잘 유추할수 있기에 기존의  Vector RAG보다 성능이 좋다는 연구가 있습니다.

 

Graph RAG에 대해 더 알고 싶으시다면,  2024년에 마이크로소프트에서 연구한 블로그를 한번 보시는것도 도움이 될수 있습니다.

 

감사합니다.

 

전체댓글0

1 2