Rankify
统一集成检索、重排序与 RAG 全链路的 Python 工具包,支持 7 种检索器、24 种重排序模
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一集成检索、重排序与 RAG 全链路的 Python 工具包,支持 7 种检索器、24 种重排序模
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否遇到过这种情况:向大语言模型(LLM)提问一个专业问题时,它给出了一个听起来流畅、但完全错误的答案?这就是所谓的 「幻觉」(Hallucination) 问题——LLM 在缺乏真实知识的情况下,仍会自信地编造答案。
解决这个问题的主流方案是 RAG(Retrieval-Augmented Generation,检索增强生成):先从外部知识库中检索出相关文档,再让 LLM 基于真实材料作答。听起来简单,但实际落地时却面临重重挑战:
Rankify 正是为解决这些问题而生的——一个统一集成了检索、重排序和 RAG 全链路的 Python 工具包。
Rankify 由奥地利因斯布鲁克大学(University of Innsbruck)数据科学研究团队开发和维护,项目负责人为 Abdelrahman Abdallah(DataScienceUIBK),已在 arXiv 发表技术论文,并发布在 PyPI 供 pip 安装。项目采用 Apache 2.0 开源许可证,支持 Python 3.10~3.12。
该项目的核心定位是:为检索和 RAG 研究者提供一个标准化、可复现的实验平台。其野心不仅仅是做一个封装库,而是要成为该领域的「基准工具」——让研究者能像使用 GLUE/SuperGLUE 评测 NLP 模型一样,用 Rankify 评测自己的检索和 RAG 系统。
如果把 RAG 流程比作一次图书馆找书过程:
Rankify 的价值在于:它不是只做其中一个环节,而是把整个管道串起来,让研究者可以灵活替换任意组件,找出最优组合。
Rankify 内置了业界主流的 7 种检索方法:
| 检索器 | 类型 | 适用场景 |
|---|---|---|
| BM25 | 稀疏检索 | 轻量快速,baseline 首选 |
| DPR | 稠密检索 | 深度语义理解 |
| ANCE | 稠密检索 | 大规模检索优化 |
| BPR | 稠密检索 | 双向语义匹配 |
| ColBERT | 后期交互 | 高精度检索(需 GCC 9.4.0) |
| BGE | 稠密检索 | 中英文通用embedding |
| Contriever | 稠密检索 | 无监督对比学习 |
每种检索器都提供了预构建的 Wikipedia 和 MS MARCO 索引,开箱即用,大幅降低实验门槛。
重排序是 Rankify 最引以为傲的部分,支持三种策略:
代表模型包括:FirstModelReranker、LiT5ScoreReranker、LiT5DistillReranker、VicunaReranker、ZephyrReranker、CohereReranker、CohereRerankerMultilingual 等,涵盖专用 reranker 和 LLM-based reranker 两大类别。
支持连接的 LLM 包括:GPT 系列、LLAMA、T5 等,并提供 API 客户端集成(OpenAI、Cohere、Together、Anthropic)。
涵盖问答(Natural Questions、TriviaQA、2WikiMultiHopQA)、事实验证、多跳推理等多个领域,提供预检索文档(每个问题附带 Top-1000 候选文档,含相关性标注)。
Rankify 的代码结构高度模块化,核心包 rankify/ 包含以下子模块:
dataset/:统一数据集加载接口,Dataset.available_dataset() 可列出所有可用数据集,支持 retriever + dataset_name + n_docs 三参数配置下载models/:定义重排序模型的基类和具体实现,集成 vLLM、llama-cpp-python 等推理后端generator/:RAG 生成器,支持多种 LLM API 和本地模型pipeline.py:工作流管道,整合检索→重排序→生成全流程cli/:命令行工具 rankify-index,支持非 Python 脚本调用demo-web/:基于 Streamlit + Next.js 的 Web 界面(Streamlit demo + Next.js 前端)server/:FastAPI 服务端,提供 REST API 供外部调用依赖管理采用 Poetry 分层设计:
transformers、datasets、sentence_transformers、onnxruntimepyserini、faiss-cpu、h5py、langchainvllm、llama-cpp-python、cohereopenai、anthropic、litellm代码质量:仓库配置了 ruff 和 isort 进行 linting,有 pytest 测试套件,但未找到详细的测试覆盖率报告。
安装难度:中等偏高
Rankify 对 Python 版本(≥3.10)和 PyTorch 版本(推荐 2.5.1)有明确要求。若需 GPU 加速,还需配置 CUDA 12.4/12.6。若使用 ColBERT 检索器,还需要 GCC 9.4.0 和特殊的环境变量配置(LD_LIBRARY_PATH、CC、CXX),这一步卡住了不少用户。
两种使用方式对比:
| 方式 | 难度 | 说明 |
|---|---|---|
| pip 安装 | 中等 | pip install rankify 即可,但完整功能需 pip install "rankify[all]",依赖较多 |
| Streamlit Demo | 较低 | 提供可视化 Web UI,但需要手动启动(streamlit run demo.py),无 Docker 一键部署 |
注意:项目中 demo_server.py 提供了一个基于 FastAPI 的动态服务,支持 Azure OpenAI 等配置,但需要手动配置 .env 文件,门槛比 Streamlit Demo 更高。
Rankify 的出现填补了一个关键空白:此前,检索和 RAG 领域缺乏像 transformers 之于 NLP 那样统一、权威的工具库。研究者在对比不同方法时,往往需要自己实现数据加载、模型调用和评测脚本,工作重复且难以复现。
Rankify 的核心价值:
该项目目前的 678 颗 GitHub Stars 在学术工具类项目中属于较高水平,且仍在活跃开发中(v0.1.0 → v0.1.4 仅数月)。

图1:Rankify 核心架构——检索→重排序→生成完整管道
分析基于 GitHub 仓库 v0.1.4(数据截至分析时刻)。如需最新信息请访问项目主页。