castorini/rank_llm

RankLLM is a Python toolkit for reproducible information retrieval research using rerankers, with a focus on listwise reranking.

해결하는 문제

검색 엔진은 종종 관련성에 따라 완벽하게 정렬되지 않은 초기 결과 집합을 반환합니다(예: BM25 또는 유사한 검색기를 사용할 때). RankLLM은 대규모 언어 모델을 사용하여 이러한 후보 목록을 재정렬(재순위화)하여 가장 관련성 높은 문서가 더 일찍 나타나도록 합니다. 세 가지 재순위화 전략을 지원합니다: 포인트와이즈(각 문서를 독립적으로 점수화, 예: MonoT5), 페어와이즈(문서 쌍 비교, 예: DuoT5), 리스트와이즈(전체 목록을 함께 고려, 예: RankZephyr, RankGPT, LiT5). 이는 검색 시스템을 재구축하지 않고도 검색 품질을 향상시킵니다.

작동 방식

일반적인 워크플로는 다음과 같습니다: 먼저 초기 후보 집합을 검색합니다(예: BM25 또는 SPLADE를 사용하여 상위 100개 문서). 그런 다음 이 후보들을 재순위화 모델에 입력하여 쿼리와의 관련성에 따라 재정렬합니다. RankLLM은 통합된 명령줄 인터페이스(rank-llm)와 Python API를 제공합니다. 여러 추론 백엔드를 지원합니다: vLLM을 통한 로컬 모델(예: RankZephyr, RankVicuna), OpenAI/OpenRouter를 통한 호스팅 모델(예: GPT-4o), Gemini(예: Gemini 3 Flash). 라이브러리에는 평가 도구(예: nDCG@10, MAP, 재현율), 모델 호출을 검사하는 분석 모듈, 결과를 JSONL, TREC 또는 JSON 형식으로 저장하는 데이터 작성기도 포함됩니다. 쉬운 배포를 위해 HTTP 또는 Model Context Protocol(MCP)을 통해 재순위화를 제공할 수 있습니다. 사용자 정의 프롬프트 템플릿은 YAML 파일로 제공할 수 있습니다.

대상 사용자

정보 검색, 검색 품질 및 순위화에 종사하는 연구자와 개발자. 실험 실행, 게시된 결과 재현(MS MARCO 데이터셋 DL19–23용 두 번 클릭 재현 명령) 및 LLM 기반 재순위화가 필요한 프로덕션 시스템 구축에 유용합니다. 라이브러리는 빠른 실행을 위한 CLI와 더 깊은 통합을 위한 Python API를 모두 갖춘 유연하게 설계되었습니다.

주요 기능

  • 포인트와이즈(MonoT5), 페어와이즈(DuoT5), 리스트와이즈(RankZephyr, RankVicuna, RankGPT, LiT5) 재순위화 모델 지원
  • 사전 훈련된 재순위화기 모델 동물원 포함(RankZephyr 7B, RankVicuna, LiT5 스위트, MonoT5, DuoT5, MonoELECTRA)
  • 오픈소스 모델(vLLM 경유)과 독점 API(OpenAI, OpenRouter, Gemini) 모두에서 작동
  • 추론 효율성 향상을 위해 첫 번째 토큰 로짓만 사용하여 재순위화 가능(예: FirstMistral)
  • YAML 파일을 통한 사용자 정의 프롬프트 템플릿
  • 엔드투엔드 파이프라인: 검색, 재순위화, 평가, 분석
  • MS MARCO 패시지 데이터셋(DL19–DL23)용 두 번 클릭 재현 명령
  • 서빙 옵션: HTTP API 및 MCP(Model Context Protocol) 서버
  • 리스트와이즈 재순위화기 미세 조정을 위한 훈련 스크립트
  • LlamaIndex와 같은 인기 있는 툴킷과의 긴밀한 통합(참고: README에는 많은 툴킷에서 구현이 명시되어 있음)

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트