关于垂直领域大模型的探索和尝试

news2024/9/19 7:25:00

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。

针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。

总结链接如下:

《大模型面试宝典》(2024版) 发布!

《AIGC 面试宝典》圈粉无数!

喜欢本文记得收藏、关注、点赞。


知识点梳理

在这里插入图片描述

在过去一年多的实践工作中,我们团队围绕大模型在专业领域的应用做了一些尝试和探索。在此也把这两年的一些技术经验分享出来,希望跟大家一起交流和探讨。

喜欢大模型和算法的朋友,与我们一起讨论。

垂直领域大模型的特点

垂直领域大模型是指以通用大模型作为base model,再喂以特定领域或行业的领域知识,经过训练和优化的大语言模型。与通用语言模型相比,垂直领域大模型更专注于某个特定领域的知识和技能,具备更高的领域专业性和实用性。但因为一些特殊性(比如对于准确性的要求、知识库的频繁迭代等),也面临着不一样的挑战。

优势
  • 领域专业性:垂直领域大模型经过专门的训练,能够更好地理解和处理特定领域的知识、术语和上下文。

  • 高质量输出:由于在特定领域中进行了优化,垂直领域大模型在该领域的输出质量通常比通用大模型更高。

  • 特定任务效果更好:对于特定领域的任务,垂直领域大模型通常比通用大模型表现更好。

挑战
  • 准确性:消费者对于大模型的产出都有一定的容忍度,比如写个小说、画个图。大模型只要回答的不是太差,消费者对于结果都会一定程度的接受。但商家对于大模型产出的结果的准确性更加敏感。同时大模型的试错成本很高,如果一次结果不满意,商家可能就不愿意用第二次。

  • 知识库维护:商家经常频繁的更替、维护自己的知识库,并且知识库里面的素材多种多样,有流程图、ppt、pdf等。如何保证大模型高效、准确的识别不同知识库体系里面的相关知识,并为后续的RAG召回高质量的答案是需要面临和解决的挑战。

  • 适用性限制:垂类大模型在特定领域中的适应性较强,但在其他领域的表现可能相对较弱。但我们在实际使用中,又不能完全杜绝使用者会问一些非相关的问题,所以在实际的微调过程中,需要与一些通用数据集合并在一起进行微调。

挑战及解决方案

对齐增强

主要作用:在实际的答疑场景中,提问者并不会将问题进行过多的描述,所以我们借鉴了BPO的思路,通过优化提问提供思路使得大模型更好的理解问题和回答问题,可以有效的提升大模型的回答质量和准确度。(关于BPO的思路,可以详见文章“Black-Box Prompt Optimization: Aligning Large Language Models without Model Training”),BPO的大致过程:

Step1: 给某一个大模型A init instruction ,让A针对标准问题pair(Q1,A1)的问题,生成答案(Q1, A1’),因此每个标准问题对都变成了三元组(Q1, A1, A1’), 这边A1对应的是good answer, A1’ 对应的是bad answer;

Step2: 然后让GPT4对比good answer 和 bad answer 以及 问题Q 去优化 init instruction 生成 tuned instruction;

Step3: 训练一个seq2seq模型,输入是 问题Q ,输出是 tuned instruction;

Step4: 将这个seq2seq模型,放到大模型体系里面,所有的用户问题 都可以利用这个seq2seq生成对应的提示信息,然后将 提示信息 + 问题 放到大模型里面去进行回答。

通过使用BPO给我们回答准确率带来了1.8%的提升!

用了对齐增强后的效果:

原问题: 下班后帮我推荐个附近好吃的店?

通过对话增强优化后的提问: 今天是周五,路上比较拥挤。想吃点辣的,给我推荐下周围车程不超过10分钟有什么好吃的店?

备注:BPO这个方法在这届WAIC会议GLM专场中也有专门提到过,可见确实是好用。

Text2API

主要作为: 大模型作为一个Agent,学会使用现有工具去解决较复杂的逻辑问题是大模型区别于传统答疑类机器人的一个显著特点。我们有超过1000个需要高频调用的API,同时部分API还具备一定的相似性(比如查询商品信息、查询组套信息、查询货品信息等)。并且因为用户体验,查询api的时间通常要压缩在2s以内,如何高效和准确识别问题中的参数、和找到对应的api是我们需要去解决的2个问题。

最开始的时候我们使用langchain中自带的react框架进行text2api的构造,但发现几个问题:

  • langchain完全依赖底座模型,在chatgpt4上表现很好。但在一些中文模型上无法很好识别api的输入参数,经常出现幻觉导致乱编参数的现象。

  • langchain调用链路很长,导致我们在改写较复杂问题text2api的时候会有大量的工作。并且react框架因为没有penalty机制,如果出现调用错误的情况,只能人工检查然后通过增强prompt的方式进行修正。

后来我们尝试引进了Reflexion框架,(详见文章:Reflexion: Language Agents with Verbal Reinforcement Learning),相较于传统的Reactor,Reflexion提供了自我反思机制,然后在memory模块中保存之前的短期记忆和长期记忆,从而在之后的决策中,基于储存的记忆诱导大模型生成更好的答案。通过reflexion返回的api准确率提升了4%。值得一提的是,在实际使用前,我们还通过对齐增强模块对某个api的描述进行提示性的补充增强,从而解决部分相似api无法识别的问题。

RAG

RAG是经典、高效的垂类大模型应用方案,就是通过自有的垂域数据库检索相关信息,然后合并成为提示模板,喂给大模型生成最终的答案。但因为内容素材的多样性,例如下图是我们实际官方上门的某一个白皮书文档,里面包含了pdf式的合同、表格、系统界面截图和操作流程图。如何在文档注入的时候能够很好的解析这些素材,并且在做RAG时候能精准的返回对应的结果是我们核心要解决的问题。

如何解决复杂的素材: 以流程图为例,我们首先让chatgpt帮我们描述流程图里面对应的步骤,然后我们人工对近1000个chatgpt4生成的结果进行review,并最终放到我们的基座模型中进行sft + dpo。

文本结构重组织:

关于文本切分,目前只要有基于深度模型的切分和基于规则的切分。我们第一个版本用的是基于transformer的切分,但实际效果并不好,后面沿用了基于规则的切分,不过依然有一些经验可以和大家分享:

  • 如果将文本分割的结果直接作为embedding,需要特别注意chunk_size大小,太长了大模型容易忘掉中间的内容,太短了又不能包含有效的信息,从而导致关键信息而被忽略。

  • 不需要拘泥于原来的文章的行文结构来决定内容的前后关联度,我们引入了一个聚类的方法重新把内容通过「语义逻辑」重新组合,目前来看效果还不错。

  • 为了使LLM处理长文本,如果不能无限制的提升context的话,就只能掉过头来先把长文本「压缩」成短文本而尽量不要减少信息量。

  • 当聚类之后的 chunk 数量超过了预定的值之后,递归总结的过程还会在内部再次进行递归总结,一直优化到需要的长度。基于上面几步优化,文本信息被重新组织、优化成一棵树。

SFT

我们沉淀了几万条标注过的场景测评数据。这些测评数据是让我们选定基座模型、微调方法 和 后续一直迭代模型的一个重要指引。

在这些测评数据的基础上,我们测评了市面上几乎所有的开源基座模型,以及能看到的几乎全部微调方法,并利用embedding similarity、人工打分、chatgpt4打分这3个维度分别测试 “基座模型” 和 “基座模型+微调” 的表现情况,从而挑选适合我们场景的基座模型和微调方法。

在实际sft时候,我们还夹杂了部分公开数据集为了解决垂类大模型通用能力退化,适用性限制这一问题。公开数据集主要参考了有COIG-CQIA、alpaca-gpt4-data-cn等。

最近,我们也参考ORPO(详见文章:ORPO:Monolithic Preference Optimization without Reference Model),尝试将SFT + DPO的模式变成单纯在SFT中增加一个惩罚项来让大模型做更好的偏好对齐。通过实验对比,ORPO相较于之前的链路,整体回答效果提升了约5.2%。

结语

以上就是我们团队这段时间在垂类大模型的一些思考和实践。经过一年多的探索,虽然我们在不少的场景上都有突破和进展,但肉眼可见依然有很多领域尚未完善,未来有很多工作需要进一步展开,也非常欢迎大家一起交流大模型技术。

用通俗易懂的方式讲解系列

  • 重磅来袭!《大模型面试宝典》(2024版) 发布!

  • 重磅来袭!《大模型实战宝典》(2024版) 发布!

  • 用通俗易懂的方式讲解:不用再找了,这是大模型最全的面试题库

  • 用通俗易懂的方式讲解:这是我见过的最适合大模型小白的 PyTorch 中文课程

  • 用通俗易懂的方式讲解:一文讲透最热的大模型开发框架 LangChain

  • 用通俗易懂的方式讲解:基于 LangChain + ChatGLM搭建知识本地库

  • 用通俗易懂的方式讲解:基于大模型的知识问答系统全面总结

  • 用通俗易懂的方式讲解:ChatGLM3 基础模型多轮对话微调

  • 用通俗易懂的方式讲解:最火的大模型训练框架 DeepSpeed 详解来了

  • 用通俗易懂的方式讲解:这应该是最全的大模型训练与微调关键技术梳理

  • 用通俗易懂的方式讲解:Stable Diffusion 微调及推理优化实践指南

  • 用通俗易懂的方式讲解:大模型训练过程概述

  • 用通俗易懂的方式讲解:专补大模型短板的RAG

  • 用通俗易懂的方式讲解:大模型LLM Agent在 Text2SQL 应用上的实践

  • 用通俗易懂的方式讲解:大模型 LLM RAG在 Text2SQL 上的应用实践

  • 用通俗易懂的方式讲解:大模型微调方法总结

  • 用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了

  • 用通俗易懂的方式讲解:掌握大模型这些优化技术,优雅地进行大模型的训练和推理!

  • 用通俗易懂的方式讲解:九大最热门的开源大模型 Agent 框架来了

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

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

相关文章

SpringCloud—08—高级之SpringCloud Alibaba中—Sentinel

文章目录 提前预知18、Sentinel是什么?18.1、sentinel是什么?18.2、Sentinel下载安装运行18.3、Sentinel初始化监控18.4、Sentinel流控规则1、流控规则基本介绍2、流控规则之-QPS-直接-快速失败3、流控规则之-线程数-直接失败4、流控规则之-QPS-关联-快速…

实战篇(十):使用Processing创建可爱花朵:实现随机位置、大小和颜色的花朵

使用Processing创建可爱花朵 0.效果预览1. 引言2. 设置Processing环境3. 创建花朵类4. 实现花瓣绘制5. 绘制可爱的笑脸6. 鼠标点击生成花朵7. 完整代码8. 总结与扩展0.效果预览 在本教程中,我们将使用Processing编程语言来创建一个可爱的花朵生成器。通过封装花朵为一个类,并…

git教程, 命令行版

前言 git就是代码版本管理系统,很简单的作用就是每一次commit之后,修改文件都是跟上一次commit的仓库文件做对比,也可以调出历史的文件查看某次commit修改了什么东西 0环境准备: 安装git, 百度一下,然后打开cmd&…

教室管理系统的开发与实现(Java+MySQL)

引言 教室管理系统是学校和培训机构日常运营中不可或缺的工具。本文将介绍如何使用Java、Swing GUI、MySQL和JDBC开发一个简单而有效的教室管理系统,并涵盖系统的登录认证、教室管理、查询、启用、暂停和排课管理功能。 技术栈介绍 Java:作为主要编程…

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…

base SAS programming学习笔记(read raw files3)

使用LIST INPUT 来读入位置不固定的外部文件&#xff0c;如下所示&#xff1a; 1.LIST input格式 INPUT variable <$> :$符合表示字符&#xff0c;variable是读入的变量名&#xff1b;默认的数值和字符长度为8&#xff1b;可以使用length 语句为字符变量设置长度&#xf…

学习测试10-1自动化 python基础

下载python 要配置环境变量 进入Python的官方下载页面 http://www.python.org/download/安装PyCharm工具&#xff0c;网上可以下载&#xff0c;很多资源&#xff0c;也有免安装的版本&#xff0c;在网上找激活码 链接: https://pan.baidu.com/s/1Y6S_n3KbnjOdE9EDZ5nixw?pwdd…

使用Windows Linux 子系统安装 Tensorflow,并使用GPU环境

在Microsoft Store商店安装Ubuntu 20.04 使用 nvidia-smi 命令查看GPU信息&#xff0c;查看支持的CUDA版本&#xff0c;这里最高支持11.7 安装cuda工具集 进入官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer&#xff0c;现在对应版本&#xff0c;点击 配置平台&…

走进数组的奇妙之旅(1)

引言&#xff1a; 在前几篇文章中&#xff0c;我们深入探讨了函数的奥秘。在讲述函数知识的过程中&#xff0c;我们邂逅了一个新的概念&#xff0c;你或许还记得在演示 strcpy函数时&#xff0c;出现的这行代码&#xff1a;char1[20]{0};。当时&#xff0c;你是否感到好奇&…

前端组件化实践:Vue自定义加载Loading组件的设计与实现

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的重要方法。本文介绍了前端Vue自定义加载Loading组件的设计思路与实现过程&#xff0c;该组件通过设置gif动画实现加载效果&#xff0c;可广泛应用于页面请求加载场景。通过该组件的实践&…

银行业务知识全篇(财务知识、金融业务知识)

第一部分 零售业务 1.1 储蓄业务 4 1.1.1 普通活期储蓄(本外币) 4 1.1.2 定期储蓄(本外币) 5 1.1.3 活期一本通 9 1.1.4 定期一本通 10 1.1.5 电话银行 11 1.1.6 个人支票 11 1.1.7 通信存款 13 1.1.8 其他业务规…

解决AI训练中的“Convergence Warning”报错:提高模型稳定性 ️‍♂️

解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️ 解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️摘要引言“Convergence Warning”报错的成因分析 &#x1f914;1. 学习率设置不当2…

昇思学习打卡-23-生成式/CycleGAN图像风格迁移互换

文章目录 模型介绍网络结构数据集可视化网络的其他细节模型推理 模型介绍 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 该模型一个重要应用领域是域迁移(Do…

VMware中Ubuntu磁盘空间的清理

最近发现Ubuntu占用空间过大&#xff0c;在网上找了一些方法&#xff0c;在这里总结一下。 1.删除快照 把不需要的快照删除&#xff0c;但要注意删除快照可能会影响到后续的快照链。每个快照依赖于前面的快照。如果删除一个中间快照&#xff0c;虚拟机可能无法找到完整的差异…

谷粒商城实战笔记-36-前端基础-Vue-介绍HelloWorld

文章目录 一&#xff0c;MVVM 思想直接操作DOM的示例使用Vue和MVVM的示例MVVM与DOM操作的主要区别 二&#xff0c;Vue 简介三&#xff0c;第一个Vue项目1 新建项目2 安装依赖3 使用Vue 这一节的主要内容是演示Vue的简单使用。 一&#xff0c;MVVM 思想 M&#xff1a;即 Model…

基础vrrp(虚拟路由冗余协议)

一、VRRP 虚拟路由冗余协议 比如交换机上联两个路由器&#xff0c;由两个路由虚拟出一台设备设置终端设备的网关地址&#xff0c;两台物理路由的关系是主从关系&#xff0c;可以设置自动抢占。终端设备的网关是虚拟设备的ip地址&#xff0c;这样&#xff0c;如果有一台路由设备…

c++模板初识

目录 一、 泛型编程 二、 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 1. 隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2.显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 5.模板参数的…

万物互联时代,手机丢了我们该怎么办?

万物互联时代&#xff0c;我们的手机丢了该怎么办&#xff1f;全身家当都在一部手机里&#xff0c;这个时候我们更要冷静&#xff0c;然后先尝试着打电话、发短信、定位找手机。 如果实在找不到的话&#xff0c;先借个电话号码把以下四件事给做好&#xff1a; ①挂失手机号&am…

《昇思25天学习打卡营第21天|Pix2Pix实现图像转换》

Pix2Pix 是一种图像转换模型&#xff0c;使用条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks&#xff0c;cGANs&#xff09;实现图像到图像的转换。它主要由生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;…

【UE5.1】NPC人工智能——04 NPC巡逻

效果 步骤 一、准备行为树和黑板 1. 对我们之前创建的AI控制器创建一个子蓝图类 这里命名为“BP_NPC_AIController_Lion”&#xff0c;表示专门用于控制狮子的AI控制器 2. 打开狮子蓝图“Character_Lion” 在类默认值中将“AI控制器类”修改为“BP_NPC_AIController_Lion” 3…