일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pdf parsing
- Cross Entropy Error
- 컴퓨터비전
- 합성곱 신경망
- 시계열
- 딥러닝
- Non-Maximum Suppression
- deep learning
- leetcode
- segmentation
- LLaVA
- 데이터 파싱
- 활성화 함수
- rag parsing
- nlp
- computer vision
- 머신러닝
- LLM
- 손실함수
- 이상탐지
- visual instruction tuning
- anomaly detection
- 퍼셉트론
- 오차역전파
- Mean squared error
- CNN
- Time Series
- 활성화함수
- E
- Today
- Total
굴러가는 분석가의 일상
Retrieval-Augmented Generation 이란? 본문
Retreival Augmented Generation(RAG)는 2020년에 사전 학습된 Generator과 Retriever를 결합한 end-to-end 방식으로 처음 제안되었다. 당시 주요 목표는 모델 fine-tuning을 통해 성능을 대폭 향상시키는 것이었다. 2022년 12월 ChatGPT가 출시됨에 따라 RAG라는 방법론이 수면위로 오르게 되었다. RAG는 외부 지식을 활용하여 대규모 언어 모델(LLM)의 추론 능력을 leveraging하면서 더 좋은 generation results를 얻는데 중점을 두었으며, 대규모 모델을 재학습 시키는 필요성을 줄어들게 만들었다. 이에 이 글에서는 RAG의 개념과 목적, 특성에 대해 간략하게 짚어보고자 한다.
💡 Retreival-Augemented Generation이란 무엇인가?
Retrieval-Augmented Generation(RAG)는 외부 지식 소스로 부터 추가적인 정보를 통합하여 대규모 언어 모델(LLM)을 향상시키는 것이다. 이를 통해 LLM의 답변 결과는 문맥을 고려할 수 있는 답변을 생성할 수 있을뿐더러, halluctionaion 문제점을 해결하여 더욱 더 정확한 결과를 얻을 수 있게 된다.
입력자의 Query 질문에 답을하거나 텍스트를 생성할 때, 관련 정보는 먼저 기존 지식 기반이나 다수의 문서에서 검색을 하게 된다. 이후, 검색된 정보를 통합하여 LLM으로 답변을 생성함으로써, LLM이 단독적으로 생성할 때보다 답변의 품질을 향상 시킬 수 있다. 그럼 RAG는 어떻게 구성되어있는지 알아보도록 하겠습니다.
그림 1에서 볼 수 있듯이, RAG는 아래의 3가지 단계를 포함한다.
- Indexing : Indexing은 RAG에서 수행되는 초기 단계이다. 이 단계는 Raw Data를 추출하는 것에서 시작하며, PDF, HTML, Word와 같은 다양한 파일 형식을 표준화된 plain text로 변환하게 된다. 대규모 언에 모델(LLM)은 한 번에 처리할 수 있는 텍스트의 최대 길이에 제한이 있다. 대규모 문서나 데이터 셋을 더 효율적으로 관리하기 위해 더 작고 관리 가능한 청크로 나누게 되는데, 이를 Chunking이라고 한다. 그런 다음 Embedding Model를 통해 Chunking된 text들을 벡터로 표현이 된다. 마지막으로 벡터화된 청크는 Vector DB에 키-값 쌍으로 저장된게 된다. 이러한 Vector DB는 이후의 Retreival 단계에서 efficient하고 scalable search capabilities 기능을 제공한다.
- Retrieval : 사용자 쿼리는 외부 지식 소스(Vector DB)으로 부터 관련 문맥을 검색하는데 활용이 된다. 이를 수행하기 위해 사용자 쿼리는 인코딩 모델에 의해 처리되어 의미적으로 관련된 임베딩을 생성하게 된다. 그런 다음 벡터화된 쿼리는 Vector DB에서 유사성 검색을 기반으로 상위 k개 검색을 수행하여 가장 비슷한 데이터를 찾게 된다.
- Generation : 사용자의 Query와 검색된 추가적인 정보는 Prompt에 입력되고 LLM를 거쳐 답변을 생성하게 된다.
💡 그럼 RAG가 왜 필요할까?
LLM이라는 사전 훈련된 거대 AI 모델이 있음에도 불구하고, RAG가 필요한 이유는 뭘까? 그 이유는 간단하다. LLM이 해결할 수 없는 근본적인 문제점들을 RAG를 통해 해결할 수 있기 때문이다.
- Model Hallucionation : LLM은 텍스트 생성을 확률적 방법에 기반하여 수생하게 된다. 이는 모델이 학습 데이터의 패턴을 기반으로 다음 단어를 예측하여 텍스트를 생성하는 것이다. 그러나 충분한 데이터 없이 단순히 확률적 패턴에 의해 데이터를 생성하게 된다면, 비논리적이거나 사실과 무관한 내용을 포함하게 된다. 이러한 문제를 "Hallucination"이라고 칭하며, RAG를 통해 외부 지식 소스로 부터 정보를 검색하여 결과를 제공하기 때문에 Hallucination 문제를 완화할 수 있다.
- Timelines Problem : LLM은 사전 학습된 거대 AI 모델은 학습하는데 많은 데이터와 시간이 필요하다. 모델이 최신 정보를 반영할려면 지속적으로 재학습 해야하지만, 모델의 크기와 복잡성으로 인해 실시간으로 업데이트 하는 것은 현실적으로 불가능하다. 이에 RAG를 사용하게 된다면, LLM의 고정된 학습 데이터에 의존하지 않고 최신 정보를 반영할 수 있다.
- Answer Constraint Problem : LLM은 일반적으로 입력된 텍스트에 대한 적절한 맥략을 이해하고 답변을 생성하는데 사용이 된다. 하지만 특정 질문에 다양한 지식이 요구되는 상황에서는, 정확한 맥락과 다방면을 정보를 적절하게 설명하는데 어려움이 있다. 이에 RAG를 사용하게 된다면, 복잡한 질문에 대해 검색된 관련 문맥을 프롬프트에 포함시켜 모델이 쿼리를 기반으로 답변을 생성하도록 유도한다.
결론적으로 RAG는 LLM에 대한 Open-Book 시험과 비슷하게 비유할 수 있다. 오픈 북 시험에서 학생들이 모르는 지식에 대해서 책을 살펴보고 관련 정보를 찾을 수 있는 것처럼, RAG는 외부 지식을 활용하여 LLM의 답변을 개선할 수 있다.
이 글에서는 RAG에 대해 간단하게 알아보았습니다. 다음 글은 RAG의 전반적인 문제점과 다양한 기술에 대해 알아보도록 하겠습니다.
'LLM' 카테고리의 다른 글
RAG의 패러다임(Naive RAG, Advanced RAG, Modular RAG) (0) | 2024.08.03 |
---|