해결하고 싶었던 문제
많은 양의 "지식"을 필요로하는 공개 도메인의 문제에 대한 답변하기 를 수행하기
외부 지식 참고를 해야한다.
자유도 높은 답변을 생성해야한다.
RAG가 신기한 점
1. 외부 지식()을 사용하여 직접적으로 "지식"을 디코딩(지식을 저장하고 질문에 맞는 답을 찾아 생성)할 때 이용하는 방법을 제시
2. Retriever-based와 Generator-based의 프레임워크를 사용해서 knowledge intensive task와 같은 NLP task를 처음으로 해결한 논문
3. end-to-end 학습이 가능하다
RAG 모델 구조의 특징
1. Retriever-and-Reader -> Retriever-and-Generator 로 바뀌면서 정답이 없는 경우에도 답변을 생성할 수 있는 구조
2. answer generation task로 문제를 정의해서 QA를 포함한 다양한 글 종류에 대한 생성 기반 task 수행 가능
3. 답변을 생성하기 때문에 Retrieve한 Passage(글)에 없는 내용에 대한 것을 "생성"한다.
기존 ODQA(Open-Domain Question Answering)에서 사용 된 점
REALM 구조 : Retriever-and-Read : Passage(글)에서 질문의 context(문맥)에 해당되는 Answer span을 찾아내는 방법(Span Prediction)으로 "선택"해야함
선택 이외의 "생성" 이 안되서 답을 할 수 없는 문제에 대해서 답변이 이상하거나 다양성이 떨어진다
ex) 위키피디아
모델 구조
Retriever : DPR
Generator : BART
DPR의 input : 질문에 대한 Query (인코더), 지식이 담긴 글에 대한 Passage (인코더)DPR의 output : 인코더를 반복적으로 사용해서 "Representation(표현)"을 추출하고 그에 가장 유사한
Passage(글)을 찾아내어 기존 Query(질문)와 연결(Concat)한 것을 출력한다
BART의 input : DPR output에 대한 Top-k 글을 Query와 연결한 것
BART의 output(정답)Vocabulary Distribution -> 문장으로 만들기 위한 Rag-Sequence, Rag-Token을 통해 최종 "답변 글"
생성방식(2가지) 1. 각 글마다 새롭게 토큰을 만들고 최종 생성된 결과를 시점단위로 주석달듯 생성하는 것 RAG_sequence : 동일한 문서를 기반으로 각 target token 예측 2. 토큰을 하나씩 생성할 때마다 다른 글들에 따른 분포로 주석달듯 생성하는 것 RAG-token 다른 문서를 기반으로 각 target token 예측
BART의 장점 : 다양성, hallucination을 줄임
결론 둘 중에 하나의 방법이 무조건적으로 우세하지 않고, 데이터셋별로 우세한 것이 다르다
[참고 문헌]
1. [Paper Review] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks – DSBA (korea.ac.kr)
4. 3. [논문 리뷰] Retrieval-augmented Knowledge-intensive Task(RAG) - NLP AI (dajeblog.co.kr)