基于llama.cpp的量化版reranker模型调用示例
CPU平台transformers版reranker响应速度慢,这里尝试量化版模型,期望提高响应速度。
ollama目前(25.8.22)还不支持reranker的endpoint,只能考虑其他复杂点的方案,比如llama.cpp。
这里使用llama.cpp,量化bge-reranker-v2-m3模型。
1 llama.cpp安装
centos7系统基础库glibc比较老,llama.cpp直接编译安装存在障碍,所以这里采用docker方案。
1)镜像下载
假设docker已经安装,安装过程参考如下链接
centos7 安装ragflow示例_ragflow能部署在centos上吗-CSDN博客
llama.cpp docker镜像如下
ghcr.io/ggml-org/llama.cpp:server - 镜像下载 | ghcr.io
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/ggml-org/llama.cpp:server
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/ggml-org/llama.cpp:server ghcr.io/ggml-org/llama.cpp:server
2)镜像启动
llama.cpp docker文档如下
https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md
docker启动命令如下,/path/to/models就是存放具体下载模型的地方
nohup docker run -v /path/to/models:/models -p 8000:8000 ghcr.io/ggml-org/llama.cpp:server -m /models/bge-reranker-v2-m3-Q2_K.gguf --reranking --port 8000 --host 0.0.0.0 -n 8192 > run.log &
这里启动的是bge-reranker-v2-m3-Q2_K.gguf,采用llama.cpp的Q2量化,来源如下
https://huggingface.co/gpustack/bge-reranker-v2-m3-GGUF/tree/main
具体量化操作过程参考如下链接。
在mac m1基于llama.cpp运行deepseek_macos m1运行gguf文件-CSDN博客
由于是reranking,启动时提供--reranking选项。
2 reranker模型测试
1)reranking任务说明
所下所示,documents是初筛找出的可能与query相关的文档。
reranking是更精准判断query与documents中每个doc的相关程度,具体为relevance_score。
"query": "明天天气怎么样",
"documents": [
"今天天气晴朗,我的心情美美哒",
"小明和小红一起上学",
"我们来试一试吧",
"我们一起学猫叫",
"我和Faker五五开",
"明天预计下雨,不能出去玩了"
]
2)reranking调用示例
模型调用示例如下,llama.cpp兼容openai接口,采用如下openai式的http api去请求。
curl --location 'http://localhost:8000/v1/reranking' \
--header 'Authorization: Bearer $OPENAI_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"query": "明天天气怎么样",
"documents": [
"今天天气晴朗,我的心情美美哒",
"小明和小红一起上学",
"我们来试一试吧",
"我们一起学猫叫",
"我和Faker五五开",
"明天预计下雨,不能出去玩了"
],
"model": "text-embedding-ada-002",
"encoding_format": "float"
}'
输出如下
{
"model": "text-embedding-ada-002",
"object": "list",
"usage": {
"prompt_tokens": 92,
"total_tokens": 92
},
"results": [
{
"index": 0,
"relevance_score": -1.7882604598999023
},
{
"index": 1,
"relevance_score": -6.9131317138671875
},
{
"index": 2,
"relevance_score": -7.27742862701416
},
{
"index": 3,
"relevance_score": -9.136366844177246
},
{
"index": 4,
"relevance_score": -6.689809322357178
},
{
"index": 5,
"relevance_score": -1.3041083812713623
}
]
}
openai sdk版本调用参照如下链接
https://blog.csdn.net/liliang199/article/details/150111535
reference
---
llama.cpp docker 文档
https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md
bge-reranker-v2-m3-GGUF
https://huggingface.co/gpustack/bge-reranker-v2-m3-GGUF/tree/main
llama.cpp docker image
https://docker.aityp.com/image/ghcr.io/ggml-org/llama.cpp:server
第二弹 llama.cpp控制参数
https://blog.csdn.net/joedan0104/article/details/143034253
如何用OpenAI SDK调用Ollama LLM
https://blog.csdn.net/liliang199/article/details/150111535
centos7 安装docker + ragflow示例
https://blog.csdn.net/liliang199/article/details/150067330
RAG初筛方案实例验证-多种BM25方案
https://blog.csdn.net/liliang199/article/details/150604949
开源向量模型-精排bge reranker示例
https://blog.csdn.net/liliang199/article/details/150342360
在mac m1基于llama.cpp运行deepseek
https://blog.csdn.net/liliang199/article/details/149246699
量化版本的bge-reranker-v2-m3
https://ollama.com/qllama/bge-reranker-v2-m3
BGE FlagEmbedding
https://github.com/FlagOpen/FlagEmbedding
ollama支持Reranker重排序大模型啦
https://www.bilibili.com/opus/1091251147250860036
ollama reranker模型怎么被dify调用呢?
https://linux.do/t/topic/427704
Reranking documents with Ollama and Qwen3 Reranker model — in Go
https://medium.com/@rosgluk/reranking-documents-with-ollama-and-qwen3-reranker-model-in-go-6dc9c2fb5f0b
[LLM-Llama]在 MAC M1上体验Llama.cpp和通义千问Qwen 1.5-7B
https://juejin.cn/post/7371365854012293131