문서 출처/ID : 어떤 문서(데이터베이스 내 위치, URL, 파일명 등)에서 나온 것인지
문서 내 위치 정보 : 문서의 몇 번째 문단, 어느 챕터 등 세부 정보
추가 메타데이터 : 날짜, 작성자, 요약 등(선택적)
2. (선택적) Reranker
역할:
- Retriever가 가져온 Top-K 후보(문서, 문단, 문장) 리스트를 “더 똑똑한 모델”로 다시 한 번 평가해서, 질문과 가장 밀접한 순서로 재정렬하는 역할을 한다.
- Reranker가 왜 필요할까?
Retriever는 보통 빠른 검색(속도)에 최적화되어 있어서, 의미상 완전히 맞지 않는 결과도 섞여 나올 수 있다.
특히 Dense Retriever(임베딩 기반)의 경우, 문장 단위 fine-grained 매칭이 어렵거나, 질문 맥락을 충분히 반영 못할 수 있다.
그래서 더 정교한(비교적 느리지만 정확한) 모델로 Top-K를 다시 평가하는 단계가 필요하다. (선택적)
모델 :
1) Cross - Encoder
- 쿼리와 후보 문서를 함께 입력으로 받아, 관련성 점수를 바로 산출.
[CLS] 질문 [SEP] 문서 [SEP]
- 장점 : 쿼리와 문서의 세밀한 상호작용(Attention)을 반영할 수 있어, 정밀한 매칭이 가능
- 단점 : 후보마다 쿼리-문서 페어를 모두 입력해야 하므로 속도가 느리고, Top-100 전체를 평가하려면 계산량이 큼
2) MonoT5
- T5 계열 모델로, → 입력 : “Query: ... Document: ...” → 출력 : 관련성 점수(또는 “관련 있음/없음” 레이블)
- 장점: 자연어 이해 기반, 다양한 도메인에 쉽게 활용하고, “관련 있음/없음” 등 분류 또는 score regression 모두 가능하다.
3) MiniLM 등
BERT를 경량화한 모델, 상대적으로 빠름
Cross-Encoder나 Bi-Encoder로도 활용 가능
4) 최근 트렌드:
LLM 기반 Reranker
GPT-4, Llama2 등 대형 언어모델을 활용해, “이 문서가 정말 답변에 도움이 되는가?”를 문맥 기반으로 평가
장점: 아주 복잡한 문맥·질의도 이해
단점: 매우 느릴 수 있음(실서비스에서는 실용성에 한계가 있음)
3. Generator (생성기)
역할
- Retriever(+Reranker)로 선별된 관련 문서(context)를 받아, LLM이 이를 활용해 최종 답변, 요약, 문서 생성 등 자연어 결과물을 생성한다.
- LLM이 외부 지식을 바탕으로 사실에 근거한 정교한 답변을 내도록 만드는 핵심 단계이다.
모델
- LLM(대형언어모델) : GPT-3, GPT-4, Llama, GPT-NeoX, T5 등
Decoder-only : GPT 시리즈 (생성 특화), Llama 등
Encoder-Decode r: T5 등 (질문-응답, 요약 등에 강점)
입력(프롬프트 구성)
- 가장 단순한 형태 :
[질문]
[관련 문서1]
[관련 문서2]
...
- Context Format 설계가 성능에 매우 중요! : 문서 요약본, 하이라이트, 표/목록 형태 등으로 활용된다.
- Chain-of-Thought, rationale 등 reasoning 과정까지 프롬프트에 추가해 추론 기반 답변 생성 가능
출력
- 자연어 답변을 기본으로 출력한다.
- 추가적으로 필요시 제공 :
요약본
표, 리스트
문서 생성, 코드 생성, 문단 추천 등 다양한 형태
동작 방식
1) 질문 + 관련 문서들 → LLM의 context로 입력
2) LLM은 내부 파라미터 지식 + context를 통합하여 최적의 자연어 답변 생성
3) (특정 설정) chain-of-thought, self-reflection 등 reasoning 요구 가능
예시 (프롬프트 및 출력)
Q: "RAG는 어떻게 동작하나요?"
[Context-1] "RAG는 검색기와 생성기를 결합한 NLP 프레임워크이다..."
[Context-2] "Dense retriever와 cross-encoder reranker로 관련 문서를 선별한다..."
A: "RAG는 먼저 사용자의 질문과 관련된 외부 문서를 검색한 후, 선별된 문서를 바탕으로 LLM이 최종 답변을 생성하는 방식입니다..."
고급 기법 및 최근 트렌드
Chain-of-Thought Generation: 답변만 출력하지 않고, reasoning 과정을 단계별로 설명하며 답변 → 복잡한 문제나 논리적 reasoning이 필요한 과제에서 성능 향상
Self-RAG, Reflection 기반: LLM이 중간중간 “검색이 더 필요한지” 등 자기평가/재질문 가능
RAG LLM Fine-tuning: 생성기가 외부 컨텍스트 활용을 더 잘하도록, context-aware하게 추가 학습시키는 연구도 활발
Knowledge Conflict Handling: 외부 context와 LLM 내부지식이 충돌할 때, “어떤 정보를 우선할지” 결정하는 decoding/모델편집 기법 연구