小周带你正确理解Prompt-engineering,RAG,fine-tuning工程化的地位和意义

有人会说:"小周,几天不见这么拉了,现在别说算法了,连code都不讲了,整上方法论了。" 

      我并没有拉!而且方法论很重要,尤其工程化的时候,你总得知道每种技术到底适合干啥,其实主要是现实中,我在项目里发现大家对这块其实并不是分的很清楚。

      所以我来给大家捋一捋,因为这毕竟直接取决于你设计的解决方案是否能真正解决问题

图片

       如上图所示,OpenAI把对于优化LLM返回结果分为两个方向,一个方向是横坐标系的对LLM 模型本身的优化,另一个是对你提供的Context的优化

  •       在对LLM本身的优化上没啥可弄的,最后就只能走到Fine-tuning这一条路

  •      在对本身的Context进行优化的方式,我们一般起手式是先prompt-engineering

  •     prompt-engineering不好使了,我们会借助RAG来实现额外的能力和知识

      我们先来把几个概念再捋一下

prompt-engineering

图片

      上图就是一个不清晰的prompt的典型,没有清晰的system message定义,得到的回应也是特别的随机,并且没有清晰的format

图片

      优化上面的prompt,从几个维度入手:

  • 首先肯定是要指令变得更清晰

  • 其次用COT的方式提问让它拆解复杂的任务

  • 顺便告诉LLM你要什么样输出的回答格式

图片

      再进阶就要上few_shot了,告诉LLM,你想要的答案是长啥样的,甚至风格

      我上面说的看起来好像都很日常,但是你真的了解prompt-engineering吗?

      Prompt-engineering的一个最重要的隐藏功能就是超级测试工具,当你的项目涉及到非常复杂的推理场景,尤其是多步推理能力的时候,COT就是你最好的测试工具

      Tips: 在我们给project挑选模型底座的时候,除了去看一些所谓的测试结果以外,很大一部分工作时要做COT+fewshot的测试例,尤其是COT,比如写50到100个COT的问题,观察list里的LLMs,究竟谁的回答更靠谱,更有逻辑,尤其是复杂推理场景,相信我,这一步都过不去的LLM,你就没有必要再考虑后面的RAG和FT了(这篇文章看到这,其实读者就你大赚特赚了,省了你多少精力!)

      继续说,prompt-engineer它调用毕竟还是基座模型的能力,你要想让模型输出一些训练数据中没有的知识,甚至都不在互联网上可查询的知识,或者这个模型的所有说话方式都不适合你的应用场景,那你怎么办?

      一般这个时候大家都会说我们可以fine-tuning也可以RAG,这两个方法都能解决这些问题,如果你也是相同的想法,坦白说看这篇文章你又赚到了,这俩不但不是同一个东西,解决的问题也不一样

图片

      诚然,我们在很多时候都会认为像上图一样,RAG也好,FT也好都能让LLM产生新的记忆,我们可以把RAG认为是短期记忆,FT产生的是长期记忆,某种程度看起来没错。

      这里需要纠正的是FT产生的,我们不能认为它是长期记忆,微调无法让LLM学习知识,而是学习了行为模式,或者叫学习了结构,这块如果要讲理论,比较复杂,拆开讲要讲3篇, 后面看看有时间可以开个新坑,大家目前简单理解这几句话即可

       我们来逐一解决上文提到的问题,无非是两个:

  • 新知识

  • 表达方式

     

       RAG

       新知识你就用RAG来做就可以了(当然也可以拿agent来做,我这里不讲agent)

        评估一个RAG系统的好坏,我们一般分为4大维度

  • 第一个 真实性

  • 第二个 精确性

  • 第三个 回答的关联性

  • 第四个 召回率

图片

      有读者说,你这几个指标看着都还行,像那么回事,那我们怎么来做量化呢?下面链接,拿走不谢

图片

explodinggradients/ragas: Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines (github.com)

图片

       通过regas这个项目调用openai就能自动为你的RAG系统这几个参数来打分,根据分数高低来调整你的RAG系统

       另外可能有读者说以前做过RAG,不就是拿向量数据库来做匹配吗!但是这个其实已经很落伍了,比较先进的架构是同时拿多个RAG方式来提取多个RAG答案,一起汇总,然后经过re-ranking系统来排出top_k, 最后跟着prompt一起给到LLM

      可选的RAG方式除了向量库做余弦匹配以外,也流行直接拿text-to-sql,或者直接拿标量搜索去取企业里的准确数据

      你加的越多,就越准确,但是你整体LLM流程就越慢

图片

图片

,需要balance

      另外在向量库的选择和document切分这块能玩的花活儿也很多,某种程度上决定了你RAG系统的上限(留个坑,以后讲)

图片

图片

如上图所示,RAG答案丰富度,对模型的test 效果有一定的正相关关系

图片

      RAG上加的feature越多,也和你RAG系统的准确度成正相关

      Fine-tuning

      下图把Fine-tuning能干啥,不擅长干啥写的已经很清楚了,所以读者们今后别再假设通过FT能给你模型增加新知识了,这条路是走不通的(当然可能也有人是把追加预训练和FT给搞混了,这俩可不是一个东西)

图片

      相反

  • 如果你要强化你预训练里面的知识的能力,比如专门针对代码的FT

  • 如果你要做情感陪伴的时候,想让模型以某种不好描述的态度对你说话的时候

  • 如果你想让你模型能读懂特别复杂的指令,你又不想写很复杂的prompt的时候

    那么选Fine-tuning,没错的

      下面这两幅图很好的举例了FT前后的output对比

图片

     

图片

     从某种意义上说,对特定任务的Fine-tuning会给小参数模型以超过大参数模型的能力,如下图所举的例子

     Canva(做设计的公司)通过对GPT-3.5进行 FT,能得到超过GPT-4的能力

    

图片

      prompt-engineering,RAG,fine-tuning,这几个东西各自有各自的用途和场景,也能混用,但是不能平行着用,读完了我这篇文章,相信读者们应该很好的理解了他们的各司其职,最好的方法肯定还是混着用

      比如Scale AI他们就给出过几种能力叠加以后的准确率相关性

图片

本文完

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创建你的第一个Vue项目(小白专享版本)

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

TestNG基础教程

TestNG基础教程 一、常用断言二、执行顺序三、依赖测试四、参数化测试1、通过dataProvider实现2、通过xml配置(这里是直接跑xml) 五、testng.xml常用配置方式1、分组维度控制2、类维度配置3、包维度配置 六、TestNG并发测试1、通过注解来实现2、通过xml来…

05.坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角,X向右增长,Y向下增长。 2.设置控件位置 设置控件位置,就相当于是需要指定控件的坐标,对于该控件来说,其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

腾讯云4核8G服务器够用吗?容纳多少人同时访问?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

《CSS 简易速速上手小册》第9章:CSS 最佳实践(2024 最新版)

文章目录 9.1 维护大型项目的 CSS9.1.1 基础知识9.1.2 重点案例:构建一个可复用的 UI 组件库9.1.3 拓展案例 1:优化现有项目的 CSS 结构9.1.4 拓展案例 2:实现主题切换功能 9.2 BEM、OOCSS 和 SMACSS 方法论9.2.1 基础知识9.2.2 重点案例&…

C/C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢? void Swap(int&…

【Jenkins】Jenkins关闭Jenkins关闭、重启

目录 一、Jenkins关闭、重启 二、Jenkins服务的启动、停止方法。 一、Jenkins关闭、重启 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit,关闭Jenkins服务。 例如:http://localhost:8081/exit 2.重启Jenkies 只有在Jenkins服务启动…

亚马逊认证考试系列 - 知识点 - LightSail介绍

一、引言 在当今云计算的时代,亚马逊网络服务(AWS)已成为业界领先的云服务提供商。其中,LightSail服务是AWS为简化云计算的入门和使用而推出的一项服务。它特别适合那些想要快速搭建网站、开发环境或小型应用的用户。通过LightSa…

[office] Excel表格中自动添加的超连接怎么取消? #媒体#其他#知识分享

Excel表格中自动添加的超连接怎么取消? Excel表格中自动添加的连接怎么取消?有时候在Excel2013中输入网址或邮箱时会自动添加超连接,本质上这是很人性化的功能,可是对很多人来说可能用不到,而且很繁琐,下面…

寒假作业:2024/2/11

作业1&#xff1a;使用递归实现n! 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int fun(int n) {if(0n){return 1;}else{return n*fun(n-1);} } int main(int argc, const char *argv[]) {int n;printf("please en…

寒假思维训练day20

更新一道1600的反向贪心 题意&#xff1a; 有n场比赛&#xff0c;且小明的智商是m&#xff0c;每场比赛需要的智商是,当时, 可以直接看题&#xff0c;当时&#xff0c;需要智商m减1才能看这道题&#xff0c;当智商为0不能继续往下看题&#xff0c;问最多能看多少题 题解&#x…

【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题

题目链接&#xff1a;[NOIP2001 普及组] 最大公约数和最小公倍数问题 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;stl函数&#xff0c;最大公因数&#xff0c;最小公倍数 题意&#xff1a; 输入输出样例&#xff1a; 分析&#xff1a;直接套用公式优化累加即…

解决Typora导出HTML不显示图片

解决Typora导出HTML不显示图片 产生原因 Typora导出HTML不显示图片&#xff0c;可能时图片存放在我们的硬盘中。 我们可以将markdown中的图片转化为base64格式&#xff0c;嵌入到html中。 解决步骤 首先&#xff0c;下载 TyporaToBase64.jar 密码:45jq 其次&#xff0c;将…

DS:单链表实现队列

创作不易&#xff0c;友友们来个三连支持吧&#xff01; 一、队列的概念 队列&#xff1a;是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)的特点。 入队列&#xff1a;进行插入操作…

VTK 三维场景的基本要素(相机) vtkCamera 相机的运动

相机的运动 当物体在处于静止位置时&#xff0c;相机可以在物体周围移动&#xff0c;摄取不同角度的图像 移动 移动分为相机的移动&#xff0c;和相机焦点的移动&#xff1b;移动改变了相机相对焦点的位置&#xff0c;离焦点更近或者更远&#xff1b;这样就会改变被渲染的物体…

sqlmap 使用笔记(kali环境)

sqlmap使用 kali环境 -u或–url 直接扫描单个路径 //如果需要登录要有cookie sqlmap -u "http://10.0.0.6:8080/vulnerabilities/sqli/?id1" --cookie"PHPSESSIDisgvp2rv4uts46jbkb9bouq6ir; securitylow"-m 文件中保存多个url&#xff0c;工具会依次扫…

前后端分离好处多多,怕就怕分工不分人,哈哈

前后端分离倡导多年了&#xff0c;现在基本成为了开发的主流模式了&#xff0c;贝格前端工场承接的前端项目只要不考虑seo的&#xff0c;都采用前后端分离模式&#xff0c;这篇文章就来介绍一下前后端分离模式。 一、什么是前后端分离开发模式 前后端分离是一种软件开发的架构…

Linux第46步_通过“添加自定义菜单”来学习menuconfig图形化配置原理

通过“添加自定义菜单”来学习menuconfig图形化配置原理&#xff0c;将来移植linux要用到。 自定义菜单要求如下: ①、在主界面中添加一个名为“My test menu”&#xff0c;此菜单内部有一个配置项。 ②、配置项为“MY TESTCONFIG”&#xff0c;此配置项处于菜单“My test m…

第六篇【传奇开心果系列】Vant of Vue 开发移动应用示例:深度解析响应式布局支持

传奇开心果系列 系列博文目录Vant开发移动应用示例系列 博文目录前言一、Vant响应式布局介绍二、媒体查询实现响应式布局示例代码三、短点设置实现响应式布局示例代码四、响应式工具类实现响应式布局示例代码五、栅格系统实现响应式布局示例代码六、响应式组件实现响应式布局示…

ubuntu彻底卸载cuda 重新安装cuda

sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" cuda10以上 cd /usr/local/cuda-xx.x/bin/ s…
最新文章