Rankify: 정보 검색 및 재정렬을 지원하는 Python 툴킷

최신 AI 리소스5개월 전에 게시 됨 AI 공유 서클
11.5K 00

일반 소개

Rankify는 오스트리아 인스브루크 대학교의 데이터 과학 그룹에서 개발한 오픈 소스 Python 툴킷입니다. 이 툴킷은 정보 검색, 재정렬 및 검색 증강 생성(RAG)에 중점을 두고 통합된 프레임워크를 제공합니다. 이 툴킷에는 40개의 사전 검색된 벤치마크 데이터 세트가 내장되어 있고, 7가지 검색 기술과 24가지 재정렬 모델을 지원하며, 다음과 같은 다양한 기능이 포함되어 있습니다. RAG Rankify는 모듈식이며 쉽게 확장할 수 있어 연구자와 개발자가 실험과 벤치마킹을 하기에 적합합니다. 코드는 공개적이고 잘 문서화되어 있으며 Python 3.10 이상을 지원합니다.

Rankify:支持信息检索与重排序的Python工具包

 

기능 목록

  • BM25, DPR, 콜버트, ANCE, BGE, 컨트리버, HYDE 등 7가지 검색 기술을 사용할 수 있습니다.
  • MonoT5, RankGPT, Sentence 등 24가지 재주문 모델이 지원됩니다. 트랜스포머 등을 사용하여 검색 결과의 정확도를 개선합니다.
  • GPT, LLaMA, T5 및 기타 모델 생성 응답을 지원하는 통합 검색 증강 생성(RAG)을 제공합니다.
  • Q&A, 대화, 엔티티 연결 및 기타 시나리오를 포함하는 40개의 사전 검색된 데이터 세트가 내장되어 있습니다.
  • 검색, 재주문, 결과 생성에 대한 메트릭을 계산하는 평가 도구(예: Top-K, EM, 리콜)를 제공합니다.
  • 사전 구축된 색인(예: Wikipedia 및 MS MARCO)을 지원하므로 자체 색인을 구축할 필요가 없습니다.
  • 사용자가 데이터 세트, 검색기 및 모델을 사용자 지정할 수 있는 모듈식 구조입니다.

 

도움말 사용

Rankify는 설치와 사용이 간단합니다. 다음은 빠르게 시작하는 데 도움이 되는 자세한 단계와 지침입니다.

설치 프로세스

Rankify에는 Python 3.10 이상이 필요합니다. 종속성 충돌을 피하기 위해 가상 환경에 설치하는 것이 좋습니다.

  1. 가상 환경 만들기(권장)
    Conda를 사용하여 환경을 만듭니다:
conda create -n rankify python=3.10
conda activate rankify

또는 Python 자체 도구를 사용하세요:

python -m venv rankify_env
source rankify_env/bin/activate  # Linux/Mac
rankify_env\Scripts\activate    # Windows
  1. PyTorch 설치(권장 버전 2.5.1)
    GPU가 있는 경우 CUDA 12.4 버전을 설치하세요:
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124

GPU가 없는 경우 CPU 버전을 설치하세요:

pip install torch==2.5.1
  1. 파운데이션 설치
    Rankify 핵심 기능을 설치합니다:
pip install rankify
  1. 설치 완료(권장)
    모든 기능을 설치합니다:
pip install "rankify[all]"
  1. 온디맨드 설치(선택 사항)
    검색 기능만 설치됩니다:
pip install "rankify[retriever]"

재주문 기능만 설치됩니다:

pip install "rankify[reranking]"
  1. GitHub에서 최신 버전 설치(선택 사항)
    개발 버전을 다운로드하세요:
git clone https://github.com/DataScienceUIBK/Rankify.git
cd Rankify
pip install -e ".[all]"
  1. 콜버트 리트리버 설치(선택 사항)
    추가 구성이 필요합니다:
conda install -c conda-forge gcc=9.4.0 gxx=9.4.0
conda install -c conda-forge libstdcxx-ng
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
export CC=gcc
export CXX=g++
rm -rf ~/.cache/torch_extensions/*

Rankify는 설치 후 바로 사용할 수 있습니다.

기능 작동 가이드

1. 미리 검색된 데이터 세트 사용

Rankify는 허깅 페이스에서 다운로드할 수 있는 40개의 사전 검색된 데이터 세트를 제공합니다.

  • 이동::
  1. 데이터 세트 모듈 가져오기.
  2. 검색기와 데이터 집합을 선택합니다.
  3. 데이터를 다운로드하거나 로드합니다.
  • 샘플 코드(컴퓨팅)::
from rankify.dataset.dataset import Dataset
# 查看可用数据集
Dataset.available_dataset()
# 下载 BM25 的 nq-dev 数据集
dataset = Dataset(retriever="bm25", dataset_name="nq-dev", n_docs=100)
documents = dataset.download(force_download=False)
# 加载本地数据集
documents = Dataset.load_dataset('./bm25_nq_dev.json', 100)

2. 검색 기능 사용

BM25, DPR 등 다양한 검색 방법을 지원합니다.

  • 이동::
    1. 리트리버를 초기화합니다.
    2. 문서 또는 질문을 입력합니다.
    3. 검색 결과 보기.
  • 샘플 코드(컴퓨팅)::
    from rankify.retrievers.retriever import Retriever
    # 使用 BM25 检索 Wikipedia
    retriever = Retriever(method="bm25", n_docs=5, index_type="wiki")
    docs = [{"question": "太阳是什么?"}]
    results = retriever.retrieve(docs)
    print(results)
    

3. 재주문 기능 사용

재정렬은 검색 결과를 최적화하고 여러 모델을 지원합니다.

  • 이동::
    1. 초기 검색 결과를 준비합니다.
    2. 재주문 모델을 초기화합니다.
    3. 재주문.
  • 샘플 코드(컴퓨팅)::
    from rankify.models.reranking import Reranking
    from rankify.dataset.dataset import Document, Question, Context
    # 准备数据
    question = Question("太阳是什么?")
    contexts = [Context(text="太阳是恒星。", id=1), Context(text="月亮不是恒星。", id=2)]
    doc = Document(question=question, contexts=contexts)
    # 重排序
    reranker = Reranking(method="monot5", model_name="monot5-base-msmarco")
    reranker.rank([doc])
    for ctx in doc.reorder_contexts:
    print(ctx.text)
    

4. RAG 기능 사용

RAG는 검색과 생성을 결합하여 정확한 응답을 생성합니다.

  • 이동::
    1. 문서와 질문을 준비합니다.
    2. 생성기를 초기화합니다.
    3. 답변 생성하기.
  • 샘플 코드(컴퓨팅)::
    from rankify.generator.generator import Generator
    doc = Document(question=Question("法国首都是什么?"), contexts=[Context(text="法国首都是巴黎。", id=1)])
    generator = Generator(method="in-context-ralm", model_name="meta-llama/Llama-3.1-8B")
    answers = generator.generate([doc])
    print(answers)  # 输出:["巴黎"]
    

5. 결과 평가

성능을 확인할 수 있는 평가 도구가 내장되어 있습니다.

  • 샘플 코드(컴퓨팅)::
    from rankify.metrics.metrics import Metrics
    metrics = Metrics(documents)
    retrieval_metrics = metrics.calculate_retrieval_metrics(ks=[1, 5, 10])
    print(retrieval_metrics)
    

주의

  • GPU 사용자는 PyTorch가 CUDA를 지원하는지 확인해야 합니다.
  • 대용량 데이터 세트에는 고용량 메모리 장치를 사용하는 것이 좋습니다.
  • 자세한 내용은 공식 문서(http://rankify.readthedocs.io/)를 참조하세요.

 

애플리케이션 시나리오

  1. 학술 연구
    연구자는 Rankify를 사용하여 검색 및 재정렬 알고리즘을 테스트하고 성능을 분석할 수 있습니다.
  2. 지능형 질문 및 답변(Q&A)
    개발자는 RAG를 사용하여 사용자 질문에 답변하는 Q&A 시스템을 구축할 수 있습니다.
  3. 검색 최적화
    재정렬 기능은 검색 결과의 연관성을 개선하고 검색 엔진을 개선하는 데 적합합니다.

 

QA

  1. Rankify는 어떤 시스템을 지원하나요?
    Python 3.10 이상이 설치되어 있는 경우 Windows, Linux 및 macOS가 지원됩니다.
  2. 네트워크가 필요한가요?
    핵심 기능은 오프라인에서 사용할 수 있지만 데이터 세트와 일부 모델은 다운로드해야 합니다.
  3. 중국어를 지원하나요?
    지원되지만 사전 구축된 인덱스는 주로 영어(위키백과 및 MS MARCO)로 되어 있습니다.
© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...