본문 바로가기

Careers/AI Project

RAG이란, RAG 성능 강화를 위한 몇가지 방법들 (이론편)

RAG 이란

RAG(Retrieved Augmentation Generator)는 자연어 처리 분야에서 사용되는 모델 아키텍처입니다. RAG는 대규모 언어 모델을 기반으로 하며, 검색 및 생성을 결합하여 질문 응답 시스템에서 사용됩니다.

  1. Retrieved(검색된): 이 부분은 검색된 정보를 나타냅니다. 보통 정보 검색 시스템이나 검색 엔진을 사용하여 주어진 질문과 관련된 문서를 검색합니다.
  2. Augmentation(보강): 검색된 정보를 사용하여 생성 모델을 보강합니다. 이는 생성 모델이 훈련된 데이터 이외의 외부 정보를 활용하여 보다 정확하고 다양한 답변을 생성할 수 있도록 도와줍니다.
  3. Generator(생성기): 마지막으로, 생성기는 보강된 정보를 바탕으로 실제로 답변을 생성하는 역할을 합니다. 대규모 언어 모델(GPT 등)을 사용하여 주어진 질문과 검색된 정보를 입력으로 받아들이고, 이를 기반으로 자연스러운 답변을 생성합니다.

이러한 아키텍처는 주어진 질문에 대한 답변을 생성할 때 검색된 정보를 활용하여 답변의 품질과 완성도를

 


이러한 세 가지 구성 요소는 함께 작동하여 효과적인 질문 응답 시스템을 형성합니다. RAG는 검색과 생성을 결합하여 질문에 대한 정확한 답변을 생성하는 데 있어 이점을 제공하며, 주어진 문제에 대한 다양한 정보를 종합적으로 활용할 수 있습니다.

 

 

왜 RAG을 사용하는가

RAG은 일종의 사전 참고 검색기입니다. 사용자 질의에 대해 검색된 정보를 활용하여, 생성 모델을 보강하는 방법을 제공합니다. 대규모 언어 모델이 생성하는 정보의 크기는 크고 방대하지만, 특정한 목적에 맞는 사용자 task를 잘 수행하지 않을 수 있습니다. 대규모 언어 모델은 결국 "확률 모델"입니다. 훈련 데이터에 포함된 패턴을 학습하므로, 이 데이터가 편향되어 있을 경우 모델의 결과도 편향될 수 있습니다. 이는 사용자가 원하는 task가 아닌 task로 모델이 받아들여, 부정확한 결과를 생성할 수 있는 원인이 될 수 있습니다. 많은 기업에서 자체적인 Large Languege Model을 활용하고자 할 때 흔히 겪는 문제입니다. 따라서 비정형적인 데이터를 RAG을 통해 검색한 뒤 LLM을 통해 답변을 생성하도록 하는 방식을 많이 취하고 있습니다. 이는 다음과 같은 장점을 가지고 있습니다.

1. 정확한 검색 결과: RAG는 검색 엔진과 연계되어 정보를 추출하므로, 주어진 질문에 대한 정확하고 관련성 높은 문서를 검색할 수 있습니다. 이는 정확한 답변을 생성하는 데 중요합니다.

2. 다양한 정보 종합: RAG는 검색된 문서를 기반으로 답변을 생성하는 과정에서 다양한 정보를 종합하여 활용할 수 있습니다. 이는 답변의 품질과 완전성을 향상시킬 수 있습니다.

3. 더 나은 문맥 이해: 검색된 문서를 바탕으로 답변을 생성하는 것은 대규모 언어 모델만 사용하는 것보다 더 나은 문맥 이해를 제공할 수 있습니다. 이는 답변의 자연스러움과 일관성을 높일 수 있습니다.

4. 정확성 및 신뢰성 향상: 다양한 정보를 종합하고 정확한 검색 결과를 활용함으로써, RAG는 보다 정확하고 신뢰할 수 있는 답변을 제공할 수 있습니다.

5. 답변 다양성: RAG의 생성기는 검색된 문서와 질문을 기반으로 답변을 생성하기 때문에, 다양한 유형의 답변을 생성할 수 있습니다. 이는 사용자에게 다양한 관점과 정보를 제공할 수 있습니다.

이러한 이유들로 인해 RAG은 다양한 자연어 처리 응용 분야에서 효과적으로 사용될 수 있으며, 특히 질문 응답 시스템에서 뛰어난 성능을 발휘할 수 있습니다.

 

(RAG을 활용한 App 아키텍처 일부, 좋은 예제가 있어 가져왔습니다. 이미지를 클릭하면 원문으로 이동합니다.)

 

RAG 성능 강화를 위한 방법

RAG(Retrieval Augmented Generation)의 성능을 향상시키기 위해 다음과 같은 방법을 고려할 수 있습니다:

1. 검색 엔진 최적화: 검색 단계에서 사용되는 검색 엔진을 최적화하여 더 높은 품질의 검색 결과를 얻을 수 있도록 합니다. 이를 위해 검색 엔진의 쿼리 전략, 인덱싱 방법, 유사도 점수 계산 방법 등을 개선할 수 있습니다.

2. 훈련 데이터 다양성: RAG 모델을 훈련시킬 때 사용되는 데이터의 다양성을 보장합니다. 다양한 주제, 어휘, 문체 등을 포함한 훈련 데이터를 사용하여 모델이 다양한 문맥에서도 잘 작동할 수 있도록 합니다.

3. 생성기 모델 개선: RAG 모델에서 사용되는 생성기 부분을 개선하여 더 자연스러운, 일관된 답변을 생성하도록 합니다. 이를 위해 생성기 모델의 아키텍처를 개선하거나, 추가 훈련 데이터를 사용하여 모델을 세밀하게 튜닝할 수 있습니다.

4. 추가 정보 활용: 검색된 정보 외에도 다른 정보 소스를 활용하여 답변을 보강할 수 있습니다. 예를 들어, 외부 지식 그래프, 지식 베이스, 사전 등을 활용하여 보다 풍부한 답변을 생성할 수 있습니다.


5. Prompt Engineering: 대규모 언어 모델을 사용할 때 입력(prompt)의 선택과 구조를 조정하여 모델의 출력을 조작하거나 향상시키는 기술입니다. 이는 모델이 원하는 결과를 생성하도록 유도하거나, 특정 작업에 최적화된 출력을 얻기 위해 사용됩니다.


6. Fine-tuning: 특정 도메인이나 작업에 RAG 모델을 미세 조정하여 해당 도메인에 더 적합한 답변을 생성하도록 합니다. 이는 모델이 특정 작업에 더 잘 적응하도록 도와줍니다.

7. 평가 및 피드백: 모델의 성능을 평가하고 피드백을 반영하여 지속적으로 모델을 개선합니다. 이를 통해 모델이 실제 사용 환경에서 더 좋은 성능을 발휘할 수 있도록 합니다.

이러한 방법들을 조합하여 RAG 모델의 성능을 향상시킬 수 있으며, 이를 통해 보다 정확하고 유용한 답변을 생성할 수 있습니다.

'Careers > AI Project' 카테고리의 다른 글

LLM을 활용한 Stream Chatbot 아키텍쳐  (0) 2024.04.30