Choosing the Right Ranker

Choosing the Right Ranker

Ranker를 고를 때는 "그냥 가장 좋은 모델"이 아니라 내 파이프라인의 상황(지연 시간, 프라이버시, 다양성 요구)에 맞는 걸 골라야 해요. 이 페이지는 API 기반 Ranker와 온프레미스 Ranker, 그리고 휴리스틱(규칙 기반) 접근의 차이를 설명하고 상황별 조언을 제공합니다.

출처: 공식문서

Haystack의 Ranker는 검색된 문서 집합을 사용자 질의에 대한 추정 관련성을 기준으로 재정렬합니다. Ranker는 검색(retrieval) 이후에 동작하며, 결과 목록을 GeneratorReader 같은 하위 컴포넌트로 넘기기 전에 다듬는 역할을 하죠.

이 재정렬은 단순 벡터 유사도 너머의 추가 신호에 기반합니다. 사용하는 Ranker에 따라 이런 신호에는 의미론적 유사도(cross-encoder 사용), 구조화된 메타데이터(예: 타임스탬프나 카테고리), 위치 기반 휴리스틱(예: 관련 콘텐츠를 처음과 끝에 배치)이 포함될 수 있어요.

Ranker를 쓰는 전형적인 질의응답 파이프라인은 다음과 같습니다.

  1. 검색: Retriever로 후보 문서 집합을 찾습니다.
  2. 순위화: Ranker 컴포넌트로 그 문서들을 재정렬합니다.
  3. 답변: 재정렬된 문서를 하위 GeneratorReader로 넘깁니다.

이 가이드는 성능, 비용, 정확도, 결과 다양성 중 무엇을 최적화하느냐에 따라 올바른 Ranker를 고르는 데 도움을 줍니다. 특정 모델이 아니라, 여러분의 환경에 가장 잘 맞는 일반적인 메커니즘과 인터페이스에 초점을 맞춰요.

API 기반 Ranker

이 Ranker들은 외부 API를 사용해 원격으로 호스팅되는 강력한 모델로 문서를 재정렬합니다. 로컬 계산 없이 높은 품질의 관련성 점수를 제공하지만, 네트워크 지연으로 더 느릴 수 있고 규모가 커지면 비용이 들 수 있어요.

가격 모델은 제공자마다 다릅니다. 어떤 곳은 처리된 토큰당, 어떤 곳은 사용 시간 또는 API 호출 수로 청구합니다. 정확한 비용 구조는 각 제공자 문서를 참고하세요.

Haystack의 대부분의 API 기반 Ranker는 현재 cross-encoder 모델에 의존합니다(현재 기준이며, 미래에는 바뀔 수 있음). 이 모델은 질의와 문서를 함께 평가해 매우 정확한 관련성 점수를 냅니다. 예시로 AmazonBedrockRanker, CohereRanker, JinaRanker가 있습니다.

반면 NvidiaRankerLLMRanker는 순위화에 대형 언어 모델(LLM)을 사용합니다. 이 모델들은 관련성을 의미론적 추론 작업으로 다루는데, 복잡하거나 다단계 질의에서 더 나은 결과를 낼 수 있지만 계산 비용이 높아지는 경우가 많습니다. LLMRanker는 모든 Haystack 채팅 생성기와 함께 작동하며 LLM에게 순위가 매겨진 문서 인덱스를 JSON으로 반환하도록 요청합니다.

온프레미스 Ranker

이 Ranker들은 전적으로 로컬 인프라에서 실행됩니다. 외부 API에 의존하지 않으면서 데이터 프라이버시, 비용 통제, 저지연 추론을 우선시하는 팀에 이상적이에요. 모델이 로컬에서 실행되므로 네트워크 병목과 반복 사용 비용을 피하지만, 특히 cross-encoder 모델의 경우 충분한 컴퓨팅 자원(보통 GPU)이 필요합니다.

Haystack의 모든 온프레미스 Ranker는 cross-encoder 아키텍처를 사용합니다. 이 모델들은 질문과 각 문서를 함께 처리해 깊은 맥락 인식으로 관련성을 평가합니다. 예를 들어:

  • SentenceTransformersSimilarityRanker는 질의에 대한 의미론적 유사도를 기준으로 문서를 순위화합니다. 기본 PyTorch 백엔드(GPU에 최적) 외에도 CPU 전용 환경에 적합한 메모리 효율적인 ONNX·OpenVINO 옵션을 제공합니다.
  • HuggingFaceTEIRanker는 Text Embeddings Inference 프로젝트에 기반합니다. GPU가 있든 없든 로컬 서빙에서 높은 성능을 제공하며, Hugging Face Inference Endpoints에 호스팅된 reranking 모델로 추론하는 데에도 쓸 수 있습니다.
  • FastembedRanker는 다양한 cross-encoder 모델을 지원하며 CPU 전용 환경에 최적입니다.
  • SentenceTransformersDiversityRanker는 다양성을 최대화하도록 문서를 재정렬해 중복을 줄이고 더 넓은 범위의 관련 주제를 포함하게 합니다.

이 Ranker들은 모델 선택, 최적화, 배포를 완전히 통제할 수 있어서, 엄격한 SLA나 규정 준수 요구가 있는 프로덕션 환경에 잘 맞습니다.

규칙 기반 Ranker

Haystack의 규칙 기반 Ranker는 의미론적 이해보다 휴리스틱 로직으로 문서를 우선순위화하거나 재정렬합니다. 문서 메타데이터나 단순 구조 패턴으로 동작해 계산 효율이 높고, 도메인별 규칙을 적용하거나 검색 파이프라인의 입력을 구조화하는 데 유용합니다. 의미적 관련성을 직접 평가하지는 않지만, cross-encoder나 LLM 기반 Ranker 같은 고급 방법을 보완하는 가치 있는 도구예요.

예를 들어:

  • MetaFieldRanker는 최신성, 출처 신뢰도, 커스텀 우선순위 같은 메타데이터 값을 기준으로 문서에 점수를 매기고 정렬합니다.
  • MetaFieldGroupingRanker는 지정된 메타데이터 필드로 문서를 그룹화하고 각 그룹의 모든 문서를 함께 반환합니다. 같은 파일에서 온 문서 같은 관련 문서를 하나의 블록으로 처리하게 해 LLM 성능을 개선하는 것으로 알려져 있습니다.
  • LostInTheMiddleRanker는 순위화 후 문서를 재정렬해 제한된 컨텍스트 창을 가진 모델의 위치 편향(position bias)을 완화하고, 관련성이 높은 항목이 간과되지 않게 합니다.

MetaFieldRanker Ranker는 보통 의미론적 순위화 이전에 비즈니스 로직에 따라 문서를 필터링하거나 재구성하는 데 쓰입니다.

반대로 LostInTheMiddleRanker와 MetaFieldGroupingRanker순위화 이후, LLM 같은 하위 컴포넌트의 효과를 높이기 위해 사용하도록 설계됐어요. 이 결정적 접근법은 속도, 투명성, 세밀한 제어를 제공해 설명 가능성이나 엄격한 운영 로직이 필요한 파이프라인에 잘 맞습니다.

더 알아보기