AI个人学习
和实操指南
讯飞绘镜

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

综合介绍

Rankify 是由奥地利因斯布鲁克大学数据科学小组开发的开源 Python 工具包。它专注于信息检索、重排序和检索增强生成(RAG),提供了一个统一的框架。工具包内置 40 个预检索基准数据集,支持 7 种检索技术和 24 种重排序模型,还包括多种 RAG 方法。Rankify 采用模块化设计,易于扩展,适合研究人员和开发者用于实验和基准测试。代码开放,文档详尽,支持 Python 3.10 及以上版本。

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


 

功能列表

  • 提供 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 或以上版本。建议使用虚拟环境安装,避免依赖冲突。

  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. 安装 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 下载。

  • 步骤
  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. 智能问答
    开发者可利用 RAG 构建问答系统,回答用户提问。
  3. 搜索优化
    重排序功能可提升搜索结果相关性,适合改进搜索引擎。

 

QA

  1. Rankify 支持哪些系统?
    支持 Windows、Linux 和 macOS,只要安装 Python 3.10+ 即可。
  2. 需要联网吗?
    核心功能离线可用,但数据集和部分模型需下载。
  3. 支持中文吗?
    支持,但预构建索引主要为英文(Wikipedia 和 MS MARCO)。
未经允许不得转载:首席AI分享圈 » Rankify:支持信息检索与重排序的Python工具包
zh_CN简体中文