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

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

  • 动手学习RAG: 向量模型
  • 动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习
  • 动手学习RAG:rerank模型微调实践 bge-reranker-v2-m3
  • 动手学习RAG:迟交互模型colbert微调实践 bge-m3
  • 动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct
  • 动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

在这里插入图片描述

1. 环境准备

pip install transformers
pip install open-retrievals
  • 注意安装时是pip install open-retrievals,但调用时只需要import retrievals
  • 欢迎关注最新的更新 https://github.com/LongxingTan/open-retrievals

2. 使用大模型做重排

from retrievals import LLMRankermodel_name = 'BAAI/bge-reranker-v2-gemma'
model = LLMRanker.from_pretrained(model_name,causal_lm=True,use_fp16=True,)score = model.compute_score(['query', 'passage'])
print(score)scores = model.compute_score([['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']])
print(scores)

请添加图片描述

3. 微调

MODEL_NAME='BAAI/bge-reranker-v2-gemma'
TRAIN_DATA="/root/kag101/src/open-retrievals/t2/t2_ranking.jsonl"
OUTPUT_DIR="/root/kag101/src/open-retrievals/t2/ft_out"torchrun --nproc_per_node 1 \-m retrievals.pipelines.rerank \--output_dir ${OUTPUT_DIR} \--overwrite_output_dir \--model_name_or_path $MODEL_NAME \--model_type llm \--causal_lm True \--use_lora True \--data_name_or_path $TRAIN_DATA \--task_prompt "Given a query A and a passage B, determine whether the passage contains an answer to the query by providing a prediction of either 'Yes' or 'No'." \--query_instruction "A: " \--document_instruction 'B: ' \--positive_key positive \--negative_key negative \--learning_rate 2e-4 \--num_train_epochs 3 \--per_device_train_batch_size 4 \--gradient_accumulation_steps 16 \--dataloader_drop_last True \--max_len 256 \--train_group_size 4 \--logging_steps 10 \--save_steps 20000 \--save_total_limit 1 \--bf16

请添加图片描述

4. 评测

在C-MTEB中进行评测。微调前保留10%的数据集作为测试集验证

微调前的指标:
请添加图片描述

微调后的指标:

请添加图片描述

{"dataset_revision": null,"mteb_dataset_name": "CustomReranking","mteb_version": "1.1.1","test": {"evaluation_time": 77.35,"map": 0.7057362287508586,"mrr": 0.8166538440773136}
}

微调后map从0.637上升至0.706,mrr从0.734上升至0.816

相关文章:

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG:rerank模型微调实践 bge-reranker-v2-m3动手学习RAG:迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…...

蓝桥杯2024省C

P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏,他有 7385137888721个 22的方块和 10470245 个 11 的方块,他需要从中挑出一些来拼出一个正方形,比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形,用…...

C++:内部类,匿名对象,操作符new与delete

一.内部类 1.如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。 2.内部类默认是外部类的友元类。…...

【数据结构】排序算法---计数排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组…...

mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换

获取当前日期和时间 NOW():返回当前的日期和时间。CURDATE():返回当前的日期。CURTIME():返回当前的时间。 SELECT NOW(), CURDATE(), CURTIME(); 日期和时间格式化 DATE_FORMAT(date, format):根据指定的格式字符串格式化日期…...

Android开发高频面试题之——kotlin篇

Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会…...

8--SpringBoot原理分析、注解-详解(面试高频提问点)

目录 SpringBootApplication 1.元注解 --->元注解 Target Retention Documented Inherited 2.SpringBootConfiguration Configuration Component Indexed 3.EnableAutoConfiguration(自动配置核心注解) 4.ComponentScan Conditional Co…...

语言的枚举

不同语言的枚举 C/C枚举本质是整型,在Java中是对象,而非基本类型,可通过instanceof Object判断是否是对象类型。C#与Java不同,枚举是值类型。C语言更纯粹,枚举绝对当成整数,可以对枚举变量用整数赋值&…...

C# Redis 框架开发技术详解

引言 Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时分析等场景。在 C# 中,有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库: StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…...

Rust:Result 和 Error

在 Rust 编程语言中,错误处理是一个核心部分,用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质(trait)来处理错误。 Result 枚举 Result 是一个泛型枚举,用于表示一个操作可能成功或失败。它有两个…...

Python基础(八)——MySql数据库

一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储,借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载:https://www.mysql.com/ 查看是否安装配置成功: 安装DBeaver用于Mysql数据库图形化 安装:…...

统一网关--gateway(仅供自己参考)

1、网关的概念: 2、网关的功能: (1):身份认证和权限校验 (2):服务路由(具体的业务路由到具体的服务),负载均衡(多台服务的话&#xff…...

【Leetcode152】分割回文串(回溯 | 递归)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 具体例子和步骤:假设 s "aab",步骤如下: 初始状态: s "aab"path []res [] 第一层递归(外层循环): path []检…...

基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…...

深入探究 Flask 的应用和请求上下文

目标 读完本文后,您应该能够解释: 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时,处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…...

C++学习笔记(30)

二十三、随机数 在实际开发中,经常用到随机数,例如:纸牌的游戏洗牌和发牌、生成测试数据等。 函数原型: void srand(unsigned int seed); // 初始化随机数生成器(播种子)。 int rand(); // 获一个取随机数。…...

Rust GUI框架 tauri V2 项目创建

文章目录 Tauri 2.0创建应用文档移动应用开发 Android 前置要求移动应用开发 iOS 前置要求参考资料 Tauri 2.0 Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架…...

C++继承(上)

1.继承的概念 继承是一个类继承另外一个类&#xff0c;称继承的类为子类/派生类&#xff0c;被继承的类称为父类/基类。 比如下面两个类&#xff0c;Student和Person&#xff0c;Student称为子类&#xff0c;Person称为父类。 #include<iostream> using namespace std…...

在 Vim 中打开文件并快速查询某个字符

在 Vim 中打开文件并快速查询某个字符&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Vim 并加载文件&#xff1a; vim your_file.txt将 your_file.txt 替换为你要查询的文件名。 进入普通模式&#xff08;如果你还在插入模式或其他模式下&#xff09;&#xff1a; Es…...

oracle 条件取反

在Oracle数据库中&#xff0c;条件取反主要通过逻辑运算符NOT来实现。NOT是一个单目运算符&#xff0c;用于对指定的条件表达式取反。当条件表达式为真&#xff08;True&#xff09;时&#xff0c;NOT运算符的结果就是假&#xff08;False&#xff09;&#xff1b;反之&#xf…...

越擎科技发布机器人离线编程软件应用白皮书,阐述机器人装配工艺规划、离线编程与虚拟调试方案的原理及优势

摘要&#xff1a;越擎科技针对机器人复杂产品装配的应用场景&#xff0c;打造全国产的机器人离线编程软件iRobotCAM&#xff0c;可以快速的提取装配约束关系并进行装配工艺规划&#xff0c;并编写机器人程序及快速仿真&#xff0c;提升装配过程的精度及编程效率。 根据艾瑞咨询…...

OpCore-Simplify:黑苹果配置的终极简化方案——从复杂到简单的革命性转变

OpCore-Simplify&#xff1a;黑苹果配置的终极简化方案——从复杂到简单的革命性转变 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经因为黑…...

Qwen2.5-VL-7B-Instruct本地部署指南:ClawdBot实现

Qwen2.5-VL-7B-Instruct本地部署指南&#xff1a;ClawdBot实现 1. 引言 想不想在本地电脑上搭建一个能看懂图片、理解视频的AI助手&#xff1f;今天咱们就来聊聊怎么把Qwen2.5-VL-7B-Instruct这个强大的视觉语言模型部署到本地环境&#xff0c;并且集成到ClawdBot中。 这个模…...

SpringBoot+Tess4j:轻松实现OCR功能

一、引言二、功能演示三、功能实现1. 描述2. 编码实现四、源码五、结束语一、引言你是否曾遇到过这样的情况&#xff1a;看到一段有用的文本&#xff0c;想要快速复制下来&#xff0c;却只能眼巴巴地盯着屏幕&#xff0c;手动输入&#xff1f;其实&#xff0c;Java 也可以轻松实…...

告别C盘爆满!手把手教你配置Miniforge,让所有虚拟环境乖乖待在D盘

彻底解放C盘空间&#xff1a;Miniforge虚拟环境全迁移至D盘实战指南 每次打开资源管理器看到C盘飘红的存储条&#xff0c;心跳都会漏半拍——这大概是Windows开发者最熟悉的焦虑场景。特别是当你发现conda创建的虚拟环境正悄无声息吞噬着宝贵的系统盘空间时&#xff0c;那种无…...

用Asian Beauty Z-Image Turbo做古风头像:简单三步生成独一无二的东方美学作品

用Asian Beauty Z-Image Turbo做古风头像&#xff1a;简单三步生成独一无二的东方美学作品 想象一下&#xff0c;你的社交媒体头像不再是一张普通的自拍或卡通形象&#xff0c;而是一幅充满东方韵味的古风艺术作品——可能是唐代仕女的温婉&#xff0c;宋代文人的儒雅&#xf…...

3个核心技巧:Element Plus效率提升与性能优化指南

3个核心技巧&#xff1a;Element Plus效率提升与性能优化指南 【免费下载链接】element-plus &#x1f389; A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus 副标题&#xff1a;面向初中级开发者的Element…...

GodotPckTool 终极指南:如何在命令行中高效管理Godot游戏资源包

GodotPckTool 终极指南&#xff1a;如何在命令行中高效管理Godot游戏资源包 【免费下载链接】GodotPckTool Standalone tool for extracting and creating Godot .pck files 项目地址: https://gitcode.com/gh_mirrors/go/GodotPckTool 你是否曾经需要在不启动Godot引擎…...

Matlab/Simulink仿真BLDC电机:避开转速闭环控制的5个常见坑

BLDC电机转速闭环仿真避坑指南&#xff1a;从参数配置到结果验证的完整解决方案 在电机控制领域&#xff0c;BLDC&#xff08;无刷直流电机&#xff09;因其高效率、长寿命和低维护成本等优势&#xff0c;已成为工业自动化、电动汽车和消费电子等领域的主流选择。Matlab/Simul…...

XDMA驱动内存读写测试指南:从reg_rw工具使用到AXI4时序分析

XDMA驱动内存读写测试指南&#xff1a;从reg_rw工具使用到AXI4时序分析 在FPGA与主机间的高速数据交互场景中&#xff0c;XDMA&#xff08;Xilinx DMA&#xff09;作为PCIe协议栈的核心引擎&#xff0c;其内存读写性能直接决定了系统整体吞吐量。本文将深入剖析reg_rw工具的底层…...