llama_index微调BGE模型

news2024/10/6 4:12:42

微调模型是为了让模型在特殊领域表现良好,帮助其学习到专业术语等。

本文采用llama_index框架微调BGE模型,跑通整个流程,并学习模型微调的方法。

一、环境准备

Linux环境,GPU L20 48G,Python3.8.10。
pip该库即可。

二、数据准备

该框架实现了读取各种类型的文件,给的示例就是pdf。
在这里插入图片描述
因此准备了一些网络舆情相关的论文pdf,选择70%作为训练数据,剩下作为验证数据。都放在data文件夹下。
在这里插入图片描述

三、微调脚本编写

1.读取数据

使用SimpleDirectoryReader类读取文件。
读取到文本后,使用SentenceSplitter将一个很长的文档切分为若干块。
每一块设置的有token数和重叠token数,在
在这里插入图片描述可以自选,默认的chunk_size大小没找到在哪,重叠的是200.
在这里插入图片描述以上是库的源码实现,我们调用是很简单的。VAL_CORPUS_FPATH 我一开始以为是在load_corpus里的某个类自动保存,结果根本没有。所以自己写了导出为json的函数,是将其text数据保存了。

# 源文件 列表
my_list = [i for i in os.listdir('project_2/data') if i.endswith('pdf')]
# 随机抽取70%的数据,作为训练集
random.shuffle(my_list) # 打乱
num_to_sample = int(len(my_list) * 0.7) # 阈值
# 构造本地文件路径
training_set = [f"project_2/data/{
     file}" for file in my_list[:num_to_sample]] # 训练集文件list
validation_set = [f"project_2/data/{
     file}" for file in my_list[num_to_sample:]] # 验证集文件list

# 最终形成的训练和验证语料
TRAIN_CORPUS_FPATH = 'project_2/data/corpus/train_corpus.json'
VAL_CORPUS_FPATH = 'project_2/data/corpus/val_corpus.json'

# 读取pdf数据,节点
def load_corpus(files, verbose=False):
    if verbose:
        print(f"正在加载文件 {
     files}")

    reader = SimpleDirectoryReader(input_files=files)
    docs = reader.load_data()
    if verbose:
        print(f"已加载 {
     len(docs)} 个文档")

    parser = SentenceSplitter()
    nodes = parser.get_nodes_from_documents(docs, show_progress=verbose)

    if verbose:
        print(f"已解析 {
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1638231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI项目二十一:视频动态手势识别

若该文为原创文章,转载请注明原文出处。 一、简介 人工智能的发展日新月异,也深刻的影响到人机交互领域的发展。手势动作作为一种自然、快捷的交互方式,在智能驾驶、虚拟现实等领域有着广泛的应用。手势识别的任务是,当操作者做出…

html--剑雨

<!doctype html> <html> <head> <meta charset"utf-8"> <title>css3剑雨-jq22.com</title> <script src"http://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style> .sword:before, .sword:…

Java_从入门到JavaEE_08

一、Eclipse开发工具的介绍 Eclipse工具简绍 Eclipse 是著名的跨平台的自由集成开发环境&#xff08;IDE&#xff09;。最初主要用来 Java 语言开发&#xff0c;但是目前亦有人通过插件使其作为其他计算机语言比如 C 和 Python 的开发工具。 下载与安装 下载&#xff1a; Ecli…

spring boot3多模块项目工程搭建-上(团队开发模板)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 多模块结构优缺点 模块介绍 Common 模块&#xff1a; API 模块&#xff1a; Web 模块&#xff1a; Service 模块&#xff1a; DAO 模块&#xff1a; 搭建步骤 1.创建 父…

Java面试八股之强软弱虚引用的概念及区别

Java中强软弱虚引用的概念及区别 在Java中&#xff0c;强引用、软引用、弱引用和虚引用是四种不同类型的引用&#xff0c;它们在对象生命周期管理、垃圾收集&#xff08;Garbage Collection, GC&#xff09;以及内存管理方面有着不同的行为和用途。以下是它们的概念和主要区别…

脑筋急转弯在线问答

页面效果 点击“显示答案”按钮&#xff0c;显示参考答案。 页面代码 <% layout(/layouts/default.html, {title: 脑筋急转弯管理, libs: [dataGrid]}){ %> <div class"main-content"><div class"box box-main"><div class"bo…

3.自动驾驶-局部路径规划

1. 规划planning 2. 局部路径规划模块实现-模块外围&#xff1a;输入 3. 局部路径规划模块实现模块外围:输出 4. 控制control 5. 系统分类 6 系统分类

推开通用人工智能大门,多模态大模型是新一代人工智能技术范式

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

如何理解Go语言的逃逸分析(escape analysis)?

文章目录 什么是逃逸分析&#xff1f;逃逸的原因逃逸的影响 如何查看逃逸分析的结果&#xff1f;解决方案和示例代码减少逃逸的策略示例代码 在Go语言中&#xff0c;逃逸分析&#xff08;escape analysis&#xff09;是一个编译器优化过程&#xff0c;它决定了哪些变量会被分配…

38-3 Web应用防火墙 - 安装配置WAF

首先需要安装Centos 7 虚拟机:Centos7超详细安装教程_centos7安装教程-CSDN博客 安装配置WAF 在桌面环境中,右键点击打开终端,首先执行以下步骤: 1)安装必要的工具: 输入命令: sudo su yum install -y wget epel-release 2)第二步,安装依赖工具,输入以下命令: y…

使用Git把写好的项目放到github上

把之前的文章差缺补漏了一下&#xff0c;发现少一个TUserController文件&#xff0c;然后加上了。 以及发现前后端交互时的跨域问题需要处理。 在Controller文件里加入注释 CrossOrigin(origins "*")即可。 不然数据在Vue里显示不出来。 ** 壹 首先先把前端项目 de…

【深耕 Python】Data Science with Python 数据科学(17)Scikit-learn机器学习(二)

写在前面 关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 往期数据科学博文一览&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;2&…

c#word文档:1.创建空白Word文档及保存/2.添加页内容...

---创建空白Word文档 --- &#xff08;1&#xff09;创建一个名为OfficeOperator的类库项目。引用操作Word的.NET类库 &#xff08;2&#xff09;定义用于操作Word的类WordOperator1。添加引用Microsoft.Office.Interop.Word命名空间。 &#xff08;3&#xff09;为WordOper…

劳动节不劳动!陕西程序员手把手带你度假,领略祖国大好河山!

文章大纲 5 天 4 晚 陕西小环线错峰 放松度假遛娃天师堂石门栈道关山牧场草原九龙山温泉扶风温泉 想起一些旧事&#xff0c; 那时候搞IT比现在欢乐很多参考文献 秉承劳动节不劳动的一贯做法&#xff0c;节前我就带娃出来了&#xff0c;想着劳动节当天就能返回西安&#xff0c;不…

礼赞劳动节,致敬劳动者。节日随想:疾笔耕耘也是一种劳动方式。

马克思也快诞辰了206年了&#xff0c;恩格斯领导的第二国际通过的决议节日也迎来了134岁的生日了&#xff0c;我也继续在劳动的路上。 五月是值得纪念的日子&#xff0c;作为一名无上光荣的分子&#xff0c;无比仰慕崇拜的两位先驱前辈大胡子&#xff0c;其一 生于斯&#xff0…

数据可视化宝典:Matplotlib图形实战

在数据分析领域&#xff0c;图形化展示数据是非常重要的环节。Python中的matplotlib库是绘制各类图形的强大工具。本文将介绍如何使用matplotlib绘制折线图、直方图、饼图、散点图和柱状图等数据分析中常见的图形&#xff0c;并附上相应的代码示例&#xff0c;可以当初matplotl…

mac如何打开exe文件?如何mac运行exe文件 如何在Mac上打开/修复/恢复DMG文件

在macOS系统中&#xff0c;无法直接运行Windows系统中的.exe文件&#xff0c;因为macOS和Windows使用的是不同的操作系统。然而&#xff0c;有时我们仍然需要运行.exe文件&#xff0c;比如某些软件只有Windows版本&#xff0c;或者我们需要在macOS系统中运行Windows程序。 虽然…

Python中的观察者模式及其应用

观察者模式是设计模式之一&#xff0c;实现一对多依赖&#xff0c;当主题状态变化时通知所有观察者更新。在Python中&#xff0c;通过自定义接口或内置模块实现观察者模式&#xff0c;可提高程序灵活性和扩展性&#xff0c;尤其适用于状态变化时触发操作的场景&#xff0c;如事…

JavaSE——算法(2/2):查找算法-二分查找(前言、详细图解、代码部分)

目录 前言 详细图解 代码部分 前言 查找算法中&#xff0c;首要讨论的是基本查找&#xff0c;也就是顺序查找&#xff0c;在数据量特别大的时候&#xff0c;基本查找这种从前往后挨个找的形式&#xff0c;性能是很差的&#xff01; 所以为了提高一些性能&#xff0c;产生了…

MyBatis中的#{} 和 ${}

目录 #{} 和 ${} 预编译 SQL 和 即时 SQL SQL注入 ${}的使用 #{} 和 ${}的使用 MyBatis参数赋值有两种方式&#xff0c;在上一篇文章中&#xff0c;一直使用 #{} 进行赋值&#xff0c;接下来&#xff0c;我们来使用 ${} 进行赋值&#xff0c;并观察 #{} 和 ${} 的区别 使用…