2024년 LLM 핵심 개념 RAG: RAG란 무엇일까?

2024. 3. 3. 23:06카테고리 없음

안녕하세요!
최근에 RAG의 중요성에 대해 현업에서 많이 체감하고 있습니다.

마침, Medium에서 RAG 개념부터 심화 RAG까지 글을 연재하고 계신 Florian June님의 글을 번역하며

RAG 개념에 대해 공부하고 전달하면 좋을 것 같아 작성합니다.

👉원문: A Brief Introduction to Retrieval Augmented Generation(RAG)

 

ChatGPT 등장 이후의 RAG

Retrieval Augmented Generation(이하 RAG)는 2020년에 처음 소개되었는데요.
당시에는 사전 학습된 리트리버(retriever)와 사전 학습된 생성기(generator)를 결합한 end-to-end 접근으로 소개되었습니다.

2020년에 RAG의 가장 큰 목표는 모델 파인 튜닝을 통한 성능 개선이었는데요.

 

2022년 12월, ChatGPT가 출시되면서 RAG는 중요한 전환점을 맞이하는데요.

ChatGPT 출시 이후부터 RAG는 거대언어모델(이하 LLM)의 추론 능력을 활용하는데 중점을 두게 됩니다.

이는 외부 지식을 통합해 더 나은 생성 결과를 얻기 위함인데요.

 

RAG 기술은 개발자들이 매번 새로운 과제마다 거대한 모델 전체를 재학습해야되는 번거로움을 없애주었는데요.

과제마다 모델을 재학습하기보다 관련된 단순한 지식을 연결해 모델에 추가적인 입력을 제공하는데요.
그럼으로써 생성되는 답변의 정확성을 향상시킬 수 있습니다.

 

아래 부분에서는 RAG의 개념, 목적, 성격에 대해 자세히 알아보겠습니다.

 

RAG(Retrieval Augmented Generation)란?

RAG는 외부 지식 소스에서 얻은 추가적인 정보를 통합하여 LLM을 향상시키는 프로세스입니다.

RAG를 사용하게 되면 LLM의 환각(hallucination) 현상을 줄이고, 보다 정확하고 상황을 인식하는 답변 생성이 가능한대요.

 

질문에 답하거나 텍스트를 생성하기 전, 먼저 기존 지식 기반이나 많은 수의 문서에서 관련 정보를 검색합니다.

그 이후에 LLM을 활용해서 답변을 생성하게 되는데요.

오로지 LLM이 답변을 생성하는 것이 아닌, 검색된 정보를 통합해 답변을 생성하기 때문에 답변의 품질을 높일 수 있습니다.

 

RAG의 일반적인 워크플로우는 아래와 같습니다.

 

RAG Workflow(출처: https://medium.com/ai-in-plain-english/a-brief-introduction-to-retrieval-augmented-generation-rag-b7eb70982891)

 

위의 그림을 참고해서 보면, RAG는 다음 단계로 구성이 되는데요.

 

1. 인덱싱(Indexing)

원시 데이터를 cleaning하고 추출하여 PDF, HTML, Word와 같은 다양한 파일 형식을 표준화된 일반 텍스트로 변환합니다.

그 다음 단계는 chunking입니다.

토큰화 언어 모델이 가지는 한계인 context constraints(문맥 제약적인 부분)를 해결하기 위해 텍스트를 더 작고 관리하기 쉬운 청크로 나누는 과정입니다.

나뉘어진 청크는 임베딩 모델을 통해 벡터로 변환되는데요.

마지막으로, 이러한 텍스트 청크와 벡터 임베딩을 key-value 쌍으로 저장하기 위해 인덱스가 생성됩니다.

인덱싱 과정으로 다음 단계인 검색 단계에서 효율적인 정보 검색이 가능하게 됩니다

 

2. 검색(Retrieval)

사용자 입력값(user query)은 외부 지식 소스에서 관련된 context를 검색하는데 사용되는데요.

사용자 입력값은 인코딩 모델에서 의미론적으로 관련된 임베딩을 생성하는데 사용됩니다.

이후에는 인덱싱 단계에서 생성된 벡터 데이터베이스에서 유사성 검색을 수행하게 되는데요.

상위 k개의 가장 가까운 객체(object)를 검색하게 됩니다.

 

3. 생성(Generation)

사용자 입력값과 검색된 추가적인 정보들이 프롬프트 템플릿에 채워지게 되고요.

최종적으로 검색 단계에서의 augmented된 프롬프트가 LLM에 입력되게 됩니다.

 

RAG가 왜 필요할까요?

LLM이 있음에도 왜 RAG가 필요할까요?

이유는 간단합니다. LLM이 가지고 있는 한계점들 때문인데요.

RAG 기술로 해결할 수 있는 LLM이 가지는 한계점은 다음과 같습니다.

모델 환각 현상(Model Hallucination Problem)

LLM이 생성하는 텍스트는 확률에 기반해 생성됩니다.

충분한 사실 검증 없다면, LLM은 일관성이 없지만 사실인 것 같은 내용을 생성하기도 합니다.

 

적시성 문제(Timeliness problem)

LLM의 파라미터 사이즈가 커질수록, 훈련 비용은 증가하고 소요 시간은 길어지게 됩니다.

결과적으로, 시간적으로 최신의 데이터(time sensitive data)가 훈련에 포함되지 않을 수 있는데요.

이로 인해 모델이 최신 정보에 대한 질문에 답변에 하지 못하는 경우가 발생하기도 합니다.

 

데이터 보안 문제(Data security problem)

일반적인 LLM은 기업 내부 혹은 사용자의 개인 데이터에 접근 권한이 없습니다.

LLM을 사용하면서 데이터 보안을 확실하게 하려면 데이터를 로컬에 저장하고 모든 데이터 연산을 로컬에서 수행하는 것에 좋은데요.

클라우드 LLM은 정보를 요약하는 목적으로만 사용되게 됩니다.

 

 

RAG의 특성

RAG는 다음과 같은 특징을 가지고 있는데요.

위에서 언급된 LLM의 문제를 효과적으로 해결할 수 있습니다

확장성(Scalability)

RAG는 LLM 모델 사이즈와 훈련 비용을 줄일 수 있는 방안이며, 지식을 빠르게 확장할 수 있는 방법입니다.

자체 LLM을 보유할 필요 없고, 모델을 미세 조정하는데 시간과 비용을 들일 필요가 없게 됩니다.


정확성(Accuracy)

모델이 검색을 통해 사실에 기반한 답변을 제공하기 때문에, 환각 현상을 최소화할 수 있습니다.


제어 가능성(Controllability)

RAG를 사용하면 최신 정보 검색과 맞춤화(customization)가 가능합니다.

질문의 의도를 측정해 답변을 종합할 때 검색 방법을 사용해 다양한 컨텍스트에 근거한 요소를 참조할 수 있는 기능이 있기 때문입니다.


설명 가능성(Explainability)

검색된 관련 정보는 모델이 예측하는데 참조 역할을 합니다.

 

범용성(Versatility)

RAG는 QA, 요약, 대화 등 다양한 작업에 파인 튜닝과 커스터마이즈가 가능합니다.

 

결론

위에서 RAG의 개념, 특성들에 대해 살펴보았는데요.

RAG는 LLM을 활용하며 사용하는 오픈북 시험이라고 볼 수 있을 것 같습니다.

질문이 들어왔을 때, 답변을 하기 위해 관련된 정보를 찾아오기 때문입니다

 

다음 글에서는 고급 RAG 기술들에 대해 소개하겠습니다.

이 글과 관련된 피드백이나 자유로운 의견 주시면 감사하겠습니다!

 

 

참고

[Elastic ]검색 증강 생성(RAG)이란?

[Skelteer Labs] 2024 Year of The RAG::RAG가 주목 받는 이유와 미래 동향