본격적으로 AI공부를 시작한지 대략 5개월째 되어가고 있다. 본래 데이터 분석가, 엔지니어 취업 준비와 ADP 자격증을 준비하다보니 ML에는 어느정도 지식이 있던 터라 빠르게 지식을 습득 할 수 있던 것 같다.
처음에는 내가 많은 것을 안다고 생각하고 RNN, CNN만 알고있던 내가 AI 엔지니어 공고에 지원하고 광탈하며 좌절하던 시절도 생각나고 CV 모델과 LLM 모델들을 공부하며 내가 아직 모르는 것이 많지만 지원은 해보자 하며 서류 통과와 면접, 코딩테스트를 보며 실패를 겪고 이를 밑거름 삼아 보완해나간 지난 날을 돌이켜 보니, 벌써 LLM을 이용한 프로젝트와 관련 논문을 통해 기술을 학습할 수 있는 단계에 왔다는 것이 내심뿌듯한 나날인 것 같다.
하지만, 아직도 갈길이멀고 AI 개발자는 배움의 연속이라고 하니 앞으로는 서적이나 강의뿐만 아니라, 논문을 통한 학습도 자주 해보려고 한다! 그래도 이론 물리로 졸업 연구를 하며 여러 논문을 읽고 학습한 경험이 있어 현직 대학원생 만큼은 아니더라도 충분히 할 수 있을 것이라 믿는다.
RAG(Retrieval-Augmented Generation)라는 개념을 처음 소개한 논문이다. 직역하면 "검색 증강 생성"이다. 흔히 이것을 사용하면 LLM의 환각(Hallucination)이 줄어든다고 알려져 있는 요즘 뜨고있는 기술중의 하나이다. 지금부터 이 논문을 리뷰하겠다.
사전학습된 신경망 언어 모델은 데이터로부터 상당한 양의 지식을 학습한다.
사전학습 모델의 문제점을 일반 Seq2Seq 모델과 검색기반 메모리를 결합한 하이브리드 모델을 도입하므로서 이를 해결할 수 있다.
REALM, ORQA(마스크 언어모델)은 추출형(extractive) 다운 스트림 작업에 대해선만 연구가 진행되었다.(마스크 언어모델에 대해서 잘 모르지만 디코더 모델 비슷한 것 같다.)

논문에서 RAG를 적용한 LLM 모델은 Seq2Seq모델이다. RAG 모델은 위키피디아의 밀집 벡터 인덱스에 접근 되는 사전학습 신경망 검색기이다.
위 그림에서 초록부분이 검색기 파트이고 파란색 부분이 언어모델 파트 이다. 논문에서는 BART로 구헌한듯하다.
사전학습된 검색기(Retriever)는 쿼리 인코더(Query Encoder)와 문서 인덱스(Document Index)가 결합된 형태이다. 쿼리 x 에대해 최대 내적 검색(Maximum Inner Product Search MIPS)를 사용하여 상위 k개의 문서()를 찾는다. 최종 예측 y를 위해 z를 잠재 변수로 취급하고 서로 다른 문서가 주어졌을 때의 seq2seq 예측들을 주변화한다.
자세한 구조 설명은 다음과 같다.
Document Index:
MIPS (Maximum Inner Product Search): 쿼리 x에 대해 MIPS를 사용하여 상위 K개 문서 zi를 검색합니다.
작동 흐름
1. 입력 쿼리 x 받음
↓
2. Query Encoder가 x를 벡터로 인코딩
↓
3. MIPS를 사용하여 Document Index에서 상위 K개 문서 검색
↓
4. 각 검색된 문서 zi에 대해:
- 검색 확률 pη(zi|x) 계산
- 생성기가 (x, zi)를 입력받아 출력 y 생성
- 생성 확률 pθ(y|x,zi) 계산
↓
5. Marginalization:
모든 문서에 대한 확률을 가중 합산
p(y|x) = Σ pη(zi|x) × pθ(y|x,zi)
↓
6. 최종 출력 y 생성
RAG 이외에도 비메모리파라메트릭 메모리로 시스템을 강화하려는 시도는 여럿 있었다고 한다(ex. 메모리 네트워크, 스택 증강 네트워크 등). 다른 연구와 드른 것은 파라메트릭 및 비파라메트릭 메모리 구성요소 모두 사전학습이 되었다는 점, 특히 사전학습된 메커니즘을 사용하므로써 추가 학습 없이 지식에 접근이 가능하다는 장점이 차별점 이라고 소개한다.
이 논문에 따르면 RAG 생태계는 검색기가 사용하는 데이터는 미리 구축을 해야하는 것 같다. 그래서 관련 정보를 수집하고 벡터 DB를 구축해야한다는 것 같다.
실험을 통해 3가지 분야(open Natural Questions, WebQuestions, CuratedTrec)에서 뛰어난 성능을 보이는 것을 확인했고 다양한 데이터셋(MS-MARCO, Jeopardy, FEVER)과 SSM, 생성기 교체, 동결(ablation)등 여러 환경에서 실험한 결과를 여러 지표(EM, Bleu, Generation Diversity)로 확인했다. 세부 사항은 실험에 관한 내용만 따로 정리한 포스트를 확인 바란다.
성능 (Performance)
사실성 (Factuality)
구체성 (Specificity)
다양성 (Diversity)
유연성 (Flexibility)
학습 가능성 (Learnability)
| 특성 | Parametric (BART) | Non-Parametric (Index) | RAG (결합) |
|---|---|---|---|
| 지식 저장 | 모델 파라미터 | 외부 문서 | 둘 다 활용 |
| 업데이트 | 재학습 필요 | 인덱스 교체 | 인덱스 교체 |
| 해석성 | 낮음 | 높음 | 높음 |
| 환각 | 많음 | 없음 | 적음 |
| 생성 품질 | 보통 | N/A | 우수 |
| 추론 속도 | 빠름 | 느림 | 중간 |
지식 집약적 작업에 최적
유지보수 용이성
확장 가능성
해석 가능성
RAG의 기본을 RAG 소개 논문을 통해 공부해봤다. 결국 RAG는 기존 LM들의 단점인 메모리 업데이트가 힘든점, LM이 모르는 내용에 대한 잘못된 답변(환각)을 해결할 한가지 방법론이다. RAG는 주식이나 기상정보와 같이 수시로 업데이트 되는 도메인에서 각광받을 것이다. 자주 업데이트가 되지 않는다면 Fine-Tuning으로 어느정도 해결이 가능할 것이기 때문이다. 다만, 많은 시간을 들이지 않아도, 별도 학습 없이도 모델의 정확도를 높힐 수 있고 다양한 답변을 출력 할 수 있다는 것은 굉장히 큰 메리트인 것은 부정할 수 없다. 적절한 상황에서 다양한 방법으로 모델의 성능을 높힐 수 있게 많은 고민을 해야할 것 같다.