AI Personal Learning
und praktische Anleitung
讯飞绘镜

Rankify: ein Python-Toolkit, das die Suche und Neuordnung von Informationen unterstützt

Allgemeine Einführung

Rankify ist ein Open-Source-Python-Toolkit, das von der Data Science Group an der Universität Innsbruck entwickelt wurde. Es konzentriert sich auf Information Retrieval, Reordering und Retrieval Augmentation Generation (RAG) und bietet ein einheitliches Framework. Das Toolkit wird mit 40 vorbereiteten Benchmark-Datensätzen, Unterstützung für 7 Retrieval-Techniken und 24 Umordnungsmodelle geliefert und umfasst eine Vielzahl von RAG Rankify ist modular und leicht erweiterbar und eignet sich für Forscher und Entwickler zum Experimentieren und Benchmarking. Der Code ist offen und gut dokumentiert, und unterstützt Python 3.10 und höher.

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


 

Funktionsliste

  • Es stehen sieben Abrufverfahren zur Verfügung, darunter BM25, DPR, ColBERT, ANCE, BGE, Contriever und HYDE.
  • Es werden 24 Umordnungsmodelle unterstützt, z. B. MonoT5, RankGPT, Sentence Transformator usw., um die Genauigkeit der Suchergebnisse zu verbessern.
  • Integrierte Retrieval Augmented Generation (RAG) mit Unterstützung für GPT, LLaMA, T5 und andere Modellgenerierungsantworten.
  • 40 vordefinierte Datensätze für Fragen und Antworten, Dialoge, Verknüpfung von Entitäten und andere Szenarien sind bereits integriert.
  • Bietet Bewertungswerkzeuge zur Berechnung von Metriken für das Abrufen, Neuordnen und Generieren von Ergebnissen, wie Top-K, EM, Recall.
  • Unterstützt vorgefertigte Indizes (z. B. Wikipedia und MS MARCO), so dass Sie keine eigenen Indizes erstellen müssen.
  • Modulare Struktur, die es den Nutzern ermöglicht, Datensätze, Retriever und Modelle individuell zu gestalten.

 

Hilfe verwenden

Rankify ist einfach zu installieren und zu verwenden. Im Folgenden finden Sie detaillierte Schritte und Anleitungen, damit Sie schnell loslegen können.

Einbauverfahren

Rankify erfordert Python 3.10 oder höher. Es wird empfohlen, es in einer virtuellen Umgebung zu installieren, um Konflikte mit Abhängigkeiten zu vermeiden.

  1. Erstellen einer virtuellen Umgebung (empfohlen)
    Erstellen Sie eine Umgebung mit Conda:
conda create -n rankify python=3.10
conda activate rankify

oder verwenden Sie die Python-eigenen Werkzeuge:

python -m venv rankify_env
source rankify_env/bin/activate  # Linux/Mac
rankify_env\Scripts\activate    # Windows
  1. PyTorch installieren (empfohlene Version 2.5.1)
    Wenn Sie eine GPU haben, installieren Sie die Version mit 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

Wenn Sie keinen Grafikprozessor haben, installieren Sie die CPU-Version:

pip install torch==2.5.1
  1. Installation des Fundaments
    Installieren Sie die Kernfunktionen von Rankify:
pip install rankify
  1. Vollständige Installation (empfohlen)
    Installieren Sie alle Funktionen:
pip install "rankify[all]"
  1. Installation auf Abruf (optional)
    Nur die Suchfunktion ist installiert:
pip install "rankify[retriever]"

Es wird nur die Nachbestellungsfunktion installiert:

pip install "rankify[reranking]"
  1. Installieren Sie die neueste Version von GitHub (optional)
    Holen Sie sich die Entwicklungsversion:
git clone https://github.com/DataScienceUIBK/Rankify.git
cd Rankify
pip install -e ".[all]"
  1. Installation von ColBERT Retriever (optional)
    Eine zusätzliche Konfiguration ist erforderlich:
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 ist nach der Installation sofort einsatzbereit.

Funktion Betriebsanleitung

1. die Verwendung von vorselektierten Datensätzen

Rankify bietet 40 vorab abgerufene Datensätze, die von Hugging Face heruntergeladen werden können.

  • umziehen::
  1. Modul Datensatz importieren.
  2. Wählen Sie den Retriever und den Datensatz aus.
  3. Daten herunterladen oder laden.
  • Beispielcode (Rechnen)::
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. die Nutzung der Suchfunktion

Unterstützt mehrere Suchmethoden wie BM25, DPR, etc.

  • umziehen::
    1. Initialisieren Sie den Retriever.
    2. Geben Sie ein Dokument oder eine Frage ein.
    3. Suchergebnisse erhalten.
  • Beispielcode (Rechnen)::
    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. die Verwendung der Umordnungsfunktion

Die Neuordnung optimiert die Abfrageergebnisse und unterstützt mehrere Modelle.

  • umziehen::
    1. Bereiten Sie erste Suchergebnisse vor.
    2. Initialisieren Sie das Neuordnungsmodell.
    3. Neubestellung.
  • Beispielcode (Rechnen)::
    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. die Verwendung der RAG-Funktion

RAG kombiniert Abruf und Erzeugung, um genaue Antworten zu generieren.

  • umziehen::
    1. Bereiten Sie Unterlagen und Fragen vor.
    2. Initialisieren Sie den Generator.
    3. Antworten generieren.
  • Beispielcode (Rechnen)::
    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. die Bewertung der Ergebnisse

Integriertes Bewertungstool zur Überprüfung der Leistung.

  • Beispielcode (Rechnen)::
    from rankify.metrics.metrics import Metrics
    metrics = Metrics(documents)
    retrieval_metrics = metrics.calculate_retrieval_metrics(ks=[1, 5, 10])
    print(retrieval_metrics)
    

caveat

  • GPU-Nutzer müssen sicherstellen, dass PyTorch CUDA unterstützt.
  • Für große Datensätze werden Geräte mit hohem Speicherbedarf empfohlen.
  • Weitere Einzelheiten finden Sie in der offiziellen Dokumentation unter http://rankify.readthedocs.io/.

 

Anwendungsszenario

  1. akademische Forschung
    Forscher können Rankify verwenden, um Such- und Umordnungsalgorithmen zu testen und die Leistung zu analysieren.
  2. intelligente Frage und Antwort (Q&A)
    Entwickler können RAG verwenden, um Q&A-Systeme zur Beantwortung von Benutzerfragen zu erstellen.
  3. Optimierung der Suche
    Die Neuordnungsfunktion verbessert die Relevanz der Suchergebnisse und eignet sich zur Verbesserung von Suchmaschinen.

 

QA

  1. Welche Systeme werden von Rankify unterstützt?
    Windows, Linux und macOS werden unterstützt, solange Python 3.10+ installiert ist.
  2. Brauche ich ein Netzwerk?
    Die Kernfunktionen sind offline verfügbar, aber die Datensätze und einige Modelle müssen heruntergeladen werden.
  3. Unterstützt es Chinesisch?
    Unterstützte, aber vorgefertigte Indizes sind hauptsächlich auf Englisch (Wikipedia und MS MARCO).
Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " Rankify: ein Python-Toolkit, das die Suche und Neuordnung von Informationen unterstützt
de_DEDeutsch