대규모 언어 모델을 위한 검색-증강 생성(RAG) 기술 현황 - 2/2편

PyTorchKR​:fire::kr: :thinking::speech_balloon:

:warning: hoxy... RAG 기술 현황 1편을 읽고 오셨나요? 아직 읽지 않으셨다면 1편부터 읽으시는 것을 추천드립니다!


RAG 기술의 주요 구성 요소: 개요

2편에서는 검색-증강 생성(RAG: Retrieval-Augmented Generation)의 주요한 3가지 요소들에 대해서 알아봅니다. 즉, RAG의 이름을 구성하고 있는 검색기(Retriever)생성기(Generator), 그리고 증강 방법(Augmentation Method)들을 하나씩 살펴봅니다. 또한, 각 구성 요소별로 어떠한 점들을 고려해야 하는지와, 해당 주제들에 대한 방법론들을 소개합니다.

RAG 기술의 주요 구성 요소: 검색기(Retriever)

검색기(Retriever)는 RAG라는 약어의 맨 앞 글자인 R을 나타내고 있을 정도로 시스템에서 중요한 정보 탐색 역할을 합니다. 검색기는 대규모 데이터 집합에서 관련 정보를 찾아내어 텍스트 생성을 위한 데이터들을 준비하는 작업을 합니다​​. 이러한 검색기는 LLM의 일반적인 지식과 현재, 맥락적으로 정확한 정보의 필요성 사이의 간격을 메우는 데 사용됩니다. 이는 실시간 데이터, 특정 분야 전문 지식 또는 사실 확인이 필요한 시나리오에서 특히 중요합니다​​. 검색기와 관련해서는 아래와 같은 3가지 주요한 주제들이 있습니다:

정확한 의미론적 표현(Semantic Representation) 추출

RAG 시스템에서 질의와 문서는 의미론적 공간, 즉 다차원 공간에 매핑됩니다. 검색기는 이렇게 구성된 의미론적 공간 내에서 검색을 수행하므로, 의미론적 표현이 정확하지 않으면 검색 결과 또한 부정확하게 됩니다. 이러한 의미론적 공간을 일치시키는 2가지 방법을 소개합니다:

1. 청크 최적화(Chunk Optimization)

외부 문서 처리의 첫 단계는 입력된 문서를 적당한 크기의 조각(chunk)으로 분할하는 것입니다. 이렇게 분할된 조각은 모두 같은 크기의 벡터로 임베딩되므로, 각 청크의 크기를 적절히 조절하는 것이 중요합니다. 적절히 조절된 크기로 외부 문서를 분할하는 경우 검색 결과의 정확성과 관련도가 크게 향상될 수 있습니다. 청크 전략 선택 시 콘텐츠의 특성, 사용되는 임베딩 모델, 사용자 질의의 기대 길이 및 복잡성 등을 고려하는 것이 중요합니다. 예를 들어, sentence-transformer는 단일 문장에 더 적합하며, text-embedding-ada-002는 256 또는 512 토큰을 포함하는 블록에 더 적합합니다​​.

2. 임베딩 모델의 미세 조정(Fine-tuning Embedding Models)

적절한 청크 크기를 얻은 후, 이 청크들과 질의를 의미론적 공간에 임베딩하는 단계에서의 미세 조정을 통해 더 정확한 의미론적 표현을 얻을 수 있습니다. 다양한 뛰어난 임베딩 모델들이 개발되었으나, 특정 도메인에 적용될 때 도메인 특정 코퍼스 정보를 정확하게 표현하지 못할 때 이러한 미세조정이 중요합니다. 이러한 미세조정을 통해 사용자 질의와 콘텐츠 관련성과의 관계를 더 잘 이해할 수 있도록 돕습니다. 특정 도메인에 특화된 데이터셋을 구축하여 임베딩 모델을 미세 조정할 수 있습니다. 또한, 세부적인 작업(downstream task)에 맞춰 추가적인 파인튜닝이 필요할 수 있습니다.

사용자의 질의(Query)와 검색 대상이 되는 문서들의 의미론적 공간 일치

RAG 애플리케이션에서 어떠한 검색기는 사용자 질의와 문서들을 인코딩할 때 동일한 임베딩 모델을 사용하기도 하지만, 사용자 질의와 문서들을 인코딩할 때 서로 다른 임베딩 모델을 사용하는 검색기도 있습니다. 또한, 사용자의 질의가 충분한 정보를 포함하지 않는 경우에는 사용자 질의의 의미론적 표현이 검색에 부적절할 수 있습니다. 검색 품질을 높이기 위해 사용자의 질의와 문서의 의미론적 공간을 일치시키는 다음 2가지 방법들을 살펴보겠습니다:

1. 질의 재작성(Query Rewrite)

질의 재작성은 사용자의 원래 질의와 문서 간의 의미론적 일치를 향상시키기 위해 질의를 변형하는 방법으로, 사용자의 표현력이 부족하거나 의미론적 정보가 불충분한 경우에 유용합니다. 질의 재작성 시에는 HyDE와 STEP-BACKPROMPTING과 같은 방법들을 사용합니다.

HyDE 방법은 먼저, 대규모 언어 모델(LLM)의 능력을 활용하여 가상의 문서를 생성하고, 이를 원래 질의와 결합하여 새로운 질의를 형성합니다. HyDE에서는 사용자 질의를 바탕으로 '가상(hypothetical)'의 문서를 생성하고, 이를 임베딩하여 실제 문서를 검색합니다. 이 때 생성하는 가상의 문서는 사용자 질의로부터 패턴을 포착하는 것이 목적입니다. 검색과 읽기의 순서를 뒤집는 새로운 방법인 RRR(재작성-검색-읽기; Rewrite-Retrieve-Read) 방식을 도입하여 질의 재작성에 중점을 둡니다. 이 방법은 대규모 언어 모델을 사용하여 질의를 생성하고, 웹 검색 엔진을 사용하여 맥락을 검색한 후, 작은 언어 모델을 훈련하여 기존 대규모 언어 모델을 보완합니다.

STEP-BACKPROMPTING 방법은 대규모 언어 모델이 추상적 추론을 수행하고, 이를 기반으로 검색을 수행하도록 하는 방법으로, 사용자 질의의 일반적인 개념이나 원리를 추출하고, 이를 바탕으로 검색을 수행하는 데 중점을 둡니다. 대규모 언어 모델(LLM)을 사용하여 고수준의 개념과 원리를 추출하고, 이 정보를 검색 과정에 활용합니다. 이를 통해 모델은 사용자의 구체적인 요구 사항보다는 보다 일반적인 추론과 검색을 수행할 수 있습니다. 이러한 방법은 검색 과정을 추상화하고, 사용자 질의의 광범위한 의미론적 맥락을 포착하는 데 도움이 됩니다.

2. 임베딩 변환(Embedding Transformation)

임베딩 변환은 질의와 문서를 동일한 의미론적 공간에 매핑하여 그들 간의 관련성을 높이는 방법으로, 검색의 정확성을 향상시키기 위한 주요 기술입니다. 먼저 임베딩 모델을 사용하여 질의와 문서를 벡터로 변환하고, 이들 간의 의미론적 유사성을 높이는 방식으로 검색 결과의 관련성(releavance)과 질의에 대한 응답의 정확성을 향상시킵니다.

  • LlamaIndex에서는 LLM을 사용하여 특정 작업에 대한 질의를 생성하고, 이를 기반으로 작업에 특화된 검색기를 구축합니다. 이러한 방식은 사용자 질의는 비정형(semi-structured) 데이터 형태로 주어지고, 검색할 외부 문서는 정형 데이터 형식인 경우와 같이 질의와 외부 문서의 데이터 구조가 다른 경우, 쿼리가 문서에 맞게 정렬되도록 하여 검색 품질을 높이는데 유용합니다.

  • SANTA는 검색기가 구조화된 정보를 인식하는 두 가지 사전 학습 방법을 제안합니다: 1) 정형 데이터와 비정형 데이터 사이의 자연스러운 정렬 관계를 사용한 대조 학습(contrastive learning)을 통한 구조화된 사전 학습(structured-aware pre-training) 방섭. 2) 엔티티-기반 마스크 전략(entity-oriented mask strategy)을 설계하고 언어모델로 하여금 마스킹된 엔티티들을 채우도록 하는 MEP(Masked Entity Prediction) 방법.

검색기 출력과 대규모 언어 모델(LLM)의 선호도(Preference) 일치시키기

위에서 살펴본 방법들을 사용하여 검색 적중률(retrieval hit rate)을 높이더라도 검색된 결과 문서들이 LLM이 필요로 하는 문서가 아닐 수 있습니다. 이러한 경우 RAG의 최종적인 성능 효과가 개선되지 않기 때문에, 검색기의 출력(output)과 LLM의 선호도(preferences)를 일치시키는 방법들을 알아둘 필요가 있습니다:

1. LLM 감독 학습(LLM Supervised Training)

LLM 감독 학습은 검색기의 성능을 향상시키기 위해 대규모 언어 모델(LLM)로부터의 피드백 신호를 받아 임베딩 모델을 파인튜닝하는 방법입니다. 즉, LLM이 선호하는 문서 유형을 파악하고, 이러한 선호도에 맞춰 검색기를 파인튜닝하여 검색 결과를 개선합니다. 여기에는 4가지 방식들이 있습니다:

  • AAR 방식은 FiD 크로스 어텐션(cross-attention) 점수를 통해 LLM이 선호하는 문서를 결정합니다. 이 정보를 바탕으로 표준 cross-entropy 손실 및 hard negative sampling을 사용하여 검색기를 파인튜닝합니다.

  • REPLUG 방식은 검색된 문서의 확률 분포를 계산하여 감독 학습을 수행합니다. 검색기와 LLM을 사용하여 검색된 문서의 확률 분포를 계산하고, 이를 KL-divergence로 계산합니다. 이 방식은 간단하면서도 효과적인 학습 방법입니다.

  • UPRISE 방식은 LLM의 파라매터를 고정(freeze)시키고 Prompt Retriever를 파인튜닝합니다. 언어 모델과 검색기 모두에 [Prompt-Input] 쌍(pair)을 입력으로 사용하고, 대규모 언어 모델이 제공하는 점수를 사용하여 검색기의 학습을 감독합니다.

  • Atlas는 4가지의 파인튜닝 방법을 제안합니다. 어텐션 증류(Attention Distillation)은 언어 모델이 생성하는 크로스-어텐션(cross-attention) 점수를 사용하여 증류(distill)합니다. EMDR2는 검색된 문서를 잠재 변수로 사용하여 Expectation-Maximization 알고리즘으로 학습합니다. 혼란도 증류(Perplexity Distillation)는 모델이 생성한 토큰의 혼란도(perplexity)를 지표로 사용하여 직접 학습합니다. LOOP은 문서 삭제가 언어 모델 예측에 미치는 영향에 기반한 새로운 손실 함수를 도입하여 특정 작업에 모델을 더 잘 적응시키는 효과적인 학습 전략을 제공합니다​​.

2. 어댑터 플러그인(Plug in an adapter)

RAG 구현시 임베딩 모델 대신 API를 사용하거나, 임베딩 모델의 파인튜닝을 위한 컴퓨팅 자원이 부족한 경우 임베딩 모델 자체를 파인튜닝하는 것이 어려울 수 있습니다. 이러한 경우에는 외부의 어댑터를 추가적으로 부착(plug-in)하는 방식으로 정렬할 수도 있습니다. 크게 다음과 같은 방법론들이 연구되고 있습니다:

  • PRCA는 맥락 추출 단계(Contextual Extraction Stage)와 보상 중심 단계(Reward Driven Stage)를 통해 어댑터를 학습시키고, 토큰 기반의 자동 회귀 전략에 기초하여 검색기의 출력을 최적화합니다.

  • TokenFiltering 방법은 크로스-어텐션(cross-attention) 점수를 계산하여 가장 높은 점수를 받은 입력 토큰을 선택함으로써 토큰을 효과적으로 필터링합니다.

  • RECOMP는 추출적(extractive) 및 생성적(generative) 압축기(compressor)를 제안하는데, 이는 관련 문장을 선택하거나 문서 정보를 종합하여 다중 문서 쿼리 집중 요약을 생성합니다.

  • PKG는 지시적 파인튜닝(directive fine-tuning)을 통해 화이트박스 모델에 지식을 주입하고, 사용자 질의에 기반하여 관련 문서를 직접 출력하는 검색기 모듈을 바로 대체하는 방식입니다.

RAG 기술의 주요 구성 요소: 생성기(Generator)

앞에서 살펴본 검색기(Retriever)의 역할이 사용자의 입력으로부터 후보 문서들을 추출하는 것이었다면, 생성기(Generator)의 역할은 검색된 결과를 활용하여 사용자에게 제공할 답변을 생성하는 것입니다. 검색된 정보를 효과적으로 활용하여 정확하고 관련성 높은 답변을 생성하기 위해, 정보를 압축하고 순위를 다시 매기는 후처리 과정과 입력 데이터에 적응하는 최적화 과정을 수행하고 있습니다. 생성기와 관련한 이들 2가지 주요 주제들을 살펴보겠습니다:

검색 결과의 후처리를 통한 개선 방법

검색 결과의 후처리(Post-retrieval Processing)는 대규모 언어 모델이 갖는 토큰 길이의 제약이나 중복 정보에 대한 취약성과 같은 문제들을 해결하기 위해 시작되었습니다. 이러한 후처리는 검색기가 검색한 정보들을 대규모 문서 데이터베이스를 사용하여 추가적인 처리나 필터링, 최적화하는 과정으로, 검색 품질을 향상시키는 것이 목적입니다. 주로 정보 압축(Information Compression)과 순위 다시 매기기(ReRank) 등의 방법들을 사용합니다:

1. 정보 압축(Information Compression)

검색기가 광범위한 지식 기반으로부터 관련 정보를 가져오더라도 검색 문서에 포함된 방대한 양의 정보를 다루는 것은 여전히 쉽지 않은 일입니다. 이를 해결하기 위해 언어 모델의 컨텍스트 윈도우 길이를 늘리는 시도도 있으나, 여전히 길이의 제한이 있기 때문에 여기에서는 입력 정보를 압축하여 크기를 줄이는 방법을 시도하고 있습니다.

  • PRCA는 정보 추출기(information extractor)를 학습시켜 이 문제를 해결합니다. 실제 문맥과 압축된 문맥 사이의 차이를 최소화하는 방식으로 정보 추출기를 학습시키고, 입력 텍스트(문서)로부터 출력 시퀀스(압축된 문맥)를 생성합니다.

  • RECOMP는 대조 학습(contrastive learning)을 사용하여 정보 압축기를 학습시킵니다. 하나의 학습 데이터(datapoint)는 하나의 긍정(positive) 샘플과 다섯개의 부정(negative) 샘플들을 포함하고 있으며, 이러한 학습 데이터를 활용하여 인코더를 학습합니다.

  • Filter-Ranker는 문서의 양을 더 줄여 답변의 정확도를 향상시키는 패러다임을 제안하였습니다. 작은 언어 모델(SLM: Small-Language Model)을 필터로 사용하고, 대규모 언어 모델(LLM)은 재배열 에이전트(reordering agents)로 동작합니다. 즉, SLM에 의해 식별이 어려운 샘플들을 LLM이 재배열함으로써, 다양한 정보 추출(IE: Information Extraction) 작업들에서 상당한 개선을 보였습니다.

2. 순위 다시 매기기(ReRank)

순위를 다시 매기는 재순위 모델(Reordering Model)의 핵심 역할은 검색기로부터 검색된 문서 결과들을 최적화하는 것입니다. 많은 정보들이 제공되어는 경우 대규모 언어 모델(LLM)의 성능이 저하될 수 있으므로, 결과 문서들을 재배열하여 가장 관련성 높은 항목들을 상위에 배치함으로써 검색 결과의 수를 줄이는 것입니다.

그 외에도, 순위를 다시 매기는 과정에서 맥락 압축(context compression)을 도입하는 것은 주어진 질의의 맥락에 기반하여 관련 정보만 반환하는 것을 목표로 합니다. 이 접근법은 검색 결과에서 가장 관련성 높은 정보를 집중적으로 보여주고, 개별 문서의 내용을 줄이며 전체 문서를 필터링하는 데 있습니다. 따라서 재순위 모델은 정보 검색 과정 전반을 최적화하고 정제하는 역할을 하여, 후속 LLM 처리에 대해 더 효과적이고 정확한 입력을 제공하는 것을 목표로 합니다​​.

입력 데이터에 적응(adapt)하도록 생성기를 최적화

생성기(Generator)의 최적화는 RAG 모델 설계 시 중요한 부분입니다. 앞서 설명했던 것처럼 생성기의 주된 임무는 검색된 정보를 취하여 관련 텍스트를 생성하는 것이며, 이를 통해 모델의 최종 출력을 제공하게 됩니다. 입력 데이터의 다양성과 추가 정보의 도입이 모델의 이해에 영향을 미치기 때문에, 검색된 문서에 대한 후처리와 파인튜닝 단계가 필수적입니다. 생성기 최적화와 관련해서는 최적화 절차와 함께 대조 학습(Contrastive Learning)을 활용하는 방법을 살펴보겠습니다:

일반적인 최적화 과정 (General Optimization Process)

생성기의 최적화 과정은 대규모 언어 모델(LLM)의 일반적인 파인튜닝 방법과 유사합니다. 기본적으로 모델이 주어진 입력 x 에 대해 출력 y 를 생성할 수 있도록 학습하는 데 중점을 둡니다. Self-mem에서는 상대적으로 전통적인 학습 과정이 사용되었습니다. 주어진 입력 x 에 대해 관련 문서 z 을 검색하여 입력 쌍(pair) (x, z) 를 준비한 뒤, 이 입력을 바탕으로 출력 y 를 생성하도록 모델을 학습합니다​​.

Self-mem에서는 파인튜닝 시에 Joint-Encoder와 Dual-Encoder의 두가지 인코더를 사용합니다. Joint-Encoder는 일반적인 인코더-디코더 모델을 기반으로 합니다. 여기서 인코더는 먼저 입력을 인코딩하고, 디코더는 어텐션 메커니즘을 통해 인코딩된 결과를 결합하여 자동 회귀 방식으로 토큰을 생성합니다. Dual-Encoder는 이름 그대로 두 개의 독립적인 인코더를 사용하는데, 하나는 사용자 질의(입력)를 인코딩하고 다른 하나는 문서를 인코딩합니다.

대조 학습 활용 (Utiliziing Contrastive Learning)

대조 학습(Contrastive Learning)은 기계 학습에서 모델의 일반화 능력을 향상시키는 데 사용되는 기법입니다. 일반적인 생성형 모델에서는 학습 과정에서만 학습 데이터의 실제 데이터를 사용하고, 생성 단계에서는 모델이 생성한 토큰에 의존하여 다음 토큰을 예측하게 되는 상황에서 발생하는 노출 편향(exposure bias) 문제가 있을 수 있습니다. 대조 학습은 긍정적 예시와 부정적 예시를 모두 제시하여 학습 데이터의 패턴만 따르지 않게 하고, 다양한 유형의 데이터를 사용하여 일반화 능력이 향상됩니다. 즉, 검색 및 생성 작업에서 모델이 편향된 학습 데이터에 지나치게 적합되는 것을 방지하고 다양하고 합리적인 출력을 생성하도록 돕습니다.

  • SURGE는 지식 그래프(KG: Knowledge Graphs)를 사용하여 맥락에 적합하고 지식 기반의 대화를 생성하는 방법입니다. SURGE는 생성된 응답이 인코딩된 지식을 활용하도록 보장하기 위해 그래프-텍스트 대조 학습(Graph-Text Contrastive Learning)을 제안하였습니다. 이는 그래프와 텍스트 모달리티 사이의 대조 학습 목표를 사용하여 검색된 사실과 생성된 텍스트 간의 일관성을 확보합니다.

  • SANTA는 검색 작업에서 구조화된 데이터를 처리할 때 쿼리와 문서의 임베딩 표현을 최적화하는 방법입니다. 사용자 질의와 구조화된 데이터를 하나의 범용 임베딩 공간에 인코딩하여 구조화된 데이터를 검색함으로써, 개방형 질문&답변, 대화형 검색, 사실 검증 등의 다양한 자연어 처리에 효과적인 밀집 검색 기술을 활용합니다. 정형 데이터와 비정형 데이터 사이의 모달리티 갭을 해소하는 것을 목적으로 합니다.

  • 그 외에도 구조화된 데이터에서 엔티티(entity)를 식별한 뒤, 각 엔티티에 마스크을 적용하여 생성기가 마스킹된 엔티티(masked entity)를 예측하는 방식으로 학습하는 방법도 있습니다. 이렇게 마스킹된 엔티티를 복구(예측)하며 생성기는 문맥으로부터 필요한 정보를 획득하며, 텍스트 데이터의 구조적 의미를 이해하고, 구조화된 데이터에서 관련 엔티티들을 정렬할 수 있습니다.

RAG 기술의 주요 구성 요소: 증강 방법(Augmentation Methods)

이 챕터에서는 RAG에서의 증강 방법을 다음 3가지 측면으로 살펴보겠습니다.

  • 증강 단계(the stage of augmentation)
  • 데이터 소스의 증강(augmentation data sources)
  • 증강 절차(the process of augmentation)

RAG의 증강 단계(Augmentation Stage)

RAG(Retrieval-Augmented Generation)의 증강 단계(Augmentation Stage)는 언어 모델(LM) 학습 과정에서 중요한 역할을 합니다. 이 단계는 사전 학습(Pre-training), 파인튜닝(Fine-tuning), 추론(Inference)의 세 가지 주요 단계로 구분됩니다. 각 단계별에서 사용되는 방법론들은 RAG 시스템의 효율성과 정확성을 향상시키는 데 중점을 둡니다.

사전 학습 단계 (Pre-training Stage)

사전 학습 단계에서는 아래와 같은 방법들을 사용합니다. 이러한 방식들은 더 강력한 기본 모델을 제공하여 텍스트 생성 품질을 향상시키고, 세부 작업에 더 잘 동작하는 기본 모델을 제공할 수 있다는 장점이 있습니다. 또한, 도메인에 특화된 말뭉치(corpus)에 대한 학습을 통해 도메인별 모델을 만들 수도 있습니다. 반면, 사전 학습을 위한 별도의 학습 데이터를 준비하는 것과, 사전 학습을 위한 별도의 리소스가 필요하다는 한계 또한 있습니다. 그러나 일단 사전 학습이 완료되고 난 뒤에는 별도의 외부 라이브러리에 종속될 필요가 없으므로 생성 속도와 운영 효율 모두 향상됩니다.

  • REALM은 마스킹된 언어 모델(MLM: Masked Language Model) 패러다임을 사용하여 언어 모델을 '검색 후 예측'하는 프로세스로 사전 학습합니다. 이 방법은 오픈 도메인에서의 질의 응답(QA) 작업에서의 성능 향상을 목표로 하며, 모듈식이고 해석 가능한 지식 임베딩 접근 방식을 도입하여, 암묵적 지식 인식 및 확장을 지원하는 것이 특징입니다.

  • RETRO는 별도의 인코더를 통해 대규모의 레이블이 지정된 데이터셋에서 검색을 수행하며, GPT 모델과 유사한 구조를 공유합니다. 이 방식은 처음부터 대규모 사전 학습을 수행하며 모델 매개변수를 줄이는 것이 특징입니다. 또한, 일반적인 GPT 모델보다 복잡도가 낮으며, 지식 베이스(KB)를 업데이트하여 언어모델을 다시 학습할 필요 없이 지식을 업데이트하는 것이 장점입니다.

  • RETRO++ 는 위 RETRO 방식의 확장으로, 모델의 매개변수를 증가시키는 것이 주요 특징입니다. 즉, 기존 RETRO 구조를 따르면서도, 대규모 모델을 사전 학습하는 RAG 접근 방식을 적용하여, 모델의 성능과 텍스트 생성 능력을 개선하고자 합니다. 이를 통해, 텍스트 생성의 질을 일관되게 향상시키는 것이 목표입니다.

  • Atlas는 T5 모델 아키텍처를 사용하며, 사전 학습과 파인튜닝 단계 모두에서 검색 메커니즘을 통합하는 것이 특징입니다. 사전 학습 전에 인코더-디코더 LM 백본을 사전학습된 T5를 사용하여 초기화하고, 사전학습된 Contriever로 Dense Retriever를 초기화합니다. 이 방식은 사전 학습 과정에서 비동기적 색인을 정기적으로 업데이트하여 검색 메커니즘을 지속적으로 최적화하는 것이 장점입니다.

  • COG는 전통적인 텍스트 생성 모델과 달리, 효율적인 벡터 검색 도구를 활용하여 텍스트 조각의 의미 있는 컨텍스트 표현을 계산하고 색인화하는 방법입니다. 텍스트 생성 시 독립된 어휘(vocabulary)를 선택하는 대신, 텍스트 컬렉션에서 관련 텍스트 조각을 찾아 사용하는 방식으로 동작합니다. 이 방법은 기존 어휘에 의존하지 않고 텍스트 조각을 직접 검색하여 보다 유연하고 효과적인 텍스트 생성을 가능하게 합니다​​.

파인튜닝 단계(Fine-tuning Stage)

파인튜닝 단계에서의 RAG 적용은 주로 오픈 도메인 질문-응답(QA) 과제에서 정보 검색을 개선하기 위해 다양한 방법을 사용합니다. 주로 다음과 같은 방법들을 통해 RAG 시스템이 다양한 질문-응답에 대응하여 더 나은 정보 검색 및 생성이 가능하게 합니다. REPLUG과 UPRISE는 주로 검색기의 파인튜닝에, Self-Mem, Self-RAG, RA-DIT는 생성기와 검색기를 함께 파인튜닝하여 보다 효과적인 정보 생성을 지향합니다:

  • REPLUG는 언어 모델(LM)을 블랙박스로 취급한 상태에서 별도의 검색 모델을 통해 언어 모델을 개선하는 방식입니다. 즉, (블랙박스인) 언어 모델의 내부는 변경하지 않고, 언어 모델로부터 감독 신호(supervised signal)을 통해 피드백을 받아 검색 모델을 개선하는 방식입니다. 이를 통해 다양한 질문 유형에 대응할 수 있도록 합니다.

  • UPRISE는 다양한 작업 세트에서 검색기를 파인튜닝하여 가벼우면서도 다재다능한 검색기를 만드는 것을 목표로합니다. 이 방법은 검색기가 다양한 작업 및 시나리오에 맞춰 자동으로 검색 프롬프트를 제공하도록 합니다. 이를 통해 검색기가 더 많은 작업과 시나리오에 적합하게 동작하도록 하며, 특히 제로샷 작업에서 유용하게 활용됩니다.

  • Self-Mem은 예시 메모리 풀(memory pool of examples)을 사용하여 생성기를 파인튜닝합니다. 이 때 메모리 풀은 생성 과정 중 참조할 수 있는 다양한 예시를 포함하고 있으며, 이러한 예시를 사용하여 보다 정확한 정보를 생성함은 물론, 생성 과정도 함께 최적화할 수 있습니다. 또한, 다양한 정보 소스를 활용하여 보다 풍부한 내용을 생성할 수 있도록 합니다.

  • Self-RAG는 모델이 생성한 텍스트의 품질을 평가하는 반영 토큰(reflection token)을 생성하여 검색 결과의 품질을 높이는 것이 특징입니다. 즉, 생성된 텍스트가 얼마나 사실적이고, 관련성이 있는지, 그리고 전반적인 품질이 어떤지를 평가하는 과정을 추가하여 정보 생성의 정확도를 높이는데 기여합니다.

  • RA-DIT는 생성기와 검색기를 동시에 파인튜닝하여 사용자 질의와 문서 간의 의미적 유사성을 최소화하는 방식으로 동작합니다. 즉, 검색 시 정답 확률을 최대화하는데 중점을 두는 방식으로 더 정확한 검색 결과를 제공하는 것을 목표로 합니다.

추론 단계(Inference Stage)

추론 단계에서의 RAG 적용은 지식 집약적인 작업, 특히 오픈 도메인 질문-응답(QA) 과제에서 정보 검색 및 생성을 개선하기 위해 다양한 방법을 사용합니다. 이 단계에서 RAG 시스템은 보다 풍부한 컨텍스트를 제공하고, 더 정교하고 복잡한 작업을 수행하는 데 필요한 다양한 기법들을 통합합니다.

  • DSP는 복잡한 파이프라인을 사용하여 자연어 텍스트를 고정된 언어 모델과 검색 모델 간에 전달하는 방식입니다. 이는 모델에 더 풍부한 컨텍스트를 제공하여 생성 품질을 향상시키는 것을 목적으로 하며, 더 정확하고 세부적인 답변 생성을 하도록 합니다. 특히 다단계 추론이 필요한 과제에서 유용하게 활용됩니다.

  • CREA-ICL은 다양한 언어 간의 지식을 동시에 검색하는 기능을 활용하는 것을 목표로 합니다. 이 방법을 사용하여 다양한 언어 간의 정보를 활용할 수 있어 추가 정보 획득에 도움을 주며, 보다 다면적인 데이터 활용이 가능해집니다. 더 다양한 데이터 소스에 접근할 수 있게 되므로써 더 풍부한 정보 제공이 가능해집니다.

  • ITER-RETGEN은 검색과 생성을 반복하며 그 결과를 결합하는 순환적 접근 방식을 사용합니다. 즉, "검색-강화 생성(retrieval-enhanced generation)"과 "생성-강화 검색(generation-enhanced retrieval)"을 번갈아 사용합니다. 이를 통해 모델이 더 깊이 있는 정보를 탐색하고 활용할 수 있어, 복잡한 질문에 대해 보다 정교하고 풍부한 답변을 생성하는데 도움이 됩니다.

  • IRCoT는 RAG와 Chain of Thought(CoT) 개념을 결합한 방법으로, 각 생성된 문장에 대한 문서 검색을 통합하고 추론 과정의 각 단계에서 검색을 수행합니다. 이 방법은 추론 과정에서 CoT를 안내하는 데 사용되며, 검색 결과를 활용하여 CoT를 개선합니다. 결과적으로 더 정확하고 관련성 높은 답변을 생성하고, 의미적 완전성을 보장하는데 도움이 됩니다.

데이터 소스의 증강(Augmentation Data Source)

데이터 소스는 RAG의 효율성에 영향을 미치는 핵심적인 요소입니다. 다양한 데이터 소스는 지식의 서로 다른 세분화 정도(granularity)와 측면(dimension)을 제공하며, 증강 시에는 서로 다른 처리 방식이 필요합니다. 이러한 데이터 소스는 크게 비정형 데이터, 정형 데이터, 그리고 LLM이 생성한 콘텐츠의 3가지 범주로 나눕니다.

비정형 데이터를 사용한 증강(Augmented with Unstructured Data)

비정형 데이터는 주로 텍스트 말뭉치(corpus)에서 파생되며, 프롬프트 데이터나 다국어 언어 데이터와 같은 다른 텍스트 데이터 소스들도 포함합니다. 이러한 데이터는 구조화되지 않은 형태로 존재하며, 텍스트의 자연스러운 흐름과 의미를 포함하고 있는 것이 특징입니다. 텍스트 데이터는 토큰(token)이나 문장(sentence), 구(phrase), 문서 단락(paragraph) 등 다양한 단위로 분할할 수 있으며, 각 단위별로 검색 단위와 방법이 달라질 수 있습니다. 일반적으로 더 작은 단위를 사용하는 경우 드물게 나타나는 패턴이나 도메인 외(OOM: Out-of-Domain)의 시나리오를 더 잘 처리할 수 있습니다. 이렇게 작은 단위를 사용하게 되면 검색의 정확성는 높아지지만, 검색 비용 또한 함께 증가하는 단점이 있습니다.

kNN-LM은 토큰(token) 수준에서 가장 가까운 이웃(NN: Nearest Neighbor)을 검색하여 언어 모델의 예측을 개선하는 방법입니다. NPMCOG는 구(phrase) 단위에서 가장 유용한 문구를 찾아내어 언어 생성 과정에 활용하는 방식이며, FLARE는 단어(word) 단위에서 동작하며, 능동 검색 전략(active retrieval strategy)를 사용합니다. 이는 언어 모델이 낮은 확률을 갖는 단어를 생성하려고 할 때만 검색을 수행하는 것으로, 임시로 다음 문장을 생성하여 문서를 검색한 다음, 검색된 문서에 따라 다음 문장을 다시 생성하여 후속 문장을 예측하는 식으로 동작합니다. RETRO는 청크(chunk) 단위에서 동작하며 이전 청크를 가지고 가장 가까운 이웃(nearest neighbor) 청크를 검색하여 문맥 정보를 통합하고 다음 청크 생성을 유도합니다.

정형 데이터를 사용한 증강(Augmented with Structured Data)

지식 그래프(KG: Knowledge Graphs)와 같은 구조화된 데이터 소스들이 RAG 시스템에서 점차 통합되고 있습니다. 잘 구조화된 데이터는 검증된 고품질 데이터 컨텍스트를 제공하여 모델이 잘못된 정보를 생성할 가능성을 줄입니다. 또한, 정확하고 신뢰할 수 있는 정보를 제공함으로써 RAG 시스템의 성능을 향상시킵니다. 특히 복잡하고 지식 기반의 작업에서 유용하며, RAG의 성능을 더욱 향상시킬 수 있습니다. 이러한 접근 방식은 RAG 시스템이 더욱 정교하고 신뢰할 수 있는 정보를 생성하고 검색하는 데 도움을 줍니다.

RET-LLM은 과거 대화들에서 관계를 추출하여 개인화된 지식 그래프 메모리(Knowledge Graph Memory)를 구축한 뒤, 지식을 저장하고 향후에 접근하여 활용하는 방법입니다. SURGE는 지식 그래프에서 검색된 관련 하위 그래프를 GNN(Graph Neural Networks)을 사용하여 임베딩합니다. 이러한 방식을 사용하여 생성된 텍스트와 검색된 문서들 간의 일관성을 보장하고, 언어 모델이 문맥적으로 관련 없는 응답을 생성하는 것을 방지합니다. KnowledgeGPT는 미리 정의된 지식 베이스(KB: Knowledge Base) 동작 함수를 포함하는 검색 쿼리를 생성하는 방식으로 동작합니다. 또한, 개인화된 지식 베이스에 별도로 지식을 저장하여 개별 사용자의 니즈(needs)를 충족시킬 수 있습니다.

LLM이 생성한 콘텐츠를 사용한 증강(LLM Generated Content RAG)

LLM이 생성한 콘텐츠는 RAG에서 보조적인 정보로 활용됩니다. 이러한 방식은 RAG가 조회한 보조 정보가 항상 효과적이지 않을 수 있음을 인식하고, LLM 자체가 생성한 컨텐츠를 검색 목적으로 사용하는 새로운 접근 방식입니다. 아래 소개한 SKR, GenRead, Self-mem 등의 방식을 사용하여 LLM 생성 컨텐츠를 RAG에 포함시키면 세부적인 작업에서 성능을 향상시킬 수 있습니다.

SKR은 레이블이 있는 학습 데이터셋을 사용하여 모델이 직접 답변할 수 있는 질문을 '알려진 것'으로, 검색 강화가 필요한 질문을 '알려지지 않은 것'으로 분류한 뒤, 알려지지 않은 질문에 대해서만 RAG를 적용하는 방식으로 동작합니다. GenRead는 검색기 대신 LLM을 사용하여 관련 문서를 생성하는 방식으로, 이렇게 생성된 문서는 기본 RAG(Naive RAG)에 의해 검색된 결과들보다 정확한 답변을 포함하고 있을 가능성이 더 높다고 밝혀졌습니다. Self-mem은 무한한 메모리 풀을 반복적으로 생성하는 방식으로, 원래 질문과 이중 문제를 결합하여 검색-강화된 생성 모델이 생성한 답변을 활용하여 자체적으로 개선(enhance itself)할 수 있도록 합니다.

증강 절차(Augmentation Process)

RAG 시스템은 한 번의 검색과 생성 절차를 거치지만, 중복 문서가 검색되는 경우에는 핵심 정보가 모호하게 표현되거나 정답과는 반대되는 정보를 포함하는 등의 생성 절차에 부정적인 영향을 미칠 수 있습니다. 또한, 이렇게 한 번의 검색과 생성 절차만 수행하는 경우에는 다단계 추론(multi-step reasoning)이 필요한 복잡한 질의에 대해서는 제대로 대답하지 못할 수 있습니다. 이러한 문제를 해결하기 위해 반복적 검색(iterative retrieval)과 적응형 검색(adaptive retrieval)과 같은 방식으로 검색 절차를 최적화합니다. 이러한 방법들은 검색 프로세스를 여러번 반복하거나 다양한 세부 작업 및 시나리오에 더 잘 적용(adaptive)할 수 있도록 조정하게 됩니다.

반복적 검색(Iterative Retrieval)

반복적 검색(Iterative Retrieval)은 사용자의 질의(query)와 모델이 생성한 텍스트를 기반으로 추가적인 문서를 수집하는 과정입니다. 이 방법은 검색기과 생성기 사이의 상호작용을 강화하고, 보다 정확하고 관련성 높은 답변 생성을 가능하게 합니다. RAG 시스템은 반복적 검색을 통해 다양한 출처로부터 정보를 수집하고 통합하며, 다단계 추론을 수행하고 더 복잡한 사용자 질의에 적응할 수 있도록 합니다. 주요한 방법론들로는 재귀적 검색과 멀티-홉 검색, 그리고 ITER-RETGEN과 IRCoT 등이 있습니다.

  • **재귀적 검색(Recursive Retrieval)**과 **멀티-홉 검색(Multi-hop Retrieval)**은 구조화된 인덱스를 통해 데이터를 먼저 처리한 다음, 여러 단계에 걸쳐 검색을 수행하는 방법입니다. 예를 들어, 계층적으로 풍부한 문서에서 각 섹션에 대한 요약을 만든 후, 해당 요약을 바탕으로 검색을 수행하고, 문서 내부의 특정 청크에 대해 두 번째 검색을 실시합니다.

  • ITER-RETGEN은 반복적인 검색과 생성 과정을 서로 협력(collaboratively)하며 활용하는 방식입니다. 검색-강화 생성(retrieval-enhanced generation)과 생성-강화 검색(generation-enhanced retrieval)을 번갈아가며 수행하며 특정 작업을 완수하기 위해 필요한 콘텐츠를 사용하여 답변을 생성하고, 다시 이를 검색에 필요한 정보 컨텍스트로 사용합니다.

  • IRCoT는 CoT(Chain-of-Thought) 방식을 반복적 검색 과정과 결합한 방식입니다. IRCoT는 추론 과정의 각 단계에서 수행하며, 각 생성된 문장들에 대한 관련 문서를 검색하는 절차를 반복적으로 수행하며 단계별 생각 과정(Chain-of-Thought)을 모델링하고, 생성된 내용에 기반하여 관련 정보를 검색하고, 다시 생성 과정을 개선합니다.

적응형 검색(Adaptive Retrieval)

적응형 검색(Adaptive Retrieval)은 RAG 시스템에서 검색 타이밍과 내용을 능동적으로 판단하고 최적화하는 접근 방식입니다. 이는 기존의 수동적 검색 방법과 달리, 언어 모델이 검색 과정을 더 효율적으로 관리하고 관련성 높은 정보를 획득하도록 합니다. 적응형 검색은 복잡한 작업을 위한 맥락적 정보를 제공하고 모델의 성능을 향상시키는 데 중요한 역할을 합니다. 주요한 적응형 검색 방법은 FLARE, Graph-Toolformer, WebGPT, Self-RAG 등이 있으며, 이러한 적응형 검색 방법론들은 RAG 시스템에서 검색 과정을 최적화하고, 모델이 더 관련성 높고 정확한 정보를 획득하도록 돕습니다.

  • FLARE는 언어 모델의 확률을 이용하여 검색 시기를 결정하는 방식입니다. 즉, 언어 모델(LM)이 생성하는 단어의 확률이 낮을 때 (= 모델의 생성이 불확실할 때), FLARE는 이를 신호로 삼아 생성 과정에 필요한 추가 정보를 검색합니다. 이렇게 하면 모델은 더 정확하고 관련성 높은 정보를 생성할 수 있게 됩니다. 하지만, 모델의 불확실성(= 낮은 확률)이 감지되었을 때만 검색을 수행하므로, 언제나 최적의 검색 타이밍을 보장하지는 않을 수 있습니다.

  • Graph-Toolformer는 언어 모델이 추가적으로 필요한 정보를 결정하고, 해당 정보를 검색하기 위해 쿼리를 생성하고 실행하는 과정을 통해 모델이 직접 필요한 정보를 수집하는 방식입니다. 수집한 정보는 생성 과정에 사용되므로 Graph-ToolFormer는 모델이 더 정확한 정보를 활용할 수 있도록 도와줍니다. 그러나 모델이 생성하는 쿼리문이 얼마나 정확한지, 또는 효율적인지에 따라 전체적인 검색 품질이 좌우될 수 있습니다.

  • WebGPT는 GPT-3 모델을 자동으로 학습하는 강화학습 프레임워크입니다. 학습한 GPT-3 모델은 텍스트 생성을 위한 검색 엔진으로 사용하며, 동작을 위해 질의 / 순위 스크롤 / 참조 인용 등의 기능들을 동작시키기 위한 특별한(special) 토큰들을 정의하고 사용합니다.

  • Self-RAG는 결과물을 평가하기 위해 검색(Retrieve)과 비평(Critic)의 2종류의 반영 토큰(reflection token)을 생성합니다. 이 때, 검색을 어느 시점에 할지를 모델이 자율적으로 결정하거나, 설정된 임계값(threshold)을 사용하여 검색 절차를 시작할 수 있습니다. Self-RAG를 사용하면 LLM이 리콜이 필요한지 여부를 자율적으로 결정할 수 있으므로 별도의 분류 모델(Classifier)를 학습시키거나 NLI 모델에 의존하지 않아도 됩니다. 즉, 정확한 답변을 생성하는 모델의 능력을 향상시킬 수 있게 됩니다.

RAG 평가 (RAG Evaluation)

RAG 평가(RAG Evaluation)는 RAG가 얼마나 효과적으로 동작하는지를 평가하는 것입니다. 평가는 크게 2가지 종류로 나뉘는데, 하나는 검색기나 생성기 등의 각각의 모듈들에 대한 독립적인 평가(independent evaluation)과 입력으로부터 출력까지의 전체 과정을 평가하는 엔드-투-엔드 평가(end-to-end evaluation; 종단간 평가)가 있습니다. 각각의 평가 방법들과 평가 시의 지표(metric), 사용할 수 있는 프레임워크(framework) 등에 대해서 알아보도록 하겠습니다.

평가 방법 (Evaluation Methods)

독립 평가(Independent Evaluation)

독립 평가(Independent Evaluation)는 RAG의 개별 구성 요소인 검색기와 생성기를 개별적으로 평가하는 데 중점을 둡니다.

  • 검색 모듈(Retrieval Module) 은 검색엔진이나 추천 시스템 등과 유사하게 평가할 수 있습니다. 즉, 적중률(Hit Rate), MRR, NDCG, 정확도(Precision) 등과 같은 평가 지표들을 사용하여 사용자의 질의 또는 세부 작업에 알맞는 검색 결과를 가져왔는지를 평가할 수 있습니다.
  • 생성 모듈(Generation Module) 은 사용자 질의와 검색된 문서들을 통합하여 형성된 강화 또는 합성 입력(Enhanced or Synthesized Input)을 평가합니다. (이 때 평가 지표가 최종 답변이 아님에 주의해주세요 - 최종 답변은 보통 종단간 평가 시에 평가합니다.) 평가 지표는 문맥의 관련성(relevance) 또는 사용자 질의와 검색된 문서들간의 연관성 등을 사용합니다.

엔드-투-엔드 평가(End-to-End Evaluation; 종단간 평가)

엔드-투-엔드 평가(End-to-End Evaluation; 종단간 평가)는 RAG 모델에 의해 생성된 최종 응답을 평가합니다. 즉, 사용자의 질의와 모델이 최종적으로 생성한 답변 사이의 관련성 및 정렬과 같은 요소가 고려됩니다. 레이블이 없는 콘텐츠(Unlabeled Content)에 대한 평가 시에는 답변 충실도(Answer Fidelity), 답변 관련성(Answer Relevance), 무해성(Harmlessness) 등을 지표로 사용합니다. 레이블이 있는 콘텐츠(Labeled Content)에 대한 평가 시에는 정확도(Accuracy) 및 EM(Exact Match) 등을 사용합니다. 그 외 수행하는 작업에 따라서 별도의 지표를 사용하기도 합니다. 예를 들어 질문-답변 작업에서는 EM, 요약 작업에서는 E-F1 및 UniEval을, 기계 번역 작업에는 BLEU 등과 같은 다양한 지표들을 사용할 수 있습니다.

주요 평가 지표 및 기능(Key Metrics and Abilities)

RAG 평가 시의 3가지 핵심적인 지표(Key Metrics)는 답변의 충실성(Faithfulness), 답변 관련성(Answer Relevance) 및 문맥 관련성(Context Releavance)입니다.

  • 답변의 충실성(Faithfulness) 은 RAG 시스템이 생성한 답변이 문맥과 일치하고 문맥에서 벗어나거나 모순되지 않는지를 확인하는 지표입니다.

  • 답변 관련성(Answer Relevance) 은 생성된 답변이 제시된 질문과 직접적으로 관련이 있는지를 확인합니다.

  • 문맥 관련성(Context Releavance) 은 문맥 정보의 정확성과 목표 검색에 중점을 둡니다.

  • 그 외, OpenAI의 보고서에서는 "문맥적 리콜(Context Recall)"도 보조 지표로 언급했습니다. 이는 사용자 질문에 답하는데 필요한 모든 관련 정보들을 검색했는지 여부를 측정하는 지표입니다.


또한, RAG의 주요 기능들(Key Abilities)에 대해서도 평가해야 합니다. RGB의 연구는 노이즈 견고성(Noise Robustness), 부정적 거부(Negative Rejection), 정보 통합(Information Integration), 사실성 견고성(Conterfactual Robustness)의 4가지 기본적인 능력(basic abilities)에 기반하여 RAG에 대한 벤치마크 기준을 제안하였습니다:

  • 노이즈 견고성(Noise Robustness) 은 노이즈가 많은 문서들을 효율적으로 처리하는 능력입니다. 이 때, 노이즈가 있는 문서는 사용자 질의와 관련은 있지만 유용한 정보를 포함하고 있지는 않은 문서를 뜻합니다. 노이즈 견고성이 높은 경우 관련성이 낮거나 품질이 낮은 문서들을 걸러낼 수 있습니다.

  • 부정적 거부(Negative Rejection) 는 검색 결과로 얻은 문서들로 사용자의 질문에 답하기 어려울 때 응답을 거부할 수 있는 능력입니다. 즉, 사용자 질의에 대해 부정확하거나 오해의 소지가 있는 답변을 제공하는 대신, 정보가 부족함을 알릴 수 있는 기능입니다.

  • 정보 통합(Information Integration) 은 여러 개의 서로 다른 문서들의 정보를 통합하여 보다 복잡한 질문에 답할 수 있는 능력입니다. 다양한 출처의 정보를 종합적으로 이해해야 하는 질문에 정확한 답변을 제공할 수 있는 능력입니다.

  • 사실성 견고성(Conterfactual Robustness) 은 잘못된 정보를 식별하고 처리하는 모델의 능력입니다. 검색된 정보의 잠재적 위험에 대한 지침을 처리하고, 부정확한 정보를 식별 및 수정하여 답변의 신뢰성을 향상시키는 능력입니다.

평가 프레임워크(Evaluation Frameworks)

RAG 평가 프레임워크 분야에는 RAGAS와 ARES가 있으며, 앞에서 설명한 3가지 핵심 지표인 답변의 충실성, 답변 관련성, 문맥 관련성에 대해서 평가합니다. 추가로 오픈소스 라이브러리인 TruLens도 이와 유사한 평가 모드를 제공합니다. (TruLens는 RAGAS와 유사하므로 여기에서는 RAGAS와 ARES만을 소개하겠습니다.)

RAGAS (RAG 파이프라인 평가 프레임워크)

RAGAS는 사용자 질의와 유사한 문맥을 식별하는 검색 시스템의 능력, 검색 결과를 잘 사용하는 LLM의 능력, 생성된 답변의 품질이라는 3가지 주요 측면에 중점을 두고 평가합니다. 평가 시에는 답변 충실도, 답변 관련성 및 문맥 관련성을 측정하는데 사용할, 사용자가 직접 작성한 간단한 프롬프트(simple handwritten prompt)를 기반으로 동작하며, 완전히 자동화된 평가가 가능합니다.

ARES (RAG 시스템을 위한 자동화된 평가 프레임워크)

ARES의 주요 평가 지표는 RAGAS와 유사합니다. 하지만 사용자가 직접 작성하는 프롬프트에 기반하여 동작하는 RAGAS와는 달리, ARES는 새로운 RAG 평가 설정을 적용할 수 있습니다. ARES는 평가의 정확도를 높이기 위해 예측-기반 추론(PDR, Predictive-Driven Reasoning)이라는 기법을 활용합니다. 또한 합성 데이터셋으로 문맥 관련성 및 답변 품질을 평가할 수 있습니다.

RAG의 미래 전망 (Future Prospects)

RAG의 수직적 최적화 (Vertical Optimization of RAG)

RAG의 수직적 최적화(Vertical Optimization)는 RAG 기술의 특정 영역에서의 개선 및 최적화를 뜻합니다. 주요 과제들은 아래와 같습니다.

  • 긴 컨텍스트 과제(Long Context Challenge) 는 RAG에서 긴 컨텍스트를 처리하는 방법에 대한 것입니다. 이러한 긴 컨텍스트는 LLM의 컨텍스트 윈도우의 크기 한계에 따라 생긴 것으로, 어떻게 하면 무한대로 컨텍스트 윈도우를 확장할 수 있을지와 어떻게 하면 이러한 제약이 없을 때 RAG가 어떻게 구성돼야 하는지 등에 초점을 맞추고 있습니다.

  • RAG의 견고성(RAG Rorbustness) 는 검색된 문서들에 노이즈가 포함되어 있거나, 사실과 모순되는 내용이 포함되어 있을 때 RAG의 견고성을 강화하는 과제입니다. 이러한 견고성 측면의 과제는 최근 점점 더 많은 관심을 받고 있습니다.

  • RAG와 파인튜닝의 시너지 효과(RAG & Fine-tuning Synergy) 는 이름 그대로 RAG와 파인튜닝 간의 시너지에 대한 연구 과제입니다. 매개변수화(parameterization) 및 비-매개변수화(non-parameterization)의 장점들을 결합한 하이브리드 접근 방식에 대한 연구가 이뤄지고 있습니다.

  • 엔지니어링 측면의 성숙도(Engineering Pracitce) 는 엔지니어링 측면에서의 RAG 구현 및 협업에 대한 과제입니다. 대규모 지식 베이스(KB) 시나리오에서 검색 효율성 및 문서 회수율을 어떻게 개선할 수 있을지에 대한 문제는 물론, LLM에 의한 민감한 문서 정보 유출과 같은 기업의 데이터 보안 측면을 개선할 수 있는지가 주요한 과제입니다.

이러한 수직적 최적화의 핵심 과제는 RAG의 생성 단계에서 LLM의 컨텍스트 윈도우 크기 제한에 의해 영향을 받는 것을 최소화하는 것입니다. 이러한 한계를 해결하기 위해서는 생성된 콘텐츠의 효율성이나 품질을 저하시키지 않으면서도 LLM이 확장된 컨텍스트를 처리하는 방법을 개선하는 등에 대한 추가적인 연구가 필요합니다.

RAG의 수평적 확장

개별 영역에서의 개선 외, RAG의 적용 범위의 수평적 확장 또한 주요한 주제입니다. 예를들어 현재 주요한 방식인 텍스트 기반의 질의-응답을 넘어, 이미지나 코드, 오디오나 비디오와 같은 멀티모달에서의 확장 등이 있습니다. 주요한 예시들은 다음과 같습니다:

  • 이미지 분야에서는 BLIP-2가 이미지 인코더와 LLM의 파라매터를 고정(freeze)한 뒤, 시각-언어 사전학습(Vision-Language Pretrain)을 통해 이미지에서 텍스트로의 변환을 용이하게 하고 학습 비용을 낮췄습니다.

  • 텍스트 생성 분야에서는 언어 모델에서 텍스트 생성을 안내하는 이미지를 생성하여 개방형 텍스트 생성 작업에 영향을 주는 VBR 방식이 공개되어 있습니다.

  • 소스 코드쪽에서는 코드 관련 학습을 위한 RBPS 방식이 있습니다. RBPS는 인코딩 또는 빈도 분석을 기반으로 유사한 코드 예제를 검색합니다.

  • 구조화된 지식(structured knowledge) 분야에서는 지식 그래프에서 사실을 검색하여 질문에 대한 답변 작업을 지원하는 CoK 방식이 소개되었습니다.

  • 오디오 및 비디오 영역에서는 오디오용 GSS 방법과 비디오용 Vid2Seq은 특수 시간 표시로 언어 모델을 향상시켜 자동 음성 인식과 이벤트 경계 및 텍스트 설명의 예측을 개선합니다.

이러한 미래 방향은 RAG가 깊이(수직적 최적화)와 넓이(수평적 확장) 모두에서 진화해나가며 복잡한 문제를 해결하고 RAG의 적용 범위가 확장되는 것을 보여줍니다.

RAG의 생태계 (Ecosystem of RAG)

RAG 생태계는 크게 2가지 분야로 나누어 살펴볼 수 있습니다. 하나는 각 개별 작업에 대한 것(Downstream Tasks and Evaluation)이며, 다른 하나는 기술 분야(Technical Stack)에 대한 것입니다.

세부 작업 및 평가(Downstream Tasks and Evaluation)

  • 통합 및 잠재력: RAG는 광범위한 지식 기반을 통합하여 복잡한 쿼리를 처리하고 풍부한 응답을 생성하는 언어 모델의 능력을 향상시킵니다.

  • 다운스트림 작업에서의 성능: RAG는 개방형 질문 답변 및 사실 확인과 같은 작업에서 주목할 만한 성능을 발휘하여 응답의 정확성, 관련성, 다양성 및 깊이를 개선합니다.

  • 다중 도메인 애플리케이션: 향후에는 특히 의학, 법률, 교육과 같은 전문 영역에서 멀티 도메인 애플리케이션에 대한 적응성과 보편성을 탐구할 것입니다. RAG는 미세 조정 방식에 비해 교육 비용은 낮추고 성능은 향상시킬 수 있습니다.

  • 평가 시스템 개선: RAG의 평가 시스템을 개선하는 것은 매우 중요합니다. 향후 작업에는 문맥 관련성, 콘텐츠 창의성, 무해성 등의 측면에 초점을 맞춰 다양한 작업에 대한 보다 정확한 평가 지표와 프레임워크를 개발하는 것이 포함됩니다.

  • 해석 가능성 향상: RAG를 통해 모델의 해석 가능성을 높이는 것은 사용자가 모델이 특정 응답을 하는 방법과 이유를 이해하는 데 도움이 되는 의미 있는 미래 방향입니다.

기술 스택(Technical Stack)

  • 개발에서 주도적인 역할: 기술 스택 개발은 RAG 생태계에서 중추적인 역할을 해왔습니다. 풍부한 RAG 관련 API 세트로 잘 알려진 LangChain 및 LLamaIndex와 같은 도구는 대규모 모델 시대에 필수적인 요소가 되었습니다.
  • 새로운 기술: 고유한 기능에 초점을 맞춘 새로운 기술들이 개발되고 있습니다. 예를 들어 Flowise AI는 드래그 앤 드롭 인터페이스를 사용하여 RAG를 비롯한 다양한 AI 애플리케이션의 로우코드 구현을 강조합니다.
  • 기존 공급업체의 확장: 전통적인 소프트웨어 및 클라우드 서비스 제공업체는 RAG 요소를 포함하도록 서비스를 확장했습니다. 예를 들어 Weaviate의 Verba는 개인 비서에 초점을 맞추고 있으며, Amazon의 Kendra는 RAG를 기반으로 하는 지능형 엔터프라이즈 검색 서비스 도구를 제공합니다.
  • 상호 강화: 기술 스택과 RAG의 발전은 서로를 상호 강화하며, 새로운 기술이 RAG의 진화를 주도하고 그 반대의 경우도 마찬가지입니다.

RAG 생태계의 이러한 측면은 다양한 애플리케이션에서 모델의 실용성과 적응성을 향상시키고 이러한 발전을 지원하기 위해 기본 기술 인프라를 개선하는 데 초점을 맞추고 있음을 나타냅니다.

RAG 기술 전체 보기

더 읽어보기

원본 서베이 논문


:fire:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:incoming_envelope:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 뉴스 발행에 힘이 됩니다~ :bowing_man:

5개의 좋아요