当前位置: 首页 > backend >正文

基于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

http://www.xdnf.cn/news/18516.html

相关文章:

  • 【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
  • 避开MES实施的“坑”:详解需求、开发、上线决胜点
  • openharmony之启动恢复子系统详解
  • Doxygen是什么?
  • Neural Network with Softmax output|神经网络的Softmax输出
  • 深入剖析Spring Boot应用启动全流程
  • 第七章 利用Direct3D绘制几何体
  • flink常见问题之非法配置异常
  • Hive Metastore和Hiveserver2启停脚本
  • jetson ubuntu 打不开 firefox和chromium浏览器
  • Python 实战:内网渗透中的信息收集自动化脚本(2)
  • 嵌入式LINUX——————网络TCP
  • Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【六、架构全景图与最佳实践】
  • ArcGIS Pro 安装路径避坑指南:从崩溃根源到规范实操(附问题修复方案)
  • 在 CentOS 7 上搭建 OpenTenBase 集群:从源码到生产环境的全流程指南
  • SpringMVC相关自动配置
  • 第四十三天(JavaEE应用ORM框架SQL预编译JDBCMyBatisHibernateMaven)
  • 算法训练营day60 图论⑩ Bellman_ford 队列优化算法、判断负权回路、单源有限最短路
  • Vue 3 useModel vs defineModel:选择正确的双向绑定方案
  • [特殊字符] 在 Windows 新电脑上配置 GitHub SSH 的完整记录(含坑点与解决方案)
  • 简单留插槽的方法
  • 生成一个竖直放置的div,宽度是350px,上面是标题固定高度50px,下面是自适应高度的div,且有滚动条
  • 航空复杂壳体零件深孔检测方法 - 激光频率梳 3D 轮廓检测
  • FFMPEG相关解密,打水印,合并,推流,
  • 鸿蒙中Snapshot分析
  • Vue3+ElementPlus倒计时示例
  • 应用服务器和数据库服务器的区别
  • 机器学习案例——预测矿物类型(数据处理部分)
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk
  • `sudo apt update` 总是失败