castorini/pyserini
Pyserini is a Python toolkit for reproducible information retrieval research with sparse and dense representations.
Pyserini란 무엇인가요?
Pyserini는 Python 라이브러리로서 Python 코드에서 현대적인 정보검색(IR) 실험을 쉽게 수행할 수 있도록 도와줍니다. 이 라이브러리는 두 가지 강력한 백엔드를 래핑합니다:
- Anserini – Apache Lucene 기반의 Java 기반 IR 툴킷으로, 전통적인 어휘 검색(BM25 등)과 Lucene을 이용한 밀도 벡터 저장에 적합합니다.
- FAISS – Facebook에서 개발한 밀도 벡터 임베딩에 대한 빠른 유사성 검색을 위한 라이브러리입니다.
이 두 가지를 결합하면, 스파스 (어휘 기반) 모델, 밀도 (임베딩 기반) 모델, 또는 하이브리드 조합을 하나의 Python 패키지에서 모두 사용할 수 있습니다.
왜 주목해야 할까요?
- 재현 가능한 연구 – MS MARCO, NaturalQuestions, BEIR 등 많은 표준 테스트 컬렉션용으로 미리 준비된 인덱스, 쿼리 세트, 관련성 평가, 평가 스크립트가 함께 제공됩니다.
- 1단계 검색 – 다단계 랭킹 파이프라인의 빠르고 확장 가능한 '초기 단계'로 설계되었습니다 (예: 상위 k개 후보를 검색한 후, 대규모 언어 모델로 재랭킹).
- 간편한 설치 –
pip install pyserini로 대부분의 종속성(PyTorch, 🤗 Transformers, ONNX Runtime)이 자동 설치됩니다. FAISS는 선택 사항이며, 적절한faiss-cpu또는faiss-gpu패키지를 통해 추가할 수 있습니다. - 프로그래밍 및 서비스 기반 접근 – Python에서 직접 라이브러리를 사용하거나, REST 또는 MCP 서버를 실행하여 원격 쿼리에 접근할 수 있습니다.
시작하기 (설치)
# 기본 설치 – 대부분의 필수 패키지 가져오기
pip install pyserini
# 밀도 벡터 검색이 필요할 경우, 먼저 FAISS 버전 설치
pip install faiss-cpu # 또는 faiss-gpu
# 선택 사항: 멀티모달(이미지) 지원
pip install "pyserini[optional]"
Pyserini는 Python 3.12에서 실행되며, Anserini에 접근하기 위해 Java 21이 필요합니다.
핵심 기능
| 기능 | 사용 방법 | 일반적인 모델/백엔드 |
|---|---|---|
| 어휘 검색 (BM25, 쿼리-확률) | searcher.search("my query") |
Anserini를 통한 Lucene |
| 학습된 스파스 검색 (uniCOIL, SPLADE 등) | 동일한 API 사용, 적절한 인덱스 로드 | Lucene + 용어 가중치 벡터 |
| 밀도 검색 (DPR, Contriever, BGE 등) | Faiss 인덱스 또는 Lucene 기반 벡터 인덱스 로드 | FAISS 또는 Lucene HNSW |
| 하이브리드 검색 (밀도 + 스파스 융합) | 프로그래밍적으로 결과 결합 또는 내장 융합 사용 | 양쪽 백엔드 |
| 인덱스 생성 | BM25, 스파스 벡터, 밀도 벡터용 IndexBuilder 클래스 |
Java 구현(직접) 또는 임베디드 Python 래퍼 |
| 평가 | MAP, nDCG, Recall@k를 표준 qrels에서 계산하는 스크립트 | 내장 평가 유틸리티 |
| REST / MCP 서버 | python -m pyserini.rest 실행으로 HTTP 엔드포인트 노출 |
서비스 기반 접근 |
일반적인 워크플로우
- 코퍼스 선택 – 예: MS MARCO, NaturalQuestions, BEIR.
- 인덱스 다운로드 또는 생성 – 사전 구축된 인덱스 사용 가능; 그렇지 않으면 인덱싱 가이드 사용.
- 검색 모델 선택 – 어휘(BM25), 학습된 스파스, 밀도, 또는 하이브리드.
- 검색 실행 – 상위 k개 문서 검색.
- 문서 텍스트 가져오기 – 제공된 가져오기 유틸리티 사용.
- (선택 사항) 재랭킹 – 검색된 문장들을 대규모 언어 모델에 입력하여 최종 점수 매기기.
모든 단계는 docs/ 폴더에 문서화되어 있으며, README는 각 주요 데이터셋에 대한 구체적인 예제로 연결됩니다.
Pyserini를 사용하는 이들
- IR 논문을 발표하는 학계 연구자 (SIGIR 2021 논문에서 인용됨).
- 빠른 1단계 검색기 필요 시 RAG 파이프라인을 구축하는 팀.
- 표준 IR 테스트 컬렉션에서 재현 가능한 베이스라인을 필요로 하는 누구나.
더 알아보기
- 논문: Pyserini: A Python Toolkit for Reproducible Information Retrieval Research (SIGIR 2021).
- 문서: https://github.com/castorini/pyserini/tree/master/docs
- 재현 가이드: MS MARCO, BEIR, Mr. TyDi 등에 대한 2클릭 노트북.
- 커뮤니티: GitHub 리포지토리의 이슈 및 토론, Anserini/Pyserini 프로젝트용 메일링 리스트.
요약하면: Pyserini는 최소한의 설정으로 Python에서 최신의 스파스, 밀도, 하이브리드 검색을 실행할 수 있게 하며, 엄격한 IR 연구와 실용적인 검색 기반 응용 프로그램 개발에 필요한 데이터, 인덱스, 평가 도구를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트