배경
- 사전학습모델(Pre-trained Model)은 외부 지식에 확장이 쉽지 않음.
- 기존에도 검색 증강 기법들은 있었지만 ?? 한 한계가 있었다.
- 아이디어: sequence-to-sequence 구조(-> text-to-text)를 채택하여 기존 한계를 극복한다.
RAG
- 기본 구조: encoder-decoder, Dense Passage Retriever
주요 구성 요소
1. Retriever: Pretrained BERT(encoder)
- BERT 기반의 DPR(Dense Passage Retriever) 사용
- 입력 쿼리를 받아서 관련된 문서들을 검색
- 쿼리와 문서를 벡터로 인코딩하여 유사도 계산
- Top-k개의 가장 관련성 높은 문서들을 선택
DPR
DPR은 질문-답변(QA) 시스템을 위한 효율적인 문서 검색 방법입니다. 기존의 키워드 기반 검색(예: TF-IDF, BM25)과 달리, 의미적 검색이 가능한 고밀도 벡터 공간에서 작동합니다.
이를 위해서 사전 작업을 진행함.
: 문서 DB → 문단 분할 → Context Encoder → 벡터 인덱싱
[구성 요소]
1. Query Encoder: 입력 쿼리 q → 벡터 q(x)
질문 유형
- Question Answering
- Question Query
- Fact Verification Fact Query
- Jeopardy Question
- Generation Answer Query
* Jeopardy Question 이란?
더보기
🔄 일반 질문과 Jeopardy Question 비교:
- 일반적인 Question-Answer:
- 질문: "세종대왕이 만든 문자는?"
- 답변: "한글입니다"
- Jeopardy Question 방식:
- 답변(주어지는 정보): "세종대왕이 1443년에 만든 이 문자는 과학적이고 독창적인 제자 원리를 가지고 있습니다"
- 질문(만들어야 하는 것): "한글은 무엇입니까?"
2. MIPS(Maximum Inner Product Search): 유사도 검색
- MIPS를 사용하여 q(x)와 가장 유사한 문서들을 검색
- 벡터 내적 기반으로 q(x) 와 비슷한 문서를 도출
- Document Index에서 관련성 높은 top-k 문서들(z) 선택
2. Generator (생성기): seq-2-seq 모델
- 사전 학습된 BART 모델 기반
- 검색된 문서들과 원래 입력을 결합하여 최종 출력 생성
- 각 검색 결과에 대해 다른 출력을 생성하고 이들을 결합
- 자세한 process
- 검색된 문서들을 Generator(pθ)로 전달
- 각 문서에 대한 d(z) 표현 생성
RAG 검색 모델 버젼: (1) RAG-Sequence, (2) RAG-token
(1) RAG-sequence
: input을 검색하는 문서 자체는 1개
(2) RAG-token
: input의 각 토큰 당 검색하는 문서가 달라짐
<예시>
input: "BTS의 데뷔와 첫 번째 월드투어에 대해 설명해주세요"
RAG-Sequence:
- 한 번의 검색으로 BTS 데뷔와 투어 관련 문서를 모두 검색
- 검색된 문서들을 바탕으로 전체 응답 생성
- 더 일관된 스토리텔링 가능
RAG-Token:
- "BTS의 데뷔" 부분 설명할 때는 데뷔 관련 문서 검색
- "첫 번째 월드투어" 설명할 때는 투어 관련 문서 새로 검색
- 각 부분에 대해 더 구체적인 정보 제공 가능
<장단점>
(1) RAG-sequence
장점:
- 계산 효율성이 좋음
- 일관된 정보 사용으로 응답의 일관성 유지
- 더 빠른 생성 속도
단점:
- 응답 생성 중 새로운 정보가 필요할 때 유연성이 부족
- 초기 검색 결과에 큰 의존성
(2) RAG-Token
장점:
- 더 유연한 정보 검색 가능
- 각 토큰 생성시 최적의 정보 활용
- 더 정확하고 상세한 응답 가능
단점:
- 계산 비용이 매우 높음
- 생성 속도가 상대적으로 느림
- 응답의 일관성 유지가 더 어려울 수 있음
참고 자료
'AI > NLP' 카테고리의 다른 글
[랭체인 기본 문법] (2) | 2024.11.15 |
---|---|
[논문 리뷰] Parameter-Efficient Transfer Learning for NLP (1) | 2024.11.08 |
[NLP] Instructed gpt - Training language models to follow instructions with human feedback (3) | 2024.10.29 |
[스터디] BERT(Bidirectional Encoder Representations from Transformers) (4) | 2024.09.19 |
Transformer (0) | 2024.09.12 |