美文网首页
动手学习RAG:大模型重排模型 bge-reranker-v2-

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

作者: YueTan | 来源:发表于2024-09-17 11:07 被阅读0次

[图片上传失败...(image-637c98-1726628869402)]

1. 环境准备

pip install transformers
pip install open-retrievals

2. 使用大模型做重排

from retrievals import LLMRanker

model_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)

[图片上传失败...(image-14dabb-1726628869402)]

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

[图片上传失败...(image-2a5c28-1726628869402)]

4. 评测

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

微调前的指标:
[图片上传失败...(image-44289e-1726628869402)]

微调后的指标:

[图片上传失败...(image-9eaaa9-1726628869402)]

{
  "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

相关文章

  • 多线程下指令重排与DCL单列模式

    指令重排简述 1、JMM内存模型三大特性包括原子性,可见性,有序性。详细请看关于Java内存模型的三大特性 2、指...

  • Java内存模型简析:重排序/happends-before/内

    目录 从CPU到Java内存模型1.1 从CPU内存模型说起1.2 Java内存模型的引入 优化带来的重排序2.1...

  • 并发编程的思维导图和脉络

    如何学习并发? 1.并发理论:并发编程要解决的三大问题;介绍可见性与有序性问题的根源重排序;学习Java内存模型(...

  • Java多线程实现基础(二)

    Java内存模型 基本概念 指令重排 jvm 指令执行

  • 情感分析

    步骤: 数据与输出重排打散 bag-of-words词袋模型词袋模型 n-gram模型将文本里面的内容按照字节进行...

  • 循环神经网络知识学习笔记

    教材选用《动手学深度学习》,李沐等著; 语言模型 语⾔模型(language model)是⾃然语⾔处理的重要技术...

  • 优化算法知识学习笔记

    教材选用《动手学深度学习》,李沐等著; 在训练模型时,我们会使⽤优化算法不断迭代模型参数以降低模型损失函数的值。当...

  • java内存模型

    《深入理解java内存模型》-笔记 java各线程共享使用主内存,通过共享内存通信 重排序重排序.png编译器重排...

  • 学习方法

    有个测试学习风格的分类模型叫做VARK,这个分类模型把学习风格分为四种:视觉、听觉、读写和动手实践。那么这...

  • JVM内存模型、指令重排、内存屏障概念解析

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时...

网友评论

      本文标题:动手学习RAG:大模型重排模型 bge-reranker-v2-

      本文链接:https://www.haomeiwen.com/subject/adrgljtx.html