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.
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.
- 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
- 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
- Installation des Fundaments
Installieren Sie die Kernfunktionen von Rankify:
pip install rankify
- Vollständige Installation (empfohlen)
Installieren Sie alle Funktionen:
pip install "rankify[all]"
- Installation auf Abruf (optional)
Nur die Suchfunktion ist installiert:
pip install "rankify[retriever]"
Es wird nur die Nachbestellungsfunktion installiert:
pip install "rankify[reranking]"
- 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]"
- 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::
- Modul Datensatz importieren.
- Wählen Sie den Retriever und den Datensatz aus.
- 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::
- Initialisieren Sie den Retriever.
- Geben Sie ein Dokument oder eine Frage ein.
- 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::
- Bereiten Sie erste Suchergebnisse vor.
- Initialisieren Sie das Neuordnungsmodell.
- 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::
- Bereiten Sie Unterlagen und Fragen vor.
- Initialisieren Sie den Generator.
- 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
- akademische Forschung
Forscher können Rankify verwenden, um Such- und Umordnungsalgorithmen zu testen und die Leistung zu analysieren. - intelligente Frage und Antwort (Q&A)
Entwickler können RAG verwenden, um Q&A-Systeme zur Beantwortung von Benutzerfragen zu erstellen. - Optimierung der Suche
Die Neuordnungsfunktion verbessert die Relevanz der Suchergebnisse und eignet sich zur Verbesserung von Suchmaschinen.
QA
- Welche Systeme werden von Rankify unterstützt?
Windows, Linux und macOS werden unterstützt, solange Python 3.10+ installiert ist. - Brauche ich ein Netzwerk?
Die Kernfunktionen sind offline verfügbar, aber die Datensätze und einige Modelle müssen heruntergeladen werden. - Unterstützt es Chinesisch?
Unterstützte, aber vorgefertigte Indizes sind hauptsächlich auf Englisch (Wikipedia und MS MARCO).