260923

u·2026년 9월 23일

TIL

목록 보기
25/30

리랭킹

  1. BM25 + Dense 검색기 → 각각 검색 → 결과 결합, 중복 제거 ⇒ 리랭킹 ⇒ 최종 top_n개
  2. 질문과 문서 비교
    1. Bi-Encoder : 질문과 문서 따로 벡터 ⇒ 유사도 비교 (Dense)
    2. Cross-Encoder : 질문과 후보 문서 한 쌍 → 모델 ⇒ 관련성 점수
    3. ColBERT : 질문과 문서를 각각 → 하나의 벡터 X 토큰별 벡터 ⇒ 관련성 점수
  3. CrossEncoderReranker : 점수 계산, 높은 순 정렬, 앞 top_n개 선택 한번에 처리
  4. ColBERT 방식 : 질문 → 토큰 벡터 , 문서 → 토큰 벡터 ⇒ 토큰별 최적 매칭 → 관련성 점수
  5. ContextualCompressionRetriever : 검색기와 문서 압축 파이프라인 연결
# 하이브리드 검색기 -> 1차 후보 추출 -> ReRanker (Cross-Encoder(많이 씀), ColBert) -> 2차 추출
# 따로 우리가 후보를 1차, 2차 추출하지 않고 
# ContextualCompressionRetriever 클래스 이용하면 결합된 검색기가 만들어짐
# 재정렬된 문서 후보를 얻을 수 있음

# ReRanker에 있어서 중요한 점
# (1) 어떤 CrossEncoder 모델을 사용할 것인가?
# (2) 1차 후보추출에서 후보의 개수 선정 최대 5, 10, 20 (후보가 늘어날수록 ReRanker에서 시간이 많이듬)
# (3) 2차 후보추출 Top3, Top5

컨텍스트 압축

  • 질문에 필요한 근거를 남겨 전달할 문맥을 줄이는 방법
  1. 질문 → 필요한 문장 추출 ⇒ 원문과 대조
  2. 추출문 ⇒ 답변 생성
  3. 파이프라인 (검색→리랭킹→추출)

hybrid

→ 질문을 입력받아 BM25와 Dense 검색을 수행하고 검색 후보 문서를 출력한다.

reranker

→ 검색 후보 문서를 입력받아 질문과의 관련도 순위를 다시 매기고 상위 원문을 선택한다.

extractor

→ 선택된 원문을 입력받아 질문에 필요한 부분만 추출한 추출문을 출력하며, 원문 ID 등의 메타데이터는 유지한다.

0개의 댓글