AI 관련 뉴스나 논의의 한쪽 극단에는 ‘AI가 가져올 종말’이라든가 ‘AI가 인간을 대체할 거다’라는 등 비관적이긴 하지만 AI의 능력을 지나치게 과대평가하는 이야기가 있지만, 실제로는 가장 발전된 언어모델조차도 사물의 복잡한 관계성을 이해해서 추론해 내고 결론을 도출하는데 어려움을 겪는 경우가 부지기수인데요. 게다가 LLM을 현실에 적용하는데는 트레이닝이나 파인튜닝 등에 비용이 꽤나 많이 든다는 점도 LLM 도입에 고민이 되는 또 하나의 지점일 겁니다.

LLM 어플리케이션의 ‘사실상 표준 (de facto Standard)’ 아키텍처 중 하나라고 할 수 있는 RAG (영문 아티클)의 최신 확장판 쯤이라고 할 수 있을, Graph RAG (Retrieval Augmented Generation)은 위 두 가지 문제 - 사물의 관계성을 기반으로 한 추론, 그리고 비용 - 를 비교적 덜어내 주는 방식이라고 할 수 있을 텐데요. AI 기술자가 아니라 하더라도 Graph RAG (RAG 도 같이요)에 대한 내용을 알아두신다면 좋을 것 같습니다. 한 번 같이 살펴볼까요?

오늘 에피소드에서는 아래의 내용을 다뤄보겠습니다:

  • 원래의 RAG - 기본 먼저 알아봅시다

  • RAG도 완벽하지는 않죠 - RAG의 한계

  • Graph RAG이 등장하다

  • Graph RAG이 주는 이점을 정리하면 뭔가요?

  • 용어 정리 한 번: ‘Graph RAG’과 ‘Knowledge Graph RAG’

  • 보너스

원래의 RAG - 기본 먼저 알아봅시다

RAG의 핵심 개념을 간단히 먼저 살펴볼까요? ‘Retrieval Augmented Generation’이라고, 단어는 조금 어려울 수 있지만, 개념적으로는 단순합니다. 사용자의 질문을 잘 해석해서, 관련된 정보를 잘 가져와서, Context로 가공을 한 다음에 답변에 유용한 정보를 전달할 수 있도록 하는, LLM 어플리케이션에 중요하게 쓰이는 구조다 정도로 생각하면 되겠습니다.

RAG이라는 접근 방식을 사용하면, 파인튜닝을 하지 않고도 이전에는 없었던 데이터를 LLM 어플리케이션에서 사용할 수 있습니다. RAG을 설정할 때 데이터는 외부의 DB내에 벡터 형태로 저장됩니다. LLM은 RAG를 사용해서 필요한 정보를 검색하고, 검색 내용을 기반으로 사용자의 질문에 대한 답변을 제공하죠.

RAG는, 파인튜닝을 중심으로 하는 접근 방법의 핵심적인 문제 - 데이터가 업데이트 될 때마다 다시 파인튜닝을 해야 한다는 것 - 를 피할 수 있게 해 줘서, 자원을 절약하는 동시에 외부 DB를 통해서 다이나믹하게 데이터를 활용하고 통제할 수 있도록 해 줍니다.

RAG도 완벽하지는 않죠 - RAG의 한계

RAG에서는 데이터를 검색할 때 ‘벡터 유사도 (Vector Similarity)’ 개념을 사용합니다. 널리 사용되기도 하고 훌륭한 기술이긴 하지만, 벡터 유사도의 특성 상 그 한계가 또 명확합니다.

트랜스포머 (Transformer)를 살펴보신 분이라면 아마 벡터 또는 ‘단어 임베딩 (Word Embedding)’ 개념을 기억하실 수 있는데요. 임베딩은 보통 NLP에서 사용되는 용어로, ‘의미적, 그리고 구문적인 관계를 표현’하는, 단어를 아주 밀도높게 표현한 벡터라고 할 수 있습니다. 단어가 벡터 공간의 한 점으로 표현될 때, 언어모델이 단어 간의 의미적 유사도를 정량화해서 관계를 학습할 수 있는 것이죠.

벡터 유사도 (Vector Similarity)는 ‘관계’를 측정하는 하나의 방법이자 측정값으로, 유클리드 거리 (Euclidean Distance), 코사인 유사도 (Cosine Similarity), 내적 유사도 (Dot Product Similarity) 등의 방법으로 계산합니다. 이 각각이 고유한 장단점이 물론 있죠. 그런데 벡터 유사도의 ‘유사도’ 계산 기준이 단순히 ‘사용자의 질문’이예요. 그러면, 상상하실 수 있겠지만, 다양한 정보를 결합해야 하거나, 하나의 문서에 답이 명확히 존재하지 않는 경우에는 한계가 있을 수 밖에 없죠.

Graph RAG이 등장하다

Graph RAG 구조는 2024년 4월 마이크로소프트의 연구원이 발표했습니다. 원래의 RAG과 다르게, Graph RAG은 데이터를 텍스트 데이터와 그 상관관계를 나타낼 수 있는 ‘그래프 구조’로 구성합니다.

Graph RAG을 만든 사람들이 하는 이야기를 한 번 들어보시죠:

RAG는 “이 데이터셋의 주요 테마는 무엇이냐?” 등과 같이 전체 텍스트 뭉치를 대상으로 하는 전역적 질문 (Global Question)에는 잘 작동하지 않습니다. 왜냐하면, 이런 질문은 본질적으로 명시적인 검색 작업이 아니라 ‘질의 중심 요약 (QFS: Query Focused Summarization)’ 작업이기 때문이예요.

From Local to Global: A Graph RAG Approach to QFS

그리고, 이전에 사용하던 QFS 방법들은 일반적으로 RAG 시스템에서 색인하는 텍스트의 양에 맞도록 확장하기가 힘듧니다. Graph RAG 방식은 이렇게 더 복잡한 질의에 대한 응답을 생성해 내는 시스템을 위한 효과적인 구조입니다.

Graph RAG은 다음과 같이 작동합니다:

  1. 소스 문서 → 텍스트 청크: 외부 DB의 원시 텍스트를 먼저 관리하기 쉬운 작은 청크로 분할합니다.

  2. 텍스트 청크 → 요소 인스턴스: Graph RAG가 DB 내용에 해당하는 도메인에 맞춰 조정된 LLM과 프롬프트를 사용해서, 각 텍스트 청크에서 사람, 장소, 조직 및 관계등의 엔티티를 식별하고 추출합니다.

  3. 요소 인스턴스 → 요소 요약: 또 다른 LLM 프롬프트셋으로 각 엔티티와 관계에 대한 짧은 설명을 생성해서 초기의 원시 텍스트 데이터를 요약합니다.

  4. 요소 요약 → 그래프 커뮤니티: 요약된 엔티티와 관계를 사용해서, 노드가 엔티티를, 엣지가 관계를 나타내는 지식 그래프 (Knowledge Graph)를 구성합니다. 다음으로, Leiden Algorithm과 같은 커뮤니티 탐지 알고리즘을 적용, 밀접한 관련성을 가진 노드들의 커뮤니티를 식별합니다.

  5. 그래프 커뮤니티 → 커뮤니티 요약: 그런 다음, 탐지된 각 커뮤니티를 요약해서 해당 커뮤니티가 나타내는 주제와 정보에 대한 종합적인 개요를 생성합니다.

  6. 커뮤니티 요약 → 커뮤니티 답변 → 글로벌 답변: 사용자가 질문을 보내면:

    1. 우선, 해당되는 컨텐츠 및 질문과의 관련성에 기반해서 특정한 커뮤니티 요약(들)을 찾아냅니다.

    2. LLM을 사용해서 각각의 커뮤니티 요약을 가지고 중간 답변을 생성합니다.

    3. 그 다음으로, 중간 답변을 취합, 관련성 및 유용성을 평가 - 평가 작업을 LLM으로 하기도 합니다 - 한 후, 최종적으로 전역적인 답변을 종합해서 사용자에게 보냅니다.

‘그래프 기반의 인덱싱’과 ‘커뮤니티 중심의 요약 기능’을 갖춘 Graph RAG는 QFS (질의 중심의 요약) 기능을 대규모로 처리할 수 있는, RAG 시스템의 유용성을 확대하는 새로운 구조라고 할 수 있겠습니다.

Graph RAG이 주는 이점을 정리하면 뭔가요?

Graph RAG을 사용하면 얻을 수 있는 이점은 다음과 같습니다:

  • 관련성 (Relevance) 개선: Graph RAG는 데이터를 지식 그래프로 구조화해서 사용자의 질문과 가장 관련성이 높은 정보 클러스터를 식별하도록 해 줍니다.

  • 효율성 (Efficiency): Graph RAG는 그래프 구조를 기반으로 데이터의 관련 일부분을 검색합니다. 따라서 모든 질문에 대해 전체 데이터셋을 처리하는 경우에 비교하면 계산을 위한 작업량이 줄어듭니다.

  • 종합적인 응답 (Comprehensive Responses): Graph RAG은 여러 개의 문서에서 정보를 추출하고 종합할 수 있으니, 단일 문서에서 찾아내는 답변보다 더 많은 정보를 제공하는, 더 균형있고 맥락이 풍부한 답변을 생성할 수 있습니다.

  • 확장성 (Scalability): 그래프 기반 구조를 활용해서 대규모의 데이터셋을 효율적으로 처리할 수 있기 때문에, 규모가 큰 정보 저장소에 활용할 때 확장이 용이합니다.

  • 동적인 학습 (Dynamic Learning): 그래프에 더 많은 데이터가 추가되거나 업데이트될 때 Graph RAG는 응답을 조정하고 개선할 수 있기 때문에, 계속해서 변화하거나 진화하는 데이터셋에 적합합니다.

용어 정리 한 번: ‘Graph RAG’과 ‘Knowledge Graph RAG’

‘Graph RAG’과 ‘Knowledge Graph RAG’ 이 두 가지 용어가 종종 혼용되는데요. 둘 다 ‘지식 그래프’를 사용해서 AI 응답의 정확성, 관련성을 향상시키는 RAG 접근 방식을 의미합니다. 실제로, 검색용으로 그래프 구조를 활용하는 대부분의 RAG 시스템은, 명시적인 분류는 그렇지 않다 하더라도 본질적으로는 어떤 형태로든 ‘지식 그래프’를 사용하는 셈입니다. 이 둘 사이의 차이가 있다고 하면, 사용하는 그래프 표현의 정교함이나 형식적인 측면 정도가 있겠습니다.

보너스

오리지널 링크

Graph RAG은 앞서 말씀드린대로 2024년 4월 발표되었고 바로 얼마 전 2024년 7월 초 GitHub에 오픈소스 프로젝트로 공개되었습니다.

기타 자료

읽어주셔서 감사합니다. 친구와 동료 분들에게도 뉴스레터 추천해 주세요!

Reply

Avatar

or to participate

Keep Reading