¶如何从HuggingFace下载并搭建Rerank模型
¶什么是Rerank模型
Rerank模型的主要任务是对Embedding模型初步筛选出的候选集进行重新排序,确保最相关的结果排在最前面。它通常基于更复杂的语义分析,评估候选文档和查询之间的深层次匹配关系。在Rerank阶段,模型会分析查询与候选文档之间的上下文、语义关系等信息。它可以使用诸如BERT/GPT等预训练语言模型来捕捉更细腻的语义和句子间的关系,从而对初步候选文档进行更精确的评分与排序。Rerank模型一般比Embedding模型计算更复杂,通常需要更多的计算资源,因此适合处理Embedding模型初步检索后的数据。
- 初步检索(Embedding模型):用户输入查询后,Embedding模型首先将查询和文档表示为向量,然后通过向量相似度计算,快速从大规模数据集中筛选出若干个候选文档或候选答案。
- 重新排序(Rerank模型):在得到初步候选集后,Rerank模型进一步分析这些候选文档或答案与查询之间的精确匹配程度,并根据复杂的语义关系重新打分,对候选集进行排序。
¶使用Docker安装
采用Docker部署模型,Docker调用GPU,需先安装nvidia-container-toolkits
从存储库更新包列表与安装NVIDIA Container Toolkit
1 | sudo apt-get update |
一键部署BAAI/bge-reranker-large模型。
1 | docker run --gpus all -p 18080:80 -v /reranker:/data --pull always ghcr.io/huggingface/text-embeddings-inference:turing-1.5 --model-id BAAI/bge-reranker-large |
¶直接安装
docker镜像源下载比较慢,这里采用python本地安装
- 确保系统已安装 Python 3.8 或更高版本,并安装 pip 包管理工具。
1 | # 检查 Python 版本 |
- 安装依赖库
BAAI/bge-reranker-large 是一个基于 Transformer 的模型,通常使用 transformers 库加载和运行。安装以下依赖:
1 | pip install torch transformers |
- torch: PyTorch 是运行模型的基础框架。
- transformers: Hugging Face 提供的库,用于加载和运行预训练模型。
- 下载模型
参考文档:https://huggingface.co/docs/transformers/v4.48.2/zh/installation#离线模式
1 | from transformers import AutoTokenizer, AutoModelForSequenceClassification |
- 提供API服务
如果你不想微调模型,你可以直接安装包,不用finetune依赖:
1 | pip install -U FlagEmbedding |
如果你想微调模型,你可以用finetune依赖安装:
1 | pip install -U FlagEmbedding[finetune] |
使用 FastAPI 部署为服务:pip install fastapi uvicorn pydantic
vi bge-reranker-large.py
1 | from fastapi import FastAPI |
启动服务:uvicorn bge-reranker-large:app --reload --host 0.0.0.0 --port 5000
参考文档:https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/inference/reranker#using-huggingface-transformers
访问API进行测试:
1 | curl -X POST "http://127.0.0.1:5000/rerank" -H "Content-Type: application/json" -d '{"query": "What is the capital of France?", "document": "Paris is the capital of France."}' |
产考文档:
- https://huggingface.co/docs/transformers/v4.48.2/zh/installation#离线模式
- https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/inference/reranker#using-huggingface-transformers