# 하이브리드 검색기 -> 1차 후보 추출 -> ReRanker (Cross-Encoder(많이 씀), ColBert) -> 2차 추출
# 따로 우리가 후보를 1차, 2차 추출하지 않고
# ContextualCompressionRetriever 클래스 이용하면 결합된 검색기가 만들어짐
# 재정렬된 문서 후보를 얻을 수 있음
# ReRanker에 있어서 중요한 점
# (1) 어떤 CrossEncoder 모델을 사용할 것인가?
# (2) 1차 후보추출에서 후보의 개수 선정 최대 5, 10, 20 (후보가 늘어날수록 ReRanker에서 시간이 많이듬)
# (3) 2차 후보추출 Top3, Top5
hybrid
→ 질문을 입력받아 BM25와 Dense 검색을 수행하고 검색 후보 문서를 출력한다.
reranker
→ 검색 후보 문서를 입력받아 질문과의 관련도 순위를 다시 매기고 상위 원문을 선택한다.
extractor
→ 선택된 원문을 입력받아 질문에 필요한 부분만 추출한 추출문을 출력하며, 원문 ID 등의 메타데이터는 유지한다.