RAG (검색 증강 생성)

August 19, 2024
Tech

RAG (검색 증강 생성): AI의 답변을 더 정확하고 신뢰성 있게 만드는 기술

이전 콘텐츠에서는 LLM(Large Language Model)으로부터 원하는 답변을 얻기 위한 프롬프트 엔지니어링(Prompt Engineering) 방법들에 대해 살펴보았습니다. 이번에는 프롬프트만으로는 극복하기 어려운 LLM의 한계를 보완할 수 있는 자연어 처리 기술, RAG(검색 증강 생성)를 소개하겠습니다. RAG는 LLM이 더 정확하고 유용한 답변을 제공하도록 도와주는, 최근 가장 주목받는 기술 중 하나입니다. 이번 콘텐츠에서는 RAG의 [개념과 필요성], [동작 과정], 그리고 [RAG의 효과]에 대해 자세히 알아보겠습니다.

[개념과 필요성] RAG는 왜 필요한가?

LLM은 방대한 양의 텍스트 데이터를 사전 학습(pre-training)하여 강력한 언어 이해 및 생성 능력을 갖추고 있지만, 몇 가지 한계가 존재합니다. 대표적으로, 학습 데이터에 없는 최신 정보나 특정 도메인 지식을 제공하기 어려워, 최신 정보에 대한 접근 부족이나 신뢰성 문제가 발생할 수 있습니다.

  • [LLM의 한계로 거론되는 대표적인 문제들]
    • 잘못된 정보나 허위 정보를 얘기하는 환각 현상(Hallucination) 발생
    • ‘사전 학습’된 모델이기에 최신 정보에 접근이 어려움
    • 제한된 데이터로 인해 특정 분야의 전문 지식은 부족

일반적으로 LLM은 사용자의 질문에 대해 자신이 가지고 있는 정보를 바탕으로 답변하게 됩니다.

  • 예를 들어, 한 전자제품 회사에서 LLM 기반의 고객 상담 챗봇을 개발했다고 가정해보겠습니다. 고객이 ‘최근 구입한 TV의 펌웨어 업데이트 내용이 무엇인가요?’라고 물었을 때, 일반적으로 LLM은 회사의 최신 펌웨어 릴리스 정보를 모르기 때문에 전혀 엉뚱한 답변을 내놓게 됩니다.  사전 학습된 데이터에만 의존하고, 회사의 제품 정보나 내부 정보를 고려하지 않기 때문에 생기는 문제입니다.

이러한 문제를 해결하기 위해 다양한 방법이 제안되었는데, 그중 하나가 Fine-tuning(미세조정)입니다. Fine-tuning은 사전 학습된 모델에 특정 도메인의 데이터를 추가로 학습시켜 LLM을 최적화하는 방식입니다. 이를 통해 LLM은 특정 분야에 대한 전문 지식을 습득하고, 더 정확하고 전문적인 답변을 제공할 수 있습니다. 그러나 Fine-tuning은 시간과 비용이 많이 소요되며, 모델의 범용성을 잃게 되는 단점이 있습니다.

왼쪽 Prompt Engineering 부터 RAG, Fine-tuning, Pre-train 순으로 복잡도와 비용이 커집니다.
출처 : [Data-centric MLOps and LLMOps] Databricks

Fine-tuning의 비효율성 문제를 보다 효율적으로 해결하기 위한 방법으로 주목받고 있는 것이 바로 RAG(Retrieval-Augmented Generation)입니다. RAG는 외부의 신뢰할 수 있는 지식 베이스(예: 웹 문서, 기업 내부 문서)를 참조하여, AI가 응답을 생성하기 전에 필요한 정보를 검색하는 기술입니다. 이를 통해 모델을 재학습할 필요 없이 최신 정보와 특정 도메인 지식을 실시간으로 반영할 수 있으며, 모델의 범용성과 적응력을 유지하면서도 정확하고 신뢰할 수 있는 답변을 생성할 수 있습니다. 따라서 RAG는 LLM의 한계를 극복하면서도 그 장점을 살릴 수 있는 가장 효율적인 접근 방식이라고 할 수 있습니다.  (물론, PEFT나 LoRA와 같은 효율적인 미세 조정 기법들이 등장하여 비용을 절감할 수 있지만, 여전히 RAG와 비교했을 때는 비용적인 차이가 상당합니다.)

[동작 과정] RAG는 어떤 방식으로 동작하는가?

RAG의 작동 과정은 크게 3단계로 이루어집니다.

  1. (1단계) 임베딩 및 벡터 DB 구축 : LLM이 학습하지 않은 외부 데이터를 다양한 소스로부터 수집합니다. 수집된 데이터는 임베딩 모델을 통해 벡터화(수치로 변환)되어 벡터 데이터베이스(Vector DB)에 저장됩니다. 벡터 DB는 다음 단계에서 Retriever(문서 검색기)가 사용자의 질문과 관련된 정보(문서)를 찾는 데 활용됩니다.
    • 데이터를 임베딩(수치화)하기 전에 적절한 크기의 작은 조각(Chunk)들로 분할하는 과정(Chunking) 또한 있으며, 이 분할 과정은 RAG의 퀄리티에 큰 영향을 주게 됩니다. 너무 크게 쪼개면 노이즈가 섞이거나 처리 시간과 비용이 증가할 수 있고, 반대로 너무 작게 쪼개면 맥락 정보가 유실되어 RAG 검색 품질이 저하되게 됩니다.
출처 : Context Aware Chunking for Enhanced Retrieval Augmented Generation (Kevin Tam)

  1. (2단계) 정보 검색 및 추출 (Retrieval) : 우선 사용자의 질문(쿼리)을 벡터화합니다. 다양한 검색 기법을 사용하여 벡터 DB에 저장된 외부 정보(지식)들 중에서 가장 관련성이 높은 정보들을 추출합니다. 추출된 관련 정보는 사용자의 질문과 함께 LLM에게 제공됩니다.
    • 문서 검색(Retrieve) 결과의 품질은 LLM 답변의 품질을 크게 좌우합니다. 따라서 다양한 검색 알고리즘(MMR, BM25, Multi-Query 등)과 방법(키워드 검색, 시맨틱 검색, 하이브리드 검색 등)이 개발되어 사용되고 있습니다. (참고:https://hypro2.github.io/langchain-retreiver/)

  1. (3단계) 컨텍스트 증강 및 답변 생성 (Augmented & Generation) : 검색된 정보를 바탕으로 사용자 질문을 보강(Augmented, 증강)합니다. 이를 통해 LLM이 더 정확하고 컨텍스트에 맞는 응답을 생성할 수 있게 됩니다. LLM은 사용자 질문과 검색을 통해 추출된 관련 정보를 바탕으로 최종 답변을 생성(Generation)합니다

.

검색(Retrieval) 단계를 거치며 질문과 관련된 외부 지식을 동원(Augmented)하여 답변을 생성(Generation)하게 됩니다.

RAG의 작동 과정이 복잡하게 느껴질 수 있지만, 쉽게 비유하자면 RAG는 기존 지식만으로 답변을 찾는 대신, 도서관에서 필요한 책과 정보를 찾아 과제를 수행하는 것과 비슷합니다. 마치 사서가 전문 서적을 추천해주고, 이를 바탕으로 레포트를 작성하는 과정과 유사합니다.

1. 도서관에서 다양한 책을 체계적으로 정리하고 분류하여 보관합니다. (벡터 DB 구축)
2. 사용자가 원하는 정보와 가장 관련성이 높은 책을 찾아 추천합니다. (정보 검색 및 추출)
3. 사용자는 추천받은 책과 자신의 지식을 결합해 과제의 답을 찾아 레포트를 작성합니다. (답변 생성)

[RAG의 효과] RAG를 쓰면 무엇이 좋은가?

1. 효율적인 LLM 최적화 가능

RAG는 LLM에 새로운 정보를 추가하는 가장 비용 효율적인 방법입니다. 기존에는 특정 분야의 정보를 학습시키기 위해 LLM을 재학습해야 했지만, RAG를 사용하면 이 과정이 불필요합니다. RAG 시스템을 통해 LLM은 외부 데이터를 실시간으로 검색하여 응답을 생성할 수 있어, 시간과 비용을 크게 절약할 수 있습니다.

LLM을 최적화하기 위한 다양한 방법들이 있습니다. 그 중 RAG는 학습 요구도는 낮으나 외부 지식 요구도가 높은 방법론에 해당합니다.
출처 : Retrieval-Augmented Generation for Large Language Models: A Survey (27 Mar 2024)

2. 최신 정보 제공 가능

LLM이 학습한 데이터는 시간이 지남에 따라 과거의 데이터가 되어 버릴 수 있지만, RAG를 통해 지속적으로 최신 연구, 통계, 뉴스 등을 실시간 반영할 수 있습니다. 예를 들어, SNS 피드나 뉴스 사이트 등 자주 업데이트되는 정보 소스에 연결되어, 사용자에게 항상 최신 정보를 제공할 수 있습니다.

  • (사례) Perplexity AI와 같은 AI 검색엔진 서비스는 RAG 기술을 활용하여 사용자의 질문에 대해 실시간으로 웹을 검색합니다. 이렇게 수집된 최신 정보를 바탕으로 응답을 생성함으로써, 사용자에게 매우 시의적절한 답변을 제공하고 있습니다. 아래 사진은 최근 한국 코스피 지수의 급격한 하락으로 인해 서킷브레이커가 발동된 상황에 대해, Perplexity가 최신 뉴스 기사와 유튜브 콘텐츠를 참고하여 설명한 내용을 보여줍니다.

출처 : Perplexity 검색 결과

3. 사용자의 신뢰도 증가

RAG를 통해 LLM은 신뢰할 수 있는 소스에서 정보를 가져와 정확한 답변을 제공합니다. 생성된 출력 결과에는 출처에 대한 인용이나 참조가 포함될 수 있어, 사용자가 추가 정보를 확인하고자 할 때 원본 소스 문서를 직접 찾아볼 수도 있습니다. 이는 AI에 대한 사용자 신뢰를 높이는 데 중요한 역할을 합니다.

  • (사례) 최근 많은 AI 서비스들이 RAG를 기반으로 한 출처 표기(aka 팩트 체크)를 통해 신뢰도 높은 답변 제공에 주력하고 있습니다. 아래 사진은 제가 자주 이용하는 Liner 서비스에 보증지원에 관해 질문했을 때의 예시입니다. Liner의 에이전트는 다양한 사이트를 검색하여 답변을 생성하고, 답변에 활용한 모든 출처를 사진과 같이 표시해줍니다.

출처: Liner 검색 결과

4. 개발자의 LLM 제어력 향상

RAG는 개발자들이 LLM을 더 효과적으로 관리하고 개선할 수 있도록 돕습니다. 개발자는 LLM이 참조하는 정보 소스를 직접 제어하고, 필요에 따라 변경하거나 업데이트할 수 있습니다. 또한, 특정 질문에 대해 잘못된 정보 소스를 참조하는 경우 이를 쉽게 수정할 수 있습니다. 덕분에 LLM 기반 애플리케이션 개발이 한층 더 수월해졌습니다.

마치며

현재 RAG는 LLM의 성능을 극대화하기 위해 많은 연구자들이 주목하는 핫하고 트렌디한 기술입니다. 지금도 더 퀄리티 높은 답변을 제공하기 위해 다양한 연구가 진행 중이며, 앞으로 RAG의 효율성과 정확성을 향상시키는 방법들(가령, 정교한 임베딩 기법, 새로운 검색 알고리즘 등)이 지속적으로 발전될 것입니다.

RAG는 AI의 정보 처리 능력을 한층 강화하여, 더 많은 도메인에서 AI가 활용될 수 있는 가능성을 열어줍니다. 이를 통해 다양한 산업 분야에서 AI가 보다 전문적이고 신뢰성 있는 정보와 가치를 제공할 수 있을 것으로 기대됩니다.

앞으로의 콘텐츠에서는 RAG의 성능을 평가하는 방법과, RAG에서 활용되는 다양한 검색 기술들에 대해 더 알아보겠습니다. RAG의 발전이 AI의 미래에 어떤 영향을 미칠지, 그리고 이를 통해 어떤 혁신이 가능할지에 대한 논의도 계속될 것입니다. 다음 콘텐츠에도 많은 관심 부탁드립니다.

참고문헌

  1. Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, Meng Wang, Haofen Wang (2024) Retrieval-Augmented Generation for Large Language Models: A Survey
  2. (1부) RAG란 무엇인가 CLOVA Studio Link
  3. 요즘 개발자들 사이에서 핫한 RAG_#1 Link
  4. 10분 만에 RAG 이해하기 Link
  5. RAG(검색 증강 생성)란? – LLM 단점을 보완하는 기술 Link

Interested in solving your
problems with Enhans?

  • 01.
    Tell us about yourself
  • 02.
    Which company or organization do you belong to?
  • 03.
    Which company or organization do you belong to?
Next
Next

Please see our Privacy Policy regarding how we will handle this information.

Thank you for your interest
in solving your problems with Enhans!
We'll contact you shortly!
Oops! Something went wrong while submitting the form.