brunch

You can make anything
by writing

C.S.Lewis

by 최재철 Jun 13. 2024

기존RAG 한계극복. GraphRAG란?

기존 벡터기반의 RAG 한계점을 보완하기 위해 지식그래프기반의 RAG 점차 활용되고 있습니다. 

일반적인 벡터검색을 기반한 RAG (Retrieval Augmented Generation, 검색 확장 생성) 보다 경우에 따라 엔티티간의 관계를 따라 가다보면 더 정확하고 상세한 답변에 도달 할 수 있습니다.


지식 그래프(Knowledge Graph)란 무엇인가요?

엔티티(또는 노드)와 엔티티간의 관계를 표현한 것을 Knowledge Graph라고 합니다. 지식 그래프는 문제를 보다 다각도에 찾고자 하는 방법이기도 합니다. 

왜냐하면, 세상의 모든 것이 상호 연결되어 있기 때문에 하나의 문제가 다른 문제에 크고 작은 영향을 미칠 수 있다는 것입니다. 나비효과 라는 단어처럼, 세상의 작은 움직임이 먼 나라에 영향을 줄 수 있는 것과 마찬가지입니다. 

보다 쉽게 설명하기 위해 작품(영화, 드라마)이나 배우의 정보를 정리한 아래 그림과 같은 간단한 지식그래프를 예로 소개하겠습니다.


출처 : https://acet.pe.kr/969


"짐케리" 라는 영화 배우에 대해 " 짐케리 영화배우의 캐릭터는 어디서 파생된 것인가?" 라고 질문하는 경우, 그 배우의 속성(생년월일, 출생지, 성격 등) 뿐만 아니라, 그 배우가 출연한 작품들(영화, 프로그램)이나,  공동 출연한 출연자의 정보등도 함께 살펴봄으로써, 보다 상세하게 그 질문에 대답될지도 모릅니다. 매우 단순한 예시이지만, 이처럼 방대한 엔티티와 다양한 관계성을 사용해서 대답을 찾아가는 것이 지식그래프입니다. 


왜 필요한가요?

출처 : https://bitnine.tistory.com/508

이는 또한 다양한 방식으로 도움이 될 수 있습니다.  

향상된 정보 검색 : Google은 지식 그래프를 통해 '레오나르도 다빈치'를 예술가이자 발명가로 식별하는 등 개체 간의 관계를 이해하여 복잡한 쿼리에 대한 정확한 답변을 제공할 수 있었습니다.


더 나은 추천 및 인사이트 : Netflix는 지식 그래프를 사용하여 장르, 배우, 테마 등 영화에 대한 메타데이터와 사용자 선호도를 연결하여 영화를 추천합니다.


AI 및 기계 학습 촉진 : Amazon의 Alexa는 지식 그래프를 활용하여 단어와 구문을 관련 개념 및 작업에 연결함으로써 사용자 요청을 정확하게 이해하고 응답합니다.


지식 관리 및 공유 : IBM은 지식 그래프를 사용하여 조직 전체에서 전문 지식을 통합하고 공유하므로 직원이 내부 리소스와 통찰력을 빠르게 찾고 활용할 수 있습니다.


Graph RAG

아래 그림은 LangChain이 공개된 GraphRAG의 처리 흐름입니다.

LangChain 에서 공개한 하이브리드(벡터 + 키워드)와 그래프 검색 방법을 결합한 흐름도

(*위의 그림에 대한 자세한 것은 아래 참고자료 링크에서 확인 해주세요)

랭체인에서 기존 벡터RAG 와 지식그래프를 함께 쓸 수 있도록 하이브리드 방식을 제안했습니다. 현재는 이 구조가 가장 많이 사용되는 형태이기도 합니다. 


VectorRAG  vs GraphRAG

Microsoft는 최근 RAG와 GraphRAG를 비교하는 연구 보고서를 발표했습니다.

VectorRAG 와 GraphRAG  중에서 선택하는 것은 작업의 특정 요구 사항과 특성에 따라 다릅니다. 

일반적으로 고려해야 할 몇 가지 요소는 다음과 같습니다.


[Case #1  : VectorRAG를  해야 하는 경우 ]

구조화되지 않은 데이터: 벡터 데이터베이스는 텍스트, 이미지 또는 오디오와 같은 대량의 구조화되지 않은 데이터를 처리할 때 이상적입니다. 이러한 데이터의 의미론적 의미를 포착하는 데 특히 효과적입니다.

확장성 및 속도: 대규모 데이터 세트에서 높은 확장성과 빠른 검색이 필요한 애플리케이션의 경우 벡터 데이터베이스가 더 적합합니다. 벡터 유사성을 기반으로 관련 정보를 빠르게 가져올 수 있습니다.

기계 학습 모델과의 통합: 벡터 데이터베이스는 기계 학습 모델, 특히 데이터의 임베딩 또는 벡터 표현에서 작동하는 모델과 함께 사용되는 경우가 많습니다.


[Case #2  : GraphRAG를  해야 하는 경우 ]

구조화된 데이터 및 관계: 구조화된 데이터 엔터티 간의 복잡한 관계를 관리하고 활용해야 하는 경우 지식그래프를 사용합니다. 지식 그래프는 데이터 포인트 간의 상호 연결이 데이터 포인트 만큼, 연결정보가 중요한 시나리오에 탁월합니다.

도메인별 애플리케이션: 심층적인 도메인별 지식이 필요한 애플리케이션의 경우 지식그래프가 특히 유용할 수 있습니다. 의학, 법률, 공학과 같은 분야의 전문 지식을 효과적으로 표현할 수 있습니다.

데이터 무결성 및 일관성: 는 지식그래프 데이터 무결성을 유지하며 데이터 표현의 일관성이 중요한 경우에 적합합니다.


[Case #3 : 하이브리드 (VectorRAG + GraphRAG)를  해야 하는 경우 ]

어떤 경우에는 두 가지 접근 방식을 결합하는 것이 도움이 될 수 있습니다. 예를 들어, 지식 그래프를 사용하여 구조화된 도메인별 지식을 유지하고 벡터 데이터베이스를 사용하여 구조화되지 않은 데이터를 처리하고 기계 학습 모델을 활용할 수 있습니다. 이 하이브리드 접근 방식은 지식그래프에 대한 심층적이고 구조화된 이해와 벡터 데이터베이스의 유연성 및 확장성을 모두 제공할 수 있습니다.


관련 제품들

네오4j


설명 : 대규모 그래프 분석 및 데이터 시각화를 지원하는 확장성이 뛰어난 그래프 데이터베이스입니다.

기능 : Cypher 쿼리 언어, 내장된 시각화 도구 및 강력한 커뮤니티 지원.


아마존 Neptune  


설명 : RDF 및 속성 그래프 모델을 모두 지원하는 AWS의 완전 관리형 그래프 데이터베이스 서비스입니다.

특징 : AWS 서비스와의 통합, 고가용성 및 확장성.


Google 지식 그래프  


설명 : 의미론적 정보로 검색 결과를 향상시키는 데 사용되는 Google의 독점 지식 그래프입니다.

기능 : 대규모 확장, Google 검색과 통합, Knowledge Graph Search API를 통한 API 액세스.


마무리...

GraphRAG는 정보의 연관성과 의미적 이해 능력을 향상시킬 것으로 기대할 수 있지만, 데이터 세트에서의 추출과 Knowledge Graph 구조가 정확도에 큰 영향을 미친다고 생각합니다. 예를 들어 같은 의미를 가리키는 말이라도 말이 다르면 그래프의 구조는 바뀌어 버려 정확한 응답을 얻을 수 없게 될 가능성도 있습니다.

그렇지만 목적에 맞게 그래프의 구조를 명확하게 한다면 오히려 실제 기업현장에서도 충분히 사용가능하다고 생각합니다. 이상 간단하게나마 Knowledge Graph와 GraphRAG에 대해서 살펴보았습니다. 



참고 자료 

https://blog.langchain.dev/enhancing-rag-based-applications-accuracy-by-constructing-and-leveraging-knowledge-graphs/

https://post.naver.com/viewer/postView.nhn?volumeNo=30841563&memberNo=36733075

https://medium.com/@ahmedbehairy/rag-vector-databases-vs-knowledge-graphs-f22697b1a940


작가의 이전글 RAG 시스템을 위한 주요 청킹 방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari