00:04
大家好,欢迎大家来到腾讯云开发者社区,腾讯云向量数据库团队,安登团队共同打造的IG七天入门训练营系列课程,今天是咱们的这个第5期啊,那今天呢,我们一起来看一下啊,这一节课呢,我们就会讲解如何让我们的大语言模型来理解我们的知识,也就是说如何去使用我们的这个PRO。OK,那这节课呢,我们首先来看一下关于这个啊prompt啊,那什么是promp呢?那promp其实大家可以简单的理解为,它就是用于指导我们的这个AI模型来生成这个特定类型,或者说主题,或者说格式内容的这样的一个文本,说白了啊,它就是一条文本信息,它在NLP当中呢,这个promp啊,通常就是由用户他描述的一个问题,或者说它的一个任务的一个描述来组成的,举个例子啊。
01:02
例如我这里问了一个问题,叫做给我写一篇有关这个IG的一个文章,那这句话实际上啊,它就是一个特定的一个任务嘛,对吧,那这句话它就是一个所谓的一个PRO,那PRO它实际上。这样的一个出现呢,才让我们的这样的一个大语言模型有了这样的一个所谓的啊零样本或者说小样本的一个啊能力,我们来看几个例子啊,啊正常来说,大家目前去使用一些大语言模型,可能只需要简单的说一句啊,你给我写一篇有关IG的一个文章,那这个大语言模型就会把这个结果给生成出来,对吧,那这个就是实际上就是所谓的一个啊零样本的一个能力,我们可以看一下,我们这里有一个case啊,叫做translate English to French就是。我们这个任务是需要把我们的这个英文翻译成这个法语,那我要翻译的这个英文单词呢,就是句这个单词,那这个就是所谓的一个零样本,我只是把我要做的事情给描述了出来,那描述出来之后呢,这就是所谓的一个form,那我们再来看一下啊,什么是这个ones shot啊,Oneself的意思就是说我除了告诉我们的这个大模型啊,我需要做什么事情以外呢,我还会提供一个小case啊。
02:20
例,我这里提供了一个啊例子叫做这个C要翻译成后面这个法语这个词对吧,那这实际上就是一个比较小的一个case啊,或者说一个例子,然后呢,我再让我们的模型来翻译句这个单词。这就是所谓的这个one shot,也就是提供一个事例。那最后我们再来看这个shot啊,Shot意思就是说我不仅仅只提供一个事例,我要提供多个事例啊,例如这里咱们就提供了三个事例啊,当然还是做这样的一个翻译的一个任务,最终呢,我们再让我们的模型把去这个单词进行一个翻译,这就是从我们的这个。小样本啊,到我们这个零样本这样的一个任务啊,可以看一下啊,不管是你的这个任务描述也好,或者说你提供的这些事例也好,那我们把这些所有的一个内容合在一起啊,都称为咱们这样的一个prompt,说白了啊,咱们的一个prompt就是来指导我们的这个AI模型来完成你的任务的,或者说生成特定类型或者主题内容的这样的一些文本数据啊文本。
03:28
这就是咱们的一个prompt。OK,那我们接下来再来看一个case啊。首先呢,在大模型的一个生成来说,大家需要明确一个观点啊。什么意思?就是说大模型它的一个本质实际上是在做什么事情呢?它实际上是在做续集啊,在做续集,大家可以考虑一下,那对于人类来说,假设。啊,我现在学到了一个任务,让你去写一篇文章,那你写这篇文章,你接下来就开始写,那你做的这个事情实际上也是在去写,或者说当你写写了一个标题啊,这个标题写好之后,那你接下来要写后面的一个内容,实际上你也是在续写。
04:10
对吧,那对于大模型来说也是一样的啊,它本质上也是在做一个续写,所以关键就在于我们需要去控制这个大模型,让他去朝着我们,他朝着我们的一个期望来进行一个续写。举个例子啊,我们来看一下左边这个case啊,左边这个case呢,有一个是the sky is就是。我实际上没有写任何需要指导模型做的一个事情,只是写那个the sky is,那到这里为止呢,实际上因为模型它没有接收到他要做什么样的一个事情,所以呢,他接下来做的事情就是续写啊。当你没有指导模型做事的时候,他只会曲解,只会曲解。那这个时候我们可以看一下它的一个输出结果,就是blue,然后the sky is blue,巴拉巴拉巴拉,那这时候大家可以发现一个问题啊,因为你没有具体的一个指令,那最终模型的一个输出的一个结果就不是你所控制的。
05:09
那这个时候他就会输出一些出人意料的一些结果,甚至可能是高于我们任务要求的一些结果。所以呢,如果我们想让我们的模型朝着我们的一个想法进行一个输出的话,我们就需要给他更多的一些指导,比如我这里的这个prompt,在这个the sky is前面加了一句话叫做完善以下句子。然后我再写the sky is,那这个时候模型就会输出so beautiful today.起来就是SKY。其他内容它就不会再进行一个输出。这就是我们的一个PRO的一个作用啊,它能告知我们的模型,你应该去做什么样的一个事情。所以对于之前比较热门的这个所谓的这个prompt engineering,实际上啊,就是在去探索如何设计出针对于当前我们的这个大语言模型啊,效果最好的这样的一个promp,从而当我们只要书写了promp之后呢,就能指导我们的大模型去高效的完成某些任务。
06:15
那像刚才我们提到的这样的一个one shot也好,Shot也好,他为什么要去提供这些小的一些case呢?它实际上也是在干什么呢?也是在指导我们的大模型,因为我给了你一些参考实例,对吧?那我希望你大模型也参考一下我们这些事例,来更好的完成我希望你做的这样的一些事情,这就是所谓的一个promp,指导模型来完成我们的一个任务。好,那了解了这个MP之后呢,我们再来给大家去讲解一点啊,关于PRO这一块的一个进阶的一个技巧啊,也就是咱们的这个Co of,那这样的一个Co,它到底是在嗯做什么事情呢。好,我们来看一下啊,左边呢,我们这边呢,有这样的一个啊。
07:02
问问题啊,这个问题呢,它实际上是涉及到一些数学相关的一些啊计算这个时候如果你直接给到我们的这个大模型,那大模型实际上可能就没有办法输出一个准确的答案,所以呢,我们其中有个思路就说,哎,既然你输出错了,OK啊,那我就借鉴一下我们刚才的这个所谓的one shot,或者这个shot的一个思路,我给你去提供一些参考的一个事例,对吧,那我们就可以考虑去提供这样的一些啊参考事例,然后让他来输出一个。答案,但是大家可以看一下啊,在我们的左边的这个图当中,我们也去提供了这样的一个参考示例,然后呢,又给他提了一个新的问题,但他最终还是输出了一个错误的一个结果,对吧。那这个时候该啊怎么办呢,实际上。我们可以看一下中间啊,中间这里我们实际上还是给它提供了一个这样的一个解题的这个shot的一个过程,应该准确的说应该叫做啊one shot对吧,但是这个提供的one shot当中的这个answer,也就是蓝色的这个部分,我们做了一个事情啊。
08:13
对于我们的这个标准的prompt,我们的答这个answer,也就是它的一个结果是the answer is eleven,对吧?但是对于我们的中间的这个所谓的Cha of,它的一个promp是在我们输出答案之前呢,我告诉了模型你的一个解题的一个步骤,也就是说我到底是如何得到这个11的,他把这个解题的一个步骤也进行了一个详细的一个描述。那以这样的一个形式呢,就告诉了模型,你在得到最终的一个结果的时候,你应该先去思考一下它具体是怎么实现的,最终再把这个答案给输出出来。啊,大家也可以考虑一下啊,刚才我有提到一点,说模型它本质上是做什么,它本质上做的是续写,那如果我们从续写的这个角度来考虑这个问题的话,你只有一个问题。
09:07
如果你直接输出了这个the answer is eleven这样的一个答案,那这个11它的一个依据在哪里呢?对吧?因为它是做续写嘛,它肯定要有一些依据的,它要依赖于上文才能得到这个实物,但是如果我把解题的一个思路写在过程当中。那我最终在输出这个the answer is eleven的时候,它就会有更多的一些上下文的一个参考,从而才能保证我们的模型尽可能得到一个所谓的一个正确的一个答案,这就是咱们的一个of啊,也就是咱们的这个Co。但是。大家可以考虑一下啊,你不可能我每次在问这个问题的时候都去添加这样的一个one shot,其实是非常麻烦的,对吧,后来大家进行那个探索啊,就发现其实大家想使用这个的时候,可以一种换一种思路啊,我直接在我们最终的这个啊PRO当中加一句话,也就是这个BY什么意思呢?就是说。
10:03
当我。问完模型这个问题之后呢,我还要加一句话,这句话就是让模型啊仔细思考,并且把这个解题的一个思路啊给输出出来。那这样的话,实际上模型在进行续写的时候呢,它就会把我们的中间的这个解题过程给输出出来,那输出出来之后呢,我们最终的这个答案就会基于我们这个续写的内容来得到,对吧,这样的话就能提高我们整体的。模型输出的一个准确率,这就是咱们的这个所谓的这个啊of,也就是咱们的这个Co,那这一块的话,可能更多会应用在一些相对于偏带有一定推理的这些任务上啊,它能得到一个非常好,或者说相对来说比较好的一个效果。好,这就是咱们这个prompt Co这一块的一个使用技巧。OK,那了解完了这个prompt之后呢,那接下来呢,我们就来回到我们自己的这个IG的这个流程啊,OK,那我们。
11:07
啊,把我们的文档存到了我们的这个向量数据库,并且切成了创,转换成了这个里。那检索我们也已经检索出来了,排序也排好了,那拿到了相关的知识,还有用户的一个query,那接下来呢,我们要做的什么事情呢?是不是让我们的模型参考我们检索出来的这个相关的文档去回答用户的这个query,这是我们最终要做的一个事情,对吧?那我们刚才讲过了,我们的prompt要做的事情是什么呢?Prompt做的事情就是要指导模型正确的去回答我们的用户的一个问题。那对于我们的场景来说,除了要指导模型回答这个问题之后,还有一个关键点就是我们希望。模型去参考我们检索出来的这个知识,或者说相关的一个文档,对吧,所以呢,我们就需要去编写这样的一个prompt,这个prompt呢。
12:03
大致就是说,哎,要告诉模型,你应该去参考一下我们提供给你的这个上下文的这些文档,然后基于这个文档去回答用户的一个问题,这就说白了,就是我们写一个PRO指导模型,让模型去参考我们节奏出来的内容,最终把这个答案给输出出来,这就是我们PRO要做的一些事情啊。当然这里PRO并没有一个非常标准,说你必须怎么怎么写,大家可以基于自己的一个大模型,也可以去做一些相应的一些啊调试,那在PRO这一块呢,我们实际上在使用的过程中也去做了一些相对的一些额外的一个优化啊,主要是两个方面啊,第一个方面我们去做了一些分布式的一些引导的一些提问。啊,我们可以看一下啊,下面这里实际上罗列了我们目前的其中一个版本的这样的一个promp啊,也就是说我们希望模型在进行回答的时候,对他提出了一定的一些要求,那第一个要求的话就是。
13:04
得去参考我们的这个注入的一个文档,对吧,其次呢啊,这是最重要的,这是最重要,其次呢,我们也希望他以这样的一个markdown这样的一个结构去输出我们的一个文本数据,或者说输出一些啊链接,其次呢,我们希望它输出的一个结果要清晰简洁明了,对吧?这就是我们提希望模型要做的这些事情,那这样的一些事情呢。我们是以这样的一二三这样的一个形式的罗列出来的,说白了就是我们以这样的一个啊,分布式的一个引导的一个方式啊,让模型一步一步去做这样的一个事情。从而拿到一个不错的一个效果,其次呢,我们对我们的这个prompt做了一个所谓的一个代码化的一个处理。啊,这一块为什么要去做这样的一个事情呢,实际上。对于目前的这个大模型来说,它的一个训练数据啊,除了会包含这样的一个标准的这个文本语料以外呢,也会包含所有的这样的一个代码数据,那为什么需要去这样去把这个代码数据也给到我们的模型呢?就是因为当我们这个代码数据给到模型之后呢,模型才会具备一定的这样的一个推理的一个能力。
14:18
大家可以考虑一下啊。其实对于我们编写的代码来说,它实际上其中是有非常强的这样的一个逻辑关联能力的,它其中包含了大量的这样的if的一些逻辑处理,对吧,那正是这样的一些啊,所谓的一些逻辑数据,让我们的这个大模型有了一定的这样的一个推理能力,所以说对于代模型来说啊,它对于代码这一块是的能力啊,是非常强的。所以我们也借鉴了这一块啊,把我们的一个输入数据,以这样的一个类似于list,或者说这样的一个形式提供给了我们的一个模型,让模型能更加啊区分出不同的这个。
15:00
给到他的不同的这个段落啊,以这样的一个形式,我们也能进一步提高我们整个链路它的一个模型,对于用户最终输出的一个结果的一个准确性啊性啊,这就是我们啊整个IG流程在PRO这一块的一些应用和咱们的一个。优化OK,那到这一步呢,其实啊,我们整个流程就已经全部给大家讲解完了,从我们的这个数据的啊切分到入库,到最终我们的这个检索,再到我们把。检索的内容和我们的prompt给到我们大模型,大模型来进行我们的一个输出。那这就是说我们整个IG的一个流程。那啊,在接下来的课程当中呢,我们也会看到啊,在整个我们的这个VDB也会为大家提供这样的一个相对来说啊,比较简单的这样的一个对外的一些API,大家在使用这个IG的过程当中呢,不需要你去编写非常复杂的这些中间的这些处理过程,我们只需要基于我们提供的API,大家就能很快速的搭建起一套效果非常不错的这样的一个问答系统。
16:11
那具体的一些啊,演示呢,那就会在我们接下来的课程当中再来带给大家,好,谢谢大家,我今天要给大家讲的内容就到这里,拜拜。
我来说两句