글을 시작하며

RAG (Retrieval-Augmented Generation; 검색 증강 생성)는 LLM 어플리케이션을 만드는 방법들 중 ‘외부의 지식과 데이터’를 활용해서 LLM의 성능과 답변 품질을 향상시키는 방법으로, 최근 몇 년 동안 점점 큰 관심과 인기를 얻고 있습니다.

튜링 포스트 코리아에서도 ‘Graph RAG’에 대해서 다룬 적이 있습니다. 그런데, RAG 모델이 개발된 2020년쯤은, LLM이 Long-Context (긴 컨텍스트)를 처리하는데 큰 제약조건이 있던 시절입니다. 결과적으로, 검색기 (Retriever)는 일반적으로 100단어 정도의 짧은 텍스트 단위 - 위키백과로 치면 한 단락 정도예요 - 로 작업하도록, 그래서 관련된 정보를 찾아내기 위해서 방대한 규모의 말뭉치 (Corpora)를 검색해야 하는 구조로 설계가 되었습니다.

2020년 이후 지금까지, 거대언어모델이 얼마나 변했는지 생각해 보세요. 2023년, 2024년에 훨씬 더 긴 컨텍스트를 처리할 수 있는 LLM들이 등장했고, 그 중에는 128,000개의 토큰 또는 100만개의 토큰까지 처리할 수 있는 모델들도 있습니다. (예를 들면, 구글의 Gemini 1.5 Pro 같은 모델처럼요). 한 마디로, RAG 시스템에 새로운 가능성이 열린 거죠.

자, 이제 LongRAG 프레임웍의 세계로 들어가 봅시다 - LongRag 프레임웍은 최근의 LLM 발전 방향에 맞춰 RAG 시스템의 설계를 근본적으로 재검토하고, Long-Context를 지원하는 LLM의 성능을 더 개선하면서 더 잘 동작하는 RAG 시스템을 만들 수 있는 방향을 제시합니다.

이번 에피소드에서는, 아래의 내용을 다뤄보려고 합니다:

오리지널 RAG, 그 작동 방식

RAG는 LLM에 파인튜닝을 하지 않고도 완전히 새로운 데이터를 대상으로 LLM이 작동하게 할 수 있습니다. 또 RAG이 외부의 말뭉치 데이터를 검색하는 외부 컴포넌트를 사용하는 구조기 때문에, 자연어 형식으로 된 지식과 정보를 LLM 내부의 파라메트릭 메모리 (Parametric Memory - AI 모델의 내부 가중치 등 파라미터 형태로 저장된 내용)로 저장하지 않고 바깥으로 완전히 빼낼 수 있습니다.

RAG의 작동 방식:

  • 질의 인코더 (Query Encoder): 사용자의 질의를 텍스트나 문서들로 이루어진 데이터베이스에서 검색하기 위해서 적절한 ‘수치 표현 (Numerical Representation; 벡터임)’으로 인코딩합니다.

  • 검색기 (Retriever): 질의 인코더가 생성한 벡터를 사용해서 색인된 문서로 구성된 외부 데이터베이스를 검색합니다. 검색기는 선택된 검색 알고리즘을 활용해서 가장 관련성이 높은 상위 K개의 문서를 식별합니다.

  • 생성기 (Generator): 검색기가 식별해 낸 문서와 입력되었던 질의를 가지고, LLM이 출력을 생성하기 위한 처리를 합니다.

LongRAG의 아이디어

LongRAG는 워털루 대학교의 연구원들이 "LongRAG: Enhancing Retrieval-Augmented Generation with Long-context LLMs”라는 논문을 통해서 제안한 개념입니다. 이 논문에서는 LLM 기반 어플리케이션의 ‘검색’ 프로세스를 아래와 같이 변경하는 것을 제안합니다:

  • 각 문서의 토큰 사이즈를 오리지널 RAG에서 제안한 ‘100개’에서 ‘4,000’개로 확대합니다.

  • 오리지널 RAG에서는 사용자가 입력한 쿼리와 관련된 정보를 정확히 찾아내는 데 초점을 맞추었다면, LongRAG에서는 반드시 정확하지는 않더라도 관련성이 있는 정보를 포함하는 문서를 선택하는 것에 초점을 맞춥니다.

Image Credit: The original paper

다시 요약해 보면, 위와 같은 접근 방법의 변화는 ‘정확하고 작은’ 정보의 조각을 검색한다는 개념으로부터 ‘더 크고 맥락이 풍부하면서 일관적이고 통합된 의미를 가진’ 조각을 선택하겠다는 겁니다. 구조를 이렇게 바꾸면, 검색기의 부담을 덜어주는 동시에 검색기와 생성기 - 바로 LLM이죠 - 간 작업을 좀 더 균등하게 분배하게 됩니다. 결과적으로, LongRAG는 (생성기 역할을 하는) 최신 LLM의 Long-Context 기능을 최대한 활용하는 이점을 누리는 것이죠.

LongRAG 작동 방식과 아키텍처

LongRAG는 오리지널 RAG의 아키텍처에 세 가지 변화를 주었습니다:

  • Long Retrieval Unit: 큰 문서에서 100개씩 토큰을 잘라내는 대신, LongRAG는 논문에서 제안한 Group Documents Algorithm에 따라서 하나 또는 그 이상의 문서 정도의 광범위한 검색 단위를 사용합니다. 토큰 사이즈가 4K로 증가했기 때문에,, 위키피디아 말뭉치를 예로 들자면 그 검색 단위가 22M개에서 600K개로 줄어들게 됩니다.

  • Long Retriever: 이후 다운스트림에서의 처리를 위해서 Long Retrieval Unit을 식별합니다.

  • Long Reader: 사용자가 입력했던 질의와 Long Retrieval Unit을 기반으로 한 프롬프트를 받아 Long Retrieval Unit에서 답변을 추출해내는 LLM입니다.

Image Credit: The original paper

 LongRAG의 작동 방식을 단계별로 좀 더 살펴보면:

  • Retrieval (원래 논문에서는 ‘Long Retriever’로 부름):

    • 인코딩: 두 개의 인코더가 입력된 질문과 검색 단위 (Retrieval Unit)를 각각 d-차원 벡터에 매핑합니다.

    • Long Retrieval Unit 구성: Group Documents Algorithm이 관련 문서를 그룹화하는데, 각각의 문서는 특정한 최대 그룹 사이즈를 넘기지 않는 범위 내에서 ‘연결성 (Connectivity)’을 기준으로 다른 관련 문서들과 그룹화됩니다. 이렇게 해서 정보 검색을 훨씬 더 효율적으로 할 수 있게 됩니다.

    • 유사도 검색 (Similarity Search): 인코딩 단계에서 만들어진 벡터들을 활용해서 Long Retrieval Unit을 선택할 때 질문과 검색 단위 간의 유사도를 계산합니다.

    • 결과 집계: 가장 관련성이 높은 상위 그룹을 집계하여 질문에 대한 포괄적인 답변을 구성하고, 그 크기에 따라 포함된 그룹의 수를 조정합니다.

  • Generation (원래 논문에서는 ‘Long Reader’로 부름): LLM은 사용자 질의와 검색 단계의 집계된 결과를 가져와서 최종적인 출력을 생성합니다. Long Reader로 사용되는 LLM은 당연히 Long-Context를 처리할 수 있는 모델이어야 하고, 위치 편향성 (Position Bias; 시퀀스 안의 단어 ‘위치’에 지나치게 중요도를 두는 현상)이 적은 것이 좋습니다.

LongRAG의 장점

LongRAG는 위키피디아를 4,000개의 토큰 사이즈로 처리해서 검색을 최적화하는 방식으로검색 단위를 2,200만 개에서 60만 개로 크게 줄였습니다. 이렇게 단위의 ‘크기’가 커지면 많은 단위를 불러올 필요성이 ‘줄어들고’, 트렁케이션 (Truncation; 데이터가 중간에 잘리는 것)을 방지하고, 더 풍부한 맥락을 보존할 수 있습니다 - 포괄적인 정보를 통합하니까 복잡한 질문에 대한 직접적인 답을 구성하는데 도움이 되는 거죠.

별도의 추가적인 트레이닝이 없이도 상당히 높은 Retrieval Score를 달성할 뿐 아니라 SOTA 모델에 필적하는 결과를 보여주는 것을 볼 때, LongRAG는 Long-Context를 처리할 수 있는 LLM과 결합했을 때 큰 잠재력과 효율성이 있는 것으로 보입니다.

LongRAG 구현에서 확인할 수 있는 몇 가지 결과치를 보면 아래와 같습니다:

  • Recall@1: Natural Questions (NQ) 데이터셋에서, 52%에서 71%로 증가.

  • Recall@2: HotpotQA 데이터셋 (Full-Wiki)에서, 47%에서 72%로 증가.

  • Exact Match (EM): EM 스코어가 NQ에서 62.7%, HotpotQA (Full-Wiki)에서 64.3%로, SOTA 모델에 필적하는 성능.

보너스 자료

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

Reply

Avatar

or to participate

Keep Reading