• Turing Post Korea
  • Posts
  • Topic #12: 'Hybrid RAG'은 무엇인가?

Topic #12: 'Hybrid RAG'은 무엇인가?

VectorRAG과 GraphRAG을 결합한 HybridRAG 작동방식과 적용 사례 및 가능성

글을 시작하며

이 글을 보시는 분들 중 어떤 분은, “또 다른 RAG이야?” 하실지도 모르겠습니다. 튜링 포스트 코리아에서도 이미 몇 차례 아래와 같이 RAG 접근법과 그 변형에 대해서 다룬 적이 있었으니, 어찌보면 당연한 반응이라고 할 수도 있을 것 같아요:

RAG는 외부의 지식을 활용해서 LLM의 답변 성능을 향상시키는 방법 중에 가장 인기있는 방법이라고 할 만큼 광범위하게 활용되고 있고, 또 여러 가지 방향으로 계속해서 개선, 확장되고 있습니다.

그렇지만, 금융 같은 특정한 도메인에서, 전문적인 용어도 많고 문서 형식도 복잡한 환경에서 오리지널 RAG 기법을 가지고 잘 작동하는 LLM 어플리케이션을 만드는 건 쉽지만은 않습니다. 이런 경우에 검토해 볼 수 있는 하나의 해결책으로, HybridRAG이라는 접근 방법이 논의되고 있는데요. 결국은 적절한 외부 정보를 가져오는 과정에서 ‘유사성 기반 (VectorRAG)’의 방법과 ‘구조화된 관계 기반 (GraphRAG)’의 방법 두 가지를 결합해서, 더 정확하면서도 풍부한 맥락의 답변을 얻겠다는 접근법입니다.

종합적으로 테스트를 해 본 결과, HybridRAG는 데이터의 형식, 관계가 모두 중요한 ‘금융’ 같은 분야에서 특히 유용한 것으로 나타났어요. 물론 금융 말고 다른 분야에서도 유용성이 있을 것으로 생각됩니다.

자, 과연 HybridRAG이 여러분이 LLM 어플리케이션을 구축할 때 고민하게 될 문제의 해결책이 될 수 있을지 알아볼까요?

이 글은 아래 목차로 구성되어 있습니다:

금융 도메인에서 LLM과 기존 RAG 시스템의 한계

금융 산업에서는, 시장 예측, 투자 의사결정 등 다양한 작업을 위해서 뉴스 기사, 수익 보고서, 거래소 자료 등 다양한 출처의 정보를 활용합니다. 이런 여러가지 정보들 중 상당수는 아주 잘 정리되지 않은 상태이기도 하고, 정형화되어 있지 않은 경우도 많아서, 이럴 때는 전통적인 분석 방법으로는 이해하기가 어렵죠.

기본적으로 LLM은 트렌드 예측이나 보고서 작성 등을 위해서 대량의 데이터를 처리하는데 도움이 되는 기술이지만, 하지만 도메인의 전문 용어가 많고 데이터의 구조가 복잡한 경우에는 대부분 LLM 만으로는 제대로 처리가 힘듧니다. 우리가 보통 RAG이라고 부르는 VectorRAG이 이런 ‘LLM의 한계’를 해결하는 하나의 방법이죠. 핵심은 ‘외부 DB에서 유사한 텍스트 청크 (Chunk)를 검색, 답변을 생성하는데 사용할 컨텍스트를 제공’하는 겁니다. 장점이 많지만, VectorRAG는 데이터를 그냥 하나의 청크로 인식할 뿐, 그 안에 데이터의 구조, 관계를 파악하는 것은 잘 하지 못합니다.

여기서, 데이터를 엔티티와 그 관계로 구성하기 위해서 지식 그래프 (Knowledge Graph)를 사용하는 GraphRAG이 등장하죠. GraphRAG는 대규모 데이터셋의 지식 그래프를 구축하거나 유지 관리하는 작업을 더 간소화하고 더 정확한 답변을 얻을 수 있도록 하기 위해서 RAG와 결합한 형태입니다. 그렇지만 여기에도, 관련된 엔티티를 직접 언급하지 않는 질문에 대해서는 잘 작동하지 않는 한계가 있습니다.

…그렇다면, (Vector)RAG와 GraphRAG를 결합한다면, 어떻게 될까요?

HybridRAG 작동 방식, 성능과 장점

기존에 사용하던 방법들이 한계에 부딪힐 때, 흔히 시도하게 되는 전형적인 전략 중의 하나가, ‘여러 가지 방법들의 장점을 합쳐보는’ 것이죠. ‘엔비디아’와 ‘블랙록’의 연구자들이 함께 한 작업이 바로 이건데요. VectorRAG와 GraphRAG를 결합해서, 텍스트 데이터베이스와 지식 그래프 모두에서 관련 정보를 가져와서 더 나은 답변을 효율적으로 만드는 시도를 했습니다.

이 방법에다가 ‘HybridRAG’라는 이름을 붙이고, ‘HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information Extraction’이라는 긴 이름의 논문을 지난 8월에 발표했습니다. 이 방법을 금융 도메인의 문서와 정보에 적용해서 좋은 결과를 얻었는데요, 한 번 그 내용을 살펴보죠.

HybridRAG의 작동방식

일단, HybridRAG의 각 부분이 어떻게 작동하는지 보고, 두 가지 방식을 결합한 HybridRAG가 전체적으로 어떻게 움직이는지 살펴보겠습니다.

VectorRAG

외부 문서의 정보를 가져와서 언어 모델에 이미 존재하는 지식과 결합하여 작동하는 VectorRAG. 아래 그림을 참조하면 이해가 쉬울 것 같습니다:

Image Credit: VectorRAG, HybridRAG 논문

  1. 질의 (Query): 사용자가 질문을 하거나 검색을 합니다.

  2. 검색 (Search): 시스템이 모델의 사전 훈련에 사용하지 않았던 외부 문서들을 벡터 데이터베이스에서 찾습니다. 이 벡터 데이터베이스는 외부 문서들을 작은 청크 (Chunk)로 나눠서 나중에 찾기 쉽게 저장해 놓은 저장소라고 보시면 되겠습니다.

  3. 데이터 청크 처리 (Processing Chunks): 사용자가 입력한 질의나 검색 내용과 가장 유사한 텍스트 청크를 찾아 가져옵니다.

  4. 응답 생성 (Generating Response): 언어모델이 이 청크와 원래 내부에 있는 지식을 결합해서 응답을 만들어냅니다.

VectorRAG는 외부의 정보를 검색하고 가져와서, 더 최신의, 더 질문과 관련성이 높은 최종 응답을 할 수 있습니다. 이렇게 검색한 ‘컨텍스트’ 정보가, 모델이 학습된 정보만을 가지고 응답을 해야 할 때보다 더 상세하고 정확한 답변을 제공하는데 도움이 됩니다.

GraphRAG

GraphRAG 역시 VectorRAG과 유사하게 작동하는데, 단 텍스트 기반의 문서가 아니라 지식 그래프 (Knowledge Graph)를 검색해서 정보를 가져온다는 점이 차이가 있습니다. 아래 그림에서 어떻게 작동하는지 한 번 보시죠:

Image Credit: GraphRAG HybridRAG 논문

  1. 질의: 시스템에서 사용자의 질문을 받습니다.

  2. 지식 그래프 검색: 시스템이 ‘지식 그래프’의 노드와 엣지를 따라가면서 검색합니다.

  3. 서브 그래프 생성: 질의에 맞는 내용을 담은 지식 그래프의 일부를 서브 그래프로 검색, 추출합니다.

  4. 컨텍스트 전달, 응답 생성: 추출된 서브 그래프를 언어 모델이 이해할 수 있는 형태로 처리, 인코딩해서 전달하고, 모델은 내재된 지식과 결합해서 더 정확하고 맥락에 맞는 응답을 생성해 냅니다.

만약에 질의가 어떤 특정한 엔티티 (예: 특정한 회사)에 대한 질의인 경우, 추가적으로 메타 데이터를 사용해서 정보를 필터링하고, 관련된 부분만 검색하여 정확하고 집중된 답변이 나올 수 있게 합니다.

GraphRAG는 지식 그래프의 구조화된 데이터를 사용해서, 순수하게 텍스트를 기반으로 검색하는 시스템에 비해 더 정확하고 잘 정리된, 검증 가능한 정보에 기반한 답변을 제공합니다.

HybridRAG

HybridRAG는 이 두 가지 방법, 즉 VectorRAG와 GraphRAG를 결합해서 ‘정보를 검색하고 활용하는 방식을 개선’합니다. 작동 과정은 다음과 같습니다:

  1. 각 기법의 결합:

    • VectorRAG는 ‘텍스트의 유사성’을 바탕으로 정보를 검색하고 추출하는데, 이렇게 해서 좀 넓은 범위의 컨텍스트를 제공하게 됩니다.

    • GraphRAG는 지식 그래프로부터 구조화된 정보를 끌어오는데, 이 정보에 포함된 엔티티와 그 관계 정보를 유지하면서 가져옵니다.

  2. 최종 응답의 생성:

    • 두 가지 기법을 통해서 추출된 텍스트 기반의 자료, 구조화된 정보를 모두 컨텍스트로 활용해서, 더 정확하고 맥락을 잘 반영하는 응답을 생성합니다.

HybridRAG의 성능, 정말 좋은가?

HybridRAG가 얼마나 성능이 좋은지, VectorRAG이나 GraphRAG 각각보다 어느 정도 나은지 등을 알아보기 위해서, 연구자들은 네 개의 지표를 가지고 이 RAG 기법들을 평가했는데, 그 결과 몇 가지 분명한 차이를 관찰할 수 있었습니다:

  1. Faithfulness (응답이 얼마나 정확하게 제공된 컨텍스트를 반영하는가):
    GraphRAG과 HybridRAG이 0.96으로 높은 점수를 기록했고, VectorRAG은 이보다 살짝 낮은 0.94를 기록했습니다.

  2. Answer relevance (응답이 얼마나 원래의 질문에 적합한 답을 하고 있는가):
    HybridRAG이 0.96으로 가장 높은 점수를 기록했고, VectorRAG (0.91)과 GraphRAG (0.89)이 근소한 차로 그 뒤를 뒤따랐습니다.

  3. Context precision (추출된 컨텍스트 정보가 올바른 답과 어느 정도 합치하는가):
    GraphRAG이 0.96으로 최고점을 보여준 반면, VectorRAG (0.84)과 HybridRAG (0.79)는 다소 낮다고 할 수 있는 점수를 기록했습니다.

  4. Context recall (검색된 컨텍스트가 ‘Ground-Truth’ 답과 얼마나 합치하는가):
    VectorRAG과 HybridRAG 모두 1점 만점을 기록했지만, GraphRAG는 0.85에 그쳤습니다.

Image Credit: 튜링 포스트

Context Precision에서는 약간의 트레이드오프가 있지만, HybridRAG이 전반적으로 가장 균형잡힌 성능을 나타내는 가운데 Faithfulness, Answer Relevance, 그리고 Context Recall에서 아주 좋은 결과를 보여줍니다.

HybridRAG의 장점

HybridRAG 시스템은 ‘복잡한 전문적 도메인의 지식을 다루는’ 경우에 고려해 볼 만한 기법입니다:

  • 텍스트 기반의 광범위한 정보 + 구조화된 정보의 결합:
    HybridRAG는, 텍스트 기반으로 정보를 검색하는 VectorRAG에서 만들어내는 광범위한 컨텍스트, 그리고 엔티티 간의 관계에 중점을 두는 GraphRAG이 만들어내는 상세하고 구조화된 데이터를 결합합니다.

  • 정확도의 향상:

    이렇게 두 가지 기법을 결합해서 사용함으로써, HybridRAG는 더 정확하고 풍부한 문맥을 가지는 답변을 생성해내기 때문에, 전반적으로 답변의 정확도가 향상됩니다.

  • 복잡한 정보의 처리:

    재무 정보를 담은 문서라든가, 기술적인 스펙을 담고 있는 문서 등, 특정한 도메인의 전문적인 내용을 담고 있는 문서에 대해서 복잡한 질의를 하고 답변을 해야 할 때 HybridRAG는 탁월한 성능을 보여줍니다.

  • 신뢰할 수 있는 답변 생성:

    HybridRAG는 답변의 오류를 줄이고 불완전한 답변을 덜 할 수 있도록, 최종적인 응답을 다양한 컨텍스트에 근거해서 만들어냅니다.

물론 여기도 한계는 있습니다

상당히 유의미한 장점과 성능 개선을 보여주기는 하지만, 역시 HybridRAG에도 나름의 시스템의 복잡성 때문에 생기는 제약 조건, 한계 등이 있습니다. 대표적으로 예를 들자면 아래와 같습니다:

  • ‘데이터 순서’의 정확도에 대한 영향:

    두 가지 기법을 통해서 추출된 정보를 결합해서 큰 컨텍스트를 만들기 때문에, 컨텍스트가 추가되는 순서가 생성되는 응답의 정확도에 영향을 미칠 수 있습니다. GraphRAG 컨텍스트에서 답변이 생성되면, 해당 컨텍스트가 마지막에 추가되어서 정확도가 떨어질 수 있는 반면에, VectorRAG 컨텍스트에서 생성된 답변은 컨텍스트가 먼저 추가되어서 정확도가 좀 더 높아지는 경향이 있습니다.

  • 두 기법의 균형점을 어떻게 맞출 것인가:

    VectorRAG와 GraphRAG의 결과를 통합하는 과정에서, 때때로 충돌이라든가 중복 현상이 발생할 수 있습니다. 이런 경우, 최적의 답변을 만들어내기 위해서 두 가지 서로 다른 기법이 가진 고유한 강점을 유지하면서 균형을 맞추는 것이 생각보다 쉽지 않습니다.

  • 시스템의 복잡성 증가:

    VectorRAG와 GraphRAG를 모두 결합하면, 아무래도 시스템이 더 복잡해지고 결과적으로 처리 시간과 계산 비용이 증가할 수 있습니다.

  • 지식 그래프의 유지 관리:

    지식 그래프(KG)의 구성 요소는, 구조화된 데이터를 항상 정확하게, 그리고 최신 상태로 유지하려면 비용과 자원이 필요합니다.

  • 가용한 데이터가 있어야 작동:

    (이건 어쩌면 당연한 것이겠지만) 참조할 만한 관련 정보가 벡터 데이터베이스나 지식 그래프에 없는 경우, 특히 고도로 전문화된 질의의 경우에는, HybridRAG가 정확한 응답을 제공하기 어렵습니다.

맺으며: HybridRAG의 잠재력

위에서 잠깐 말씀드린 것처럼, HybridRAG을 개발한 주요 목적은 ‘금융 도메인의 전문적인 업무를 처리할 때 맞닥뜨리는 기존 RAG 기법의 한계를 해결하는 것’이었습니다. 엔비디아와 블랙록 연구자들의 연구에 따르면, HybridRAG는 전문적인 용어와 복잡한 문서의 형식을 잘 다룰 수 있기 때문에 재무 분석이라든가 기술 문서 비교, 조사 같은 작업에 활용하기 적합합니다. 예를 들어서, HybridRAG 시스템으로 기업의 재무 현황을 분석하는 과정에서 수치 데이터와 일반 현황 분석 정보를 처리하는 작업을 효율화하거나, 엔지니어링, 법률 등 특정한 전문적 용어와 지식이 필요한 분야에도 활용할 수 있을 것으로 보입니다.

보너스: 각종 자료 소스

  • HybridRAG: 정보의 추출, 답변 생성을 효율적으로 더 정확하게 하기 위해, VectorRAG와 GraphRAG을 통합하는 기법

  • Original RAG: 사전 학습된 언어모델 (파라메트릭 메모리)과 Wikipedia 등 외부 문서의 고밀도 벡터 인덱스와 같은 지식 소스 (비파라메트릭 메모리)를 결합, 모델의 생성하는 응답의 정확도와 고유성을 높여주는 가장 기본적인 RAG 기법

  • Graph RAG: 마이크로소프트가 발표한 기법으로, 텍스트 데이터와 데이터 사이의 관계를 표현하는 그래프 구조로 데이터를 정리해서 활용하는 접근법. QFS (Query-Focused Summarization; 질의 중심 요약) 등의 작업에 좋은 성능을 보여줌

  • LongRAG은 개선된 버전의 RAG으로, 4,000개의 토큰까지 해당하는 긴 텍스트를 처리해서 검색해야 하는 단위 갯수를 줄일 수 있는 구조. ‘Long Retriever’와 ‘Long Reader’를 사용하는 구조로, 추가적인 트레이닝이 없이도 대량의 텍스트에서 원하는 정보를 더 정확히 높은 성능으로 추출해 낼 수 있음

  • Self-RAG (Self-Reflective 접근법)은 모델이 ‘필요할 때만’ 정보를 검색하고 반영하도록 해 주는 RAG 기법으로, 추론 작업이나 사실 확인이 필요한 작업에서 챗GPT 등 다른 모델보다 뛰어난 성능을 발휘함

  • Corrective RAG (CRAG)는 ‘외부 검색 평가기 (External Retrieval Evaluator)’를 사용해서 검색된 문서의 품질을 개선하는데, 핵심적인 정보에 집중해서 ‘생성된 콘텐츠의 정확성과 견고성을 향상’시킴

  • EfficientRAG는 각 단계에서 LLM 없이 새로운 질의를 생성하고 관련없는 정보를 필터링하여 멀티-홉 질문을 효율적으로 처리하도록 해 줌

  • Golden-Retriever는 Reflection 기반의 ‘Question Augmentation’을 통해서 도메인별 전문 용어라든가 산업과 밀접한 내용의 지식 베이스에서 컨텍스트를 잘 처리, 가장 관련성이 높은 문서를 검색할 수 있도록 하는 RAG 모델임

  • 대화형 시스템용 Adaptive RAG은 질의가 왔을 때 항상 외부 지식을 검색하는 대신, 대화의 맥락을 먼저 평가하고 RAG가 필요한지 여부를 결정하는 구조로, 응답 품질을 전반적으로 개선하고 더 정확한, 더 확신있는 답변을 유도할 수 있음

  • Modular RAG은 복잡한 RAG 시스템을 독립적으로 작동하는 모듈, 그리고 전문화된 구성 요소로 나누는 발전된 RAG 프레임웍으로, 단순한 '검색 후 생성' 프로세스를 넘어서 라우팅, 스케줄링, 프로세스 통합 등 유연하고 사용자 지정이 가능한 구성을 제공함

  • Speculative RAG은 초안 여러 개를 병렬로 생성하는 소형의 ‘Specialist LM’, 그리고 초안을 검증해서 최적의 답을 찾는 대형의 ‘Generalist LM’, 두 가지 유형의 LM을 결합해서 시스템의 효율성과 속도를 모두 향상시킴

  • RankRAG은 관련된 컨텍스트의 순위를 매기고 질문에 답하는 데 사용하도록 모델을 훈련하는 프레임웍으로, ‘지식 집약적’인 작업에 탁월한 성능을 보임

  • Multi-Head RAG은 ‘Attention’ 메커니즘의 여러 부분을 사용해서 질의의 다양한 측면을 포착, 관련성이 높은 정보를 더 쉽게 찾고 사용할 수 있도록 해 줌 특히 복잡한 질의에 대한 검색 정확도를 향상시킬 수 있음

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

Reply

or to participate.