FlashRank 项目介绍
FlashRank 是一个超轻量级和超级快速的Python库,旨在为现有的搜索和检索流程添加重排序功能。该项目基于最先进的语言模型(SoTA LLMs)和交叉编码器。这些模型的所有者对该项目的贡献表示感谢。
项目特点
1. 超轻量
FlashRank 不需要使用Torch或Transformers,能够在CPU上运行。该项目拥有世界上最小的重排序模型,大小仅约4MB。
2. 超级快速
重排序速度取决于段落中的标记数量、查询和模型深度。默认模型在例子中的运行时间已经合理优化。详细的基准测试待更新。
3. 成本节约
服务器无状态部署,如Lambda服务,是按内存和调用时间收费。FlashRank的较小包体积降低了冷启动时间和重新部署的时间。
4. 先进的基于交叉编码器和其他模型
FlashRank 使用了最先进的交叉编码器和其他模型实现重排序。"零样本重排序器的效果如何"可以在参考部分查看。
支持的模型
FlashRank 支持多种模型,包括:
- 默认模型
ms-marco-TinyBERT-L-2-v2
(约4MB) - 最佳交叉编码器重排序器
ms-marco-MiniLM-L-12-v2
(约34MB) - 最佳非交叉编码器重排序器
rank-T5-flan
(约110MB) - 支持100多种语言的多语言模型
ms-marco-MultiBERT-L-12
(约150MB) - 微调的
ce-esci-MiniLM-L12-v2
- 大型上下文窗口和较快性能的
rank_zephyr_7b_v1_full
(约4GB,4比特量化) - 专用阿拉伯语重排序器
miniReranker_arabic_v1
安装方法
-
如果需要轻量级的成对重排序器,可以使用以下命令进行安装:
pip install flashrank
-
如果需要基于大型语言模型的列表重排序器,可以使用以下命令:
pip install flashrank[listwise]
加速重排序
设置合理的 max_length
值,以适应最长的文本段。可以使用Openai tiktoken等库估算token的密度,以便更精准地预估性能。
开始使用
通过简单的几行代码,用户可以轻松开始使用FlashRank进行重排序。以下是一个使用示例:
from flashrank import Ranker, RerankRequest
ranker = Ranker(max_length=128)
query = "How to speedup LLMs?"
passages = [
{"id":1, "text":"...", "meta": {"additional": "info1"}},
# 其它段落
]
rerankrequest = RerankRequest(query=query, passages=passages)
results = ranker.rerank(rerankrequest)
print(results)
与检索管道的配合
FlashRank可以与各种检索管道无缝集成,包括:
- 词法搜索
- 语义搜索/恢复增广生成(RAG)应用
- 混合搜索
部署模式
在AWS Lambda等无服务器环境中,可以通过配置专用目录来缓存模型,以减少冷启动时间。这可以通过配置Dockerfile来实现。
参考文献与引用
有关如何引用FlashRank项目的信息,请参考“引用本库”链接。此外,包含多篇引用了FlashRank的论文。最近的更新还修复了与模型存储库相关的问题,用户被建议升级到最新版本以继续使用。