RAG(Retrieval-Augmented Generation) 시스템의 진화와 발전을 탐구하세요. RAG가 대규모 언어 모델(LLM)을 외부 지식으로 향상시키는 방법을 알아보세요.
소개
검색 증강 생성(RAG)은 대규모 언어 모델(LLM)을 사용할 때 발생하는 도메인 지식 격차, 사실성 문제, 환각(hallucination)과 같은 과제를 해결하기 위한 유망한 솔루션으로 부상하고 있습니다. 데이터베이스와 같은 외부 지식 소스를 통합함으로써 RAG는 LLM을 향상시켜 최신 지식이 필요한 지식 집약적 환경이나 도메인 특화 애플리케이션에서 특히 유용합니다. 다른 방법과 달리 RAG는 특정 작업을 위해 LLM을 재학습시킬 필요가 없으며, 이는 중요한 장점입니다. 특히 대화형 에이전트에서 최근 인기를 끌고 있는 점이 그 관련성을 잘 보여줍니다.
Gao et al. (2023)의 최근 조사는 RAG의 주요 발견, 실용적 함의, 최신 접근 방식에 대한 귀중한 통찰력을 제공합니다. 이 조사는 검색, 생성, 증강 기법을 포함한 RAG 시스템의 다양한 구성 요소를 자세히 다루며, 평가 방법론, 응용 분야 및 관련 기술을 검토합니다.
RAG란 무엇인가
검색 증강 생성(RAG)은 신뢰할 수 있는 외부 지식 베이스의 참조를 통합하여 대규모 언어 모델의 성능을 향상시키며, 모델의 방대한 학습 데이터를 보완합니다. 대규모 언어 모델(LLM)은 방대한 데이터 세트와 수십억 개의 매개변수를 활용하여 질문 응답, 언어 번역, 텍스트 완성과 같은 작업에 대한 응답을 생성합니다. RAG는 LLM의 기능을 확장하여 특정 도메인이나 내부 조직 지식 베이스에 맞게 조정하며, 모델 재학습이 필요하지 않습니다. 이 접근 방식은 다양한 맥락에서 관련성, 정확성 및 유용성을 보장하기 위해 LLM 출력을 향상시키는 비용 효율적인 수단을 제공합니다.
RAG의 주요 구성 요소
프로세스를 다음 단계/구성 요소로 나눌 수 있습니다:
- 입력: LLM 시스템에 제기되는 질문을 말합니다. RAG가 없으면 LLM이 이 질문에 직접 응답합니다.
- 인덱싱: RAG를 사용할 때 관련 문서 집합이 인덱싱됩니다. 여기에는 문서를 청크(chunk)로 나누고, 이러한 청크에 대한 임베딩(embedding)을 생성한 다음, 이를 벡터 저장소에 인덱싱하는 작업이 포함됩니다. 추론 중에는 쿼리도 유사하게 임베딩됩니다.
- 검색: 쿼리를 인덱싱된 벡터와 비교하여 관련 문서를 검색하며, 그 결과 “관련 문서” 집합이 선택됩니다.
- 생성: 검색된 문서가 원래 프롬프트와 병합되어 추가 컨텍스트를 제공합니다. 이 결합된 텍스트와 프롬프트는 응답 생성을 위해 모델에 입력되어 최종 출력이 사용자에게 제공됩니다.
주어진 예에서, RAG 없이 모델만 사용하면 최신 지식 부족으로 인해 적절히 응답하지 못할 수 있습니다. 반면 RAG를 사용하면 시스템이 질문에 정확히 답변하는 데 필요한 정보에 액세스할 수 있습니다.
RAG 패러다임
최근 몇 년 동안 RAG 시스템은 Naive RAG에서 Advanced RAG 및 Modular RAG로 진화했습니다. 이러한 발전은 성능, 비용 및 효율성과 관련된 특정 문제를 극복하는 것을 목표로 했습니다.
Naive RAG
Naive RAG는 앞서 설명한 인덱싱, 검색 및 생성의 전통적인 프로세스를 통해 작동합니다. 기본적으로 사용자 입력을 사용하여 관련 문서를 쿼리하고, 이를 프롬프트와 결합하여 모델에 제공하여 최종 응답을 생성합니다. 애플리케이션이 다중 턴 대화 상호작용을 포함하는 경우 대화 기록을 프롬프트에 통합할 수 있습니다.
그러나 Naive RAG에는 정밀도 저하(검색된 청크의 정렬 불일치), 재현율 저하(모든 관련 청크를 검색하지 못함)와 같은 한계가 있습니다. 또한 LLM이 오래된 정보를 제공받을 위험이 있으며, 이는 RAG 시스템이 처음에 해결하려는 주요 문제입니다. 이로 인해 환각 문제와 부정확한 응답 생성이 발생할 수 있습니다.
또한 증강이 구현될 때 중복 및 반복에 대한 우려가 발생할 수 있습니다. 여러 검색된 구절을 처리할 때는 순위 지정 및 스타일과 톤의 조정에 대한 고려 사항이 포함됩니다. 더욱이 생성 작업이 증강된 정보에 지나치게 의존하여 모델이 검색된 내용을 단순히 반복할 위험이 있다는 점이 중요한 과제입니다.
Advanced RAG
Advanced RAG는 Naive RAG에서 관찰된 단점, 특히 검색 품질을 향상시키는 솔루션을 제공합니다. 이 개선은 사전 검색, 검색, 사후 검색 프로세스 전반에 걸친 최적화를 포함합니다.
사전 검색 단계에서는 데이터 세분성 향상, 인덱스 구조 최적화, 메타데이터 추가, 정렬 최적화, 혼합 검색의 5가지 주요 단계를 통해 데이터 인덱싱을 개선합니다. 이러한 조치는 인덱싱된 데이터의 품질을 높이는 것을 목표로 합니다.
검색 단계에서는 임베딩 모델 자체를 최적화하여 추가로 개선할 수 있습니다. 이 최적화는 컨텍스트 청크의 품질에 직접적인 영향을 미칩니다. 검색 관련성을 개선하기 위해 임베딩을 미세 조정하거나 컨텍스트의 미묘한 차이를 더 잘 포착하는 동적 임베딩(예: OpenAI의 embeddings-ada-02 모델)을 사용하는 전략이 포함될 수 있습니다.
사후 검색 최적화는 컨텍스트 창 한계를 우회하고 노이즈가 많거나 방해가 되는 정보를 관리하는 데 중점을 둡니다. 재순위화는 이러한 과제를 해결하기 위한 일반적인 접근 방식으로, 관련 컨텍스트를 프롬프트의 가장자리로 이동하거나 쿼리와 관련 텍스트 청크 간의 의미적 유사성을 재계산하는 기술을 포함합니다. 프롬프트 압축 기술도 이러한 문제를 관리하는 데 도움이 될 수 있습니다.
Modular RAG
Modular RAG는 이름에서 알 수 있듯이 검색 증강 생성 프레임워크 내에서 기능 모듈을 향상시킵니다. 여기에는 유사성 검색을 위한 검색 모듈 통합과 검색기(retriever)에 미세 조정 적용이 포함됩니다. Naive RAG와 Advanced RAG는 모두 고정된 모듈로 구성된 Modular RAG의 특정 인스턴스로 볼 수 있습니다. 그러나 Extended RAG는 검색, 메모리, 융합, 라우팅, 예측, 태스크 어댑터와 같은 추가 모듈을 도입하여 각각 고유한 문제를 해결합니다. 이러한 모듈은 특정 작업 컨텍스트에 맞게 재구성될 수 있어 Modular RAG에 더 큰 다양성과 유연성을 제공합니다. 이러한 유연성은 작업 요구 사항에 따라 모듈을 추가, 교체 또는 조정할 수 있게 합니다.
RAG 시스템 구축에 유연성이 증가함에 따라 RAG 파이프라인을 개선하기 위한 다양한 최적화 기술이 제안되었습니다:
- 하이브리드 검색 탐색: 이 접근 방식은 키워드 기반 검색과 의미 검색과 같은 검색 기술을 결합하여 관련성 있고 컨텍스트가 풍부한 정보를 검색하며, 특히 다양한 쿼리 유형과 정보 요구를 해결하는 데 유용합니다.
- 재귀적 검색 및 쿼리 엔진: 작은 의미 청크로 시작하여 점진적으로 더 큰 청크를 검색하여 컨텍스트를 풍부하게 하는 재귀적 검색 프로세스를 포함하며, 효율성과 컨텍스트 풍부성 사이의 균형을 유지합니다.
- StepBack-prompt: 이 프롬프팅 기술은 LLM이 개념과 원리를 추상화하여 보다 근거 있는 응답으로 추론을 이끌도록 합니다. RAG 프레임워크 내에서 이 기술을 채택하면 LLM이 특정 사례를 넘어 필요할 때 더 광범위하게 추론할 수 있습니다.
- 하위 쿼리: 트리 쿼리 또는 청크 순차 쿼리와 같은 다양한 쿼리 전략을 여러 시나리오에 사용할 수 있습니다. 예를 들어 LlamaIndex는 하위 질문 쿼리 엔진을 제공하여 쿼리를 여러 질문으로 분해하고 각각 다른 관련 데이터 소스를 활용합니다.
- 가상 문서 임베딩(HyDE): HyDE는 쿼리에 대한 가상의 답변을 생성하고 이를 임베딩한 다음, 쿼리를 직접 사용하는 대신 가상 답변과 유사한 문서를 검색하는 데 활용합니다.
RAG의 프레임워크
이 섹션에서는 RAG 시스템을 구성하는 구성 요소(검색, 생성, 증강)의 중요한 발전을 요약합니다.
검색
RAG 시스템 내에서의 검색은 검색기로부터 고도로 관련된 컨텍스트를 검색하는 것을 포함하며, 다양한 방법으로 개선될 수 있습니다:
의미적 표현 향상:
청크 전략 개선은 콘텐츠와 애플리케이션 요구 사항에 따라 가장 적절한 청크 전략을 선택하는 데 중요합니다. 모델에 따라 다른 블록 크기가 효과적일 수 있습니다(예: 단일 문장에는 sentence transformers, 256 또는 512 토큰 블록에는 text-embedding-ada-002). RAG 시스템에서 검색을 최적화하기 위해 사용자 질문 길이, 애플리케이션, 토큰 제한 등의 요소를 고려하여 다양한 청크 전략을 실험하는 것이 일반적입니다.
전문 도메인의 경우 사용자 쿼리를 정확히 이해하기 위해 임베딩 모델을 미세 조정해야 할 수 있습니다. BAAI에서 개발한 BGE-large-EN과 같은 임베딩 모델은 도메인 지식이나 특정 다운스트림 작업에 맞게 미세 조정되어 검색 관련성을 최적화할 수 있습니다.
쿼리와 문서 정렬:
Query2Doc, ITER-RETGEN, HyDE와 같은 쿼리 재작성 기술은 의미 정보가 부족하거나 부정확한 표현이 포함된 쿼리를 개선하는 데 중점을 둡니다.
임베딩 변환은 쿼리 임베딩을 최적화하여 작업과 더 밀접하게 관련된 잠재 공간으로 정렬합니다.
검색기와 LLM 정렬:
검색기 미세 조정은 LLM의 피드백 신호를 활용하여 검색 모델을 개선합니다. 예로는 증강 적응 검색기(AAR), REPLUG, UPRISE가 있습니다.
PRCA, RECOMP, PKG와 같은 외부 어댑터를 통합하면 검색기와 LLM 간의 정렬 프로세스를 지원합니다.
생성
RAG 시스템 내의 생성기는 검색된 정보를 일관된 텍스트로 변환하는 중요한 역할을 하며, 결국 모델의 최종 출력을 구성합니다. 이 프로세스는 종종 다양한 입력 데이터를 포함하므로 쿼리와 문서에서 파생된 입력에 대한 언어 모델의 적응을 개선하기 위한 노력이 필요합니다. 이러한 개선은 사후 검색 프로세스와 미세 조정을 통해 달성할 수 있습니다:
고정 LLM을 사용한 사후 검색: 이 접근 방식은 LLM 자체를 수정하지 않고 검색 결과의 품질을 향상시키는 데 중점을 둡니다. 정보 압축 및 결과 재순위화와 같은 작업이 사용됩니다. 정보 압축은 노이즈를 줄이고, 컨텍스트 길이 제한을 해결하며, 생성 효과를 향상시키는 데 도움이 되며, 재순위화는 가장 관련성 높은 항목을 상단에 배치하도록 문서를 재정렬합니다.
RAG를 위한 LLM 미세 조정: 생성기를 추가로 최적화하거나 미세 조정하면 생성된 텍스트가 자연스럽고 검색된 문서를 효과적으로 활용하여 RAG 시스템의 전반적인 성능을 향상시킬 수 있습니다.
증강
증강은 검색된 구절의 컨텍스트를 진행 중인 생성 작업과 원활하게 통합하는 프로세스를 포함합니다. 증강 프로세스의 단계와 데이터를 포함한 자세한 내용을 살펴보기 전에 RAG의 핵심 구성 요소에 대한 분류를 먼저 설정하겠습니다.
검색 증강은 사전 학습, 미세 조정, 추론을 포함한 다양한 단계에 적용될 수 있습니다.
증강 단계: 예를 들어 RETRO는 외부 지식을 기반으로 추가 인코더를 통합하여 처음부터 대규모 사전 학습을 위해 검색 증강을 사용하는 시스템을 보여줍니다. 미세 조정도 RAG와 통합되어 RAG 시스템을 개선하고 정제할 수 있습니다. 추론 단계에서는 특정 작업 요구 사항을 충족하고 RAG 프로세스를 더욱 정제하기 위해 검색된 콘텐츠를 효과적으로 통합하는 다양한 기술이 사용됩니다.
증강 소스: RAG 모델의 효과는 증강 데이터 소스의 선택에 크게 의존합니다. 이러한 소스는 비정형, 정형 및 LLM 생성 데이터로 분류할 수 있습니다.
증강 프로세스: 다단계 추론과 같은 복잡한 문제를 해결하기 위해 다양한 방법이 제안되었습니다:
- 반복 검색: 정보의 깊이와 관련성을 풍부하게 하기 위해 여러 검색 주기를 수행합니다. 이 방법을 활용하는 주목할 만한 접근 방식으로는 RETRO와 GAR-meets-RAG가 있습니다.
- 재귀 검색: 한 검색 단계의 출력을 다음 단계의 입력으로 반복적으로 구축하여 복잡한 쿼리(예: 학술 연구 및 법적 사례 분석)에 대한 관련 정보를 더 깊이 탐색할 수 있습니다. 주목할 만한 접근 방식으로는 IRCoT와 Tree of Clarifications가 있습니다.
- 적응 검색: 검색 프로세스를 특정 요구에 맞게 사용자 지정하여 검색에 최적의 시점과 콘텐츠를 식별합니다. 이 방법을 활용하는 주목할 만한 접근 방식으로는 FLARE와 Self-RAG가 있습니다.
아래 그림은 RAG 연구의 포괄적인 표현을 제공하며, 단계, 소스 및 프로세스를 포함한 다양한 증양 측면을 보여줍니다.
RAG 평가
다양한 애플리케이션 시나리오에서 RAG 모델의 성능을 평가하는 것은 효과성을 이해하고 최적화하는 데 중요합니다. 전통적으로 RAG 시스템의 평가는 F1 및 EM과 같은 작업별 메트릭을 사용하여 다운스트림 작업에서의 성능을 측정하는 데 중점을 두었습니다. RaLLe는 지식 집약적 작업에서 검색 증강 대규모 언어 모델을 평가하는 데 사용되는 주목할 만한 프레임워크입니다.
RAG의 평가 대상은 검색과 생성 모두를 포함하며, 검색된 컨텍스트와 생성된 콘텐츠의 품질을 평가하는 것을 목표로 합니다. 검색 품질을 평가하는 데 일반적으로 사용되는 메트릭은 추천 시스템 및 정보 검색과 같은 도메인에서 차용되며, NDCG 및 Hit Rate가 포함됩니다. 한편 생성 품질 평가는 레이블이 없는 콘텐츠의 경우 관련성 및 유해성, 레이블이 있는 콘텐츠의 경우 정확성과 같은 측면을 평가하는 것을 포함합니다. RAG 평가 방법은 수동 및 자동 접근 방식을 모두 포함할 수 있습니다.
RAG 프레임워크의 평가는 일반적으로 세 가지 주요 품질 점수와 네 가지 능력에 중점을 둡니다. 품질 점수는 컨텍스트 관련성(검색된 컨텍스트의 정밀도와 특이성), 답변 충실도(검색된 컨텍스트에 대한 답변의 충실성), 답변 관련성(제기된 질문에 대한 답변의 관련성) 측정을 포함합니다. 또한 네 가지 능력은 RAG 시스템의 적응성과 효율성을 측정하는 데 도움이 됩니다: 노이즈 강건성, 부정 거부, 정보 통합, 반사실적 강건성. 아래는 RAG 시스템의 다양한 측면을 평가하는 데 사용되는 메트릭 요약입니다:
RGB 및 RECALL과 같은 다양한 벤치마크가 RAG 모델을 평가하는 데 사용됩니다. RAGAS, ARES, TruLens와 같은 도구는 RAG 시스템 평가 프로세스를 자동화하기 위해 만들어졌습니다. 이러한 시스템 중 일부는 위에서 정의한 특정 품질 점수를 결정하기 위해 LLM을 사용합니다.
RAG의 과제와 미래
이 개요에서는 RAG의 다양한 연구 측면과 검색, 증강 및 생성 구성 요소를 개선하기 위한 다양한 전략을 살펴보았습니다. RAG 시스템을 계속 개발하고 개선함에 따라 Gao et al., 2023이 강조한 몇 가지 과제는 다음과 같습니다:
- 컨텍스트 길이: LLM이 컨텍스트 창 크기를 계속 확장함에 따라 RAG가 고도로 관련되고 중요한 컨텍스트를 포착하도록 적응하는 것이 과제입니다.
- 강건성: 반사실적 및 적대적 정보를 처리하는 것은 RAG 시스템의 강건성을 측정하고 향상시키는 데 중요합니다.
- 하이브리드 접근 방식: RAG와 미세 조정 모델을 모두 최적으로 사용하는 방법을 더 잘 이해하기 위한 연구가 진행 중입니다.
- LLM 역할 확장: LLM의 역할과 기능을 확장하여 RAG 시스템을 더욱 향상시키는 데 관심이 증가하고 있습니다.
- 스케일링 법칙: LLM 스케일링 법칙을 조사하고 이를 RAG 시스템에 적용하는 것은 여전히 더 많은 이해가 필요한 영역입니다.
- 프로덕션 준비 RAG: 프로덕션 등급 RAG 시스템을 개발하려면 성능, 효율성, 데이터 보안 및 개인 정보 보호를 포함한 다양한 영역에서 엔지니어링 우수성이 필요합니다.
- 다중 모달 RAG: RAG 연구는 주로 텍스트 기반 작업에 초점을 맞추었지만, 이미지, 오디오, 비디오 및 코드와 같은 더 넓은 도메인을 지원하기 위해 모달리티를 확장하는 것에 관심이 증가하고 있습니다.
- 평가: RAG로 복잡한 애플리케이션을 구축하려면 컨텍스트 관련성, 창의성, 콘텐츠 다양성, 사실성 등을 평가하기 위한 세부적인 메트릭과 평가 도구가 필요합니다. 또한 RAG에 대한 개선된 해석 가능성 연구와 도구가 필요합니다.
대규모 언어 모델과 RAG 통합 방법
대규모 언어 모델(LLM)로 검색 증강 생성(RAG)을 구현하려면 데이터 세트 준비 및 LLM 설정 통합을 포함한 여러 단계가 필요합니다. 이 프로세스를 통해 LLM은 검색 기술을 활용하고 더 정확하고 컨텍스트에 맞는 답변을 생성할 수 있습니다.
RAG 기술을 LLM과 통합하는 방법에 대한 자세한 내용은 블로그를 참조하세요: 대규모 언어 모델과 검색 증강 생성(RAG) 통합을 위한 단계별 튜토리얼

출처: novita.ai
결론
요약하자면, RAG 시스템의 진화는 빠르게 진행되었으며, 맞춤화를 제공하고 다양한 도메인에서 성능과 유용성을 향상시키는 고급 패러다임이 등장했습니다. RAG 애플리케이션에 대한 수요 증가로 인해 다양한 구성 요소를 개선하는 방법이 개발되었습니다. 하이브리드 방법론에서 자체 검색에 이르기까지 현대 RAG 모델에서는 광범위한 연구 영역이 현재 탐구되고 있습니다.
novita.ai는 무한한 창의성을 위한 원스톱 플랫폼으로, 100개 이상의 API에 액세스할 수 있습니다. 이미지 생성 및 언어 처리에서 오디오 향상 및 비디오 조작에 이르기까지, 저렴한 종량제 요금제로 GPU 유지 관리의 번거로움 없이 자체 제품을 구축할 수 있습니다. 지금 무료로 사용해 보세요.
추천 읽을거리
