欢迎光临散文网 会员登陆 & 注册

到底该——如何提高“AI回复的准确性”? |课题时间Vol.1

2023-09-07 11:56 作者:Zion无代码云IDE  | 我要投稿

当我们在琢磨“提高AI回复准确性”这个问题时,都绕不过对Finetune和Prompt Engineering(提示词工程)这两个技术路径的考察。

这二者,都是为了达成一个朴素的目标——利用“私有数据+大模型”,让机器理解人的意图,以获得尽可能符合人类预期的答复。


所以,我该选Finetune还是Prompt Engineering呢?


凡对大模型的小规模训练,皆可视为Finetune。除了数据集上的差别,它在技术流程上跟预训练没有本质区别,没条件的企业,建议忽略这个选项,一来是贵(肯定比预训练便宜,但相比Prompt Engineering还是贵多了),二来Finetune还真未必就比Prompt Engineering要准,理想的条件下,你的私有数据集足够大、且跟预训练模型相似度极高的话,最容易训练。但实际情况是:

  1. Finetune须依赖标注好的数据集。然而你并没有,原始的私有数据是不能直接用的;

  2. Finetune容易发生过度拟合问题。假设你有数据集,跟模型数据相似度较高,但参数量太小,通常会在很大程度上影响模型泛化的能力,导致过度拟合,这就好比一个正常人如果一辈子只见过父亲和母亲分别各一个的男人和女人,就无法很好的在人群中区分男女,用人类的语言来说就是“见的太少”。

  3. Finetune容易造成模型“失忆”。跟2相反,如果数据集跟原有训练数据相差过大,则容易“一边学新任务,一边忘记旧任务”,由于训练数据时某些参数权重被大幅改变(旧任务的能力依赖这个参数),模型在掌握新技能的同时,做旧任务的能力容易断崖式下降,学界称之为“灾难性遗忘”。

  4. 企业私有数据通常更新速度太快。比如变化中的购买记录、播放记录、评论记录、聊天记录等,动不动就要求大模型根据最新产生的“小数据”Finetune,未免过于杀鸡用牛刀了。

重新认识Prompt Engineering


当前条件下,我们在实际AI应用落地过程中,都是采用的Prompt Engineering这个策略——原因很简单,“四两拨千斤”。下面你会看到,利用好提示词工程,你会更容易触摸大模型的能力和边界。

  • 纯人工生成的Prompt

提到Prompt,很多人都有狭义的理解,就是在各种“GPT”里面变着法儿地提问、各种做示范blabla——很明显这是完全人工生成的Prompt。不管什么样的Prompt,抽象一下的话,大致都是由“上下文+指令”这两部分元素构造而成,像角色设定(Role Prompt)、输出样例(Few Shot)等等,都可以视作“context”。你可以直接把代表某种设定的Prompt“封印”在应用里(给它一个初始化设定):

如果你想更好的控制整个咨询的流程,可以进一步的补充流程信息,这里我们以一个订房AI的场景举例:


  • 人机协作生成的Prompt

但是,如果你给到大模型的“上下文”太长的话,一来很费Token,二来模型有限制,根本不支持大规模输入上下文(就算是Claude也才支持10万token)——比如,你有一份18万字的公告规范和培训资料,该怎么让大模型学习呢?这时候我们就要借助检索增强生成技术(Retrieval Augmented Generation,RAG)的力量了,简单来讲,它是一种允许我们在基础模型外部检索数据,且把检索到的相关性数据注入到上下文中,以增强提示信息,以确保响应的质量和准确性。具体来讲,我们需要通过“向量化数据库”的相似性搜索能力和“embedding”来做数据预处理——把这个18万字的文本进行关键信息提炼,最终会跟人类的提问(也就是指令)合成在一起,作为最终版本的Prompt给到模型,模型据此给出更加贴合上下文的回复。下面这个流程图,可以更清晰地解释这个人机协作生成Prompt的过程。(下个月我们会正式推出产品化的工具,令到大家可以自己制作AI应用)

这样还觉得抽象,我们可以看一个企业知识库对话场景的案例。如果你是一个入职不久的新员工,想了解清楚年假该怎么计算,但又不想去翻找HR发你的一叠叠资料,就可以直接问行政小助手,“年假应该怎么计算?”,这时,它会根据你的问题,在向量数据库中展开搜索,以下是它找到的内容。

此时把搜索结果作为上文,再利用大模型就能输出精确的结果——也就是说上面这段捞出来的内容经过向量化处理以后,加上用户的提问,就是最后给到大模型的Prompt,根据这个Prompt,小助手会给到你下面的回复。

再说回来 Finetune 和 Prompt Engineering 的区别,在此权且不严谨地类比一下——假如前者是报了个课外补习班的话,索性把后者理解为开卷考试好啦。


再多分享一些正在落地中的case


基于上面的原理,我们已经实现了一些垂直场景的例子,在此可以对比下直接跟大模型对话和Prompt Engineering驱动下的回答效果有何不同。
以这个服装导购助手为例:(蓝紫色背景图为使用以上方法的小模型结果,另外一个为直接使用GPT 4的结果)

回复更加有服务感且不会有太多冗余的回答:

对于像服装搭配的具体问题,基于自己企业的私有数据输出的结果是更符合期待的,少了许多正确的废话。那么回到技术选型本身,大模型最大的价值其实就在于,通过利用这样一个基础知识极宽的模型,可以使用很小的成本(调整提示词)就实现自己的“小模型”制作,而且这样的模型很多时候的表现都会超过模型微调,所以我们优先选择了使用提示工程这一路径。以上就是我们本次课题介绍的全部啦,不管你在任何一个垂直领域,有任何想要落地的AI场景,都可以直接加COO 赵赫切磋、咨询!


到底该——如何提高“AI回复的准确性”? |课题时间Vol.1的评论 (共 条)

分享到微博请遵守国家法律