综合介绍
Rankify 是由奥地利因斯布鲁克大学数据科学小组开发的开源 Python 工具包。它专注于信息检索、重排序和检索增强生成(RAG),提供了一个统一的框架。工具包内置 40 个预检索基准数据集,支持 7 种检索技术和 24 种重排序模型,还包括多种 RAG 方法。Rankify 采用模块化设计,易于扩展,适合研究人员和开发者用于实验和基准测试。代码开放,文档详尽,支持 Python 3.10 及以上版本。
功能列表
- 提供 7 种检索技术,包括 BM25、DPR、ColBERT、ANCE、BGE、Contriever 和 HYDE。
- 支持 24 种重排序模型,如 MonoT5、RankGPT、Sentence Transformer 等,提升检索结果准确性。
- 集成检索增强生成(RAG),支持 GPT、LLaMA、T5 等模型生成回答。
- 内置 40 个预检索数据集,涵盖问答、对话、实体链接等场景。
- 提供评估工具,计算检索、重排序和生成结果的指标,如 Top-K、EM、Recall。
- 支持预构建索引(如 Wikipedia 和 MS MARCO),无需自己建索引。
- 模块化结构,允许用户自定义数据集、检索器和模型。
使用帮助
Rankify 的安装和使用简单明了。以下是详细步骤和操作指南,帮助你快速上手。
安装流程
Rankify 需要 Python 3.10 或以上版本。建议使用虚拟环境安装,避免依赖冲突。
- 创建虚拟环境(推荐)
使用 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
- 安装 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
- 基础安装
安装 Rankify 核心功能:
pip install rankify
- 完整安装(推荐)
安装所有功能:
pip install "rankify[all]"
- 按需安装(可选)
只安装检索功能:
pip install "rankify[retriever]"
只安装重排序功能:
pip install "rankify[reranking]"
- 从 GitHub 安装最新版(可选)
获取开发版:
git clone https://github.com/DataScienceUIBK/Rankify.git
cd Rankify
pip install -e ".[all]"
- 安装 ColBERT 检索器(可选)
需要额外配置:
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 个预检索数据集,可从 Hugging Face 下载。
- 步骤:
- 导入数据集模块。
- 选择检索器和数据集。
- 下载或加载数据。
- 示例代码:
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 等。
- 步骤:
- 初始化检索器。
- 输入文档或问题。
- 获取检索结果。
- 示例代码:
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. 使用重排序功能
重排序优化检索结果,支持多种模型。
- 步骤:
- 准备初始检索结果。
- 初始化重排序模型。
- 重新排序。
- 示例代码:
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 结合检索和生成,生成准确回答。
- 步骤:
- 准备文档和问题。
- 初始化生成器。
- 生成回答。
- 示例代码:
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/。
应用场景
- 学术研究
研究人员可以用 Rankify 测试检索和重排序算法,分析性能。 - 智能问答
开发者可利用 RAG 构建问答系统,回答用户提问。 - 搜索优化
重排序功能可提升搜索结果相关性,适合改进搜索引擎。
QA
- Rankify 支持哪些系统?
支持 Windows、Linux 和 macOS,只要安装 Python 3.10+ 即可。 - 需要联网吗?
核心功能离线可用,但数据集和部分模型需下载。 - 支持中文吗?
支持,但预构建索引主要为英文(Wikipedia 和 MS MARCO)。