RAG 질의 확장과 재순위화

질의 확장(Query Expansion), 재순위화(Re-ranking)은 RAG (Retrieval-Augmented Generation) 시스템에서 검색 정확도와 관련 응답 품질을 높이기 위해 사용됨

🔍 1. 질의 확장 (Query Expansion)

✅ 정의

사용자의 원래 질의(Query)를 더 풍부한 의미를 가진 형태로 확장(augmentation)하여 검색 성능(Recall/Precision)을 높이기 위한 기법입니다.

✅ 목적
• 동의어, 유의어, 관련 개념 등을 추가함으로써 더 많은 관련 문서나 정보를 검색할 수 있도록 함.
• 질의가 너무 짧거나 모호할 때 검색 성능 향상.

✅ 방법 종류

방법 설명 예시
동의어 기반 확장 WordNet 등 사용 car → automobile
임베딩 기반 유사어 확장 Word2Vec, BERT 임베딩을 이용해 유사 단어 검색 laptop → notebook
LLM 기반 질의 재작성 GPT 등으로 자연어로 질의 재작성 “How to fix Macbook?” → “What are common solutions for Macbook hardware issues?”
사용자 로그 기반 확장 과거 검색/클릭 이력 기반 추천 “apple” → “apple fruit”, “apple inc.” 구분

✅ RAG에서의 활용
• 검색 파이프라인 이전 단계에서 query → expanded queries로 확장 후 각각에 대해 벡터 검색 수행
• Recall 향상 목적 → 더 많은 후보 문서를 회수

🧠 2. 재순위화 (Re-ranking)

✅ 정의

초기 검색 단계(Retriever)에서 얻은 문서 후보들을 정확도(Precision) 기준으로 다시 정렬하는 후처리 단계입니다.

✅ 목적
초기 검색(보통 BM25, 벡터 검색)은 빠르지만 정확도가 낮을 수 있음
• 후보 중 LLM이나 랭킹 모델을 통해 더 적합한 문서를 위로 올림

✅ 방법 종류

  • BM25 + BERT ranker
    • BM25로 검색 → BERT 기반 CrossEncoder로 유사도 재계산

  • ColBERT
    • 토큰 수준으로 질의-문서간 연산하여 정교하게 점수화

  • LLM Scoring
    • GPT에 “질문과 문서 중 얼마나 관련 있는가?”를 직접 평가하도록 지시

  • Semantic Matching + Rule
    • 특정 키워드 포함 여부, 문서 길이 등을 조건으로 보정

✅ RAG에서의 활용

  • Retriever → top-k candidates 중에서 Re-ranker가 다시 top-k를 결정
  • 최종적으로 LLM에 넣는 문서 순서를 조정 → 응답 품질 향상

🎯 요약

기술 목적 방법 RAG 파이프라인 내 위치
질의 확장 Recall 향상 동의어, 임베딩, LLM 기반 질의 재작성 검색 전
재순위화 Precision 향상 BERT, ColBERT, LLM scoring 검색 후

📌 예시 워크플로우 (하이브리드)
1. 사용자가 “청바지 추천” 질의
2. 질의 확장 → “청바지 추천”, “데님 바지 추천”, “남성용 청바지”
3. 각 질의로 vector 검색 → top 30 문서 회수
4. Re-ranking → GPT나 CrossEncoder로 relevance 점수 부여
5. 상위 5개 문서 LLM에 전달 → 답변 생성