提示词工程&RAG&微调:三种方式如何发挥语义大模型(LLM)的最大性能?
今天这篇文章的内容,依旧是讲述:如何通过Prompt工程,发挥LLM的最大性能。没有关注的朋友,可以点个关注,后续我还会更新更多关于AI的资讯及相关干货,别错过啦。Prompt工程概念:这是一种通过输入文本指令让AI大模型按照要求输出期望结果的技术。快速构建应用和性能基准提示词是调用AI大模型能力的接口,通过结构化精心设计的提示词可以大大提高大模型的准确性和相关性。相比其他技术,通过提示词工程优化
今天这篇文章的内容,依旧是讲述:如何通过Prompt工程,发挥LLM的最大性能。
没有关注的朋友,可以点个关注,后续我还会更新更多关于AI的资讯及相关干货,别错过啦。
Prompt工程
概念:这是一种通过输入文本指令让AI大模型按照要求输出期望结果的技术。

快速构建应用和性能基准
提示词是调用AI大模型能力的接口,通过结构化精心设计的提示词可以大大提高大模型的准确性和相关性。相比其他技术,通过提示词工程优化LLM性能的门槛更低、成本也会更低。
在优化LLM性能的过程中,提示词工程要做的第一件事就是:基于提示词工程快速建立应用原型,并且以此为性能参考基准,用于后续优化性能对比。
在使用提示词工程构建好应用之后,要进一步提高模型的性能可以考虑添加外部辅助工具、添加参考内容等手段,这就涉及到RAG、Agents等相关技术。
鉴于提示词工程对LLM的核心作用,在实际应用过程中,使用RAG、微调或其他高级技术之后也应该再次优化提示词,就像我前面的文章说过的,提示词工程贯穿LLM性能优化的过程始终。

在使用提示词工程的时候,需要遵循这四项核心原则:编写清晰的指令、将复杂任务分解为简单任务、给LLM一定的时间空间思考、系统的测试性能变化。
虽然这些原则看着简单,但是实践起来却不容易,要提高提示词技巧应该多学多练。关于如何写好Prompt网上的资料有很多,这里我推荐阅读几家大模型厂商的提示词工程指南。LangGPT结构化提示词也不错,里面有很多高质量的资料和提示词。在聊天页面私信:“LangGPT”,给你发LangGPT结构化提示词知识库。
在提示工程进行过程中和后续进一步的性能优化过程中,如何知道模型的性能是否变好呢?如何系统的测试性能变化?下面讲如何做好模型的性能评估。

做好模型的性能评估
只有清晰地了解了模型性能,才能判断各项改进操作是否有效,以下是评估模型性能的一些方法。
-
外包人工注释:也就是花钱请人来告诉你某样东西是好是坏,这种方法通常成本高、速度慢,而且难以确保质量的一致性。
-
内部人工审核:让您的团队在内部对模型结果进行审核,可确保质量,但速度较慢,且需要大量资源。
-
基于模型的评估:使用另一个 LLM(通常是更好的模型,如 GPT-4)来评估系统的性能,有了强大的通用模型,这种方法变得越来越有效。
-
基于代码的评估:编写一套评估自定义的规则,以评估模型输出的特定方面
-
准确度指标:如果目标明确,F1、精确度、召回率等数据集指标可以客观地衡量模型的准确性。
-
终端用户反馈和A/B测试:终端用户反馈通常是最重要的反馈!一般包括用户的直接反应以及表明用户偏好的隐式操作,比如用户对结果不满意则会要求重新生成,或者重复提问。
这些评估方法各有优缺点,通常最好的方法是将几种方法相结合,全面了解模型的性能和需要改进的地方,从而构建适合自身业务的模型性能评估框架。
提示词工程的局限性

使用提示词工程的优点和局限性都很明显。优点是门槛低、能够快速试错和迭代;成本也低,实施快,能快速构建早期的应用,同时结合评估系统,能够为性能优化建立基准。
局限性也同样明显,如:引入新知识困难、遇到复杂任务的时候大模型很难保持稳定的风格和结构输出、难以降低的token消耗。
若你没有遇到这类问题,恭喜你!可以不用继续折腾了,如果不幸遇到了,要可靠的解决这些问题,提示工程无能为力,只能依赖其他技术,要实现稳定可靠的引入新知识,我们可以使用 RAG (知识检索增强) 技术。要实现更稳定的风格和结构,降低token 消耗,则可以对模型进行微调,如下图所示。

RAG
这里我们先来谈谈RAG,在前文对RAG建立了一个印象,这里我来谈谈RAG是如何做的。
RAG过程
一个典型的知识问答的RAG的流程为:
-
第一步:建立一个领域知识库,例如将人口数据文档Embedding后得到知识库;
-
第二步:用户可以输入问题,如:加拿大人口多少?(Question);
-
第三步:基于用户问题检索人口数据知识库(Knowledge Base);
-
第四步:从知识库中检索得到答案,然后将答案与提示词组装起来:“基于提供的知识回答用户问题:[用户问题:加拿大人口多少?],[知识:xxxx]”;
-
第五步:将组装好的提示词输入大模型,大模型再做出相应的回答。
总结一下,依据用户输入检索知识,然后构造Prompt,Prompt 输入模型得到结果。当然,更进阶的RAG不仅仅调整输入Prompt,甚至也能用模型输出信息。

高性能的RAG系统类似传统的信息检索系统,可以结合大模型特性使用 reranking、classification and finetuning your embeddings等多种技巧。不过,无论使用的RAG 技术有多复杂,RAG的核心都是如何将知识检索得又快又准。
还记得我们开卷考试那个例子吗?时间有限,如何在多本书之间(知识库间检索),如何在一本书里(知识库内部检索)把目标知识检索得又快又准确,是RAG效果好坏的关键。引入RAG为大模型应用带来了新的可能性,但其作为一个独立系统也增加了独立出错的可能性,因此需对RAG进行评估。
RAG评估
如果检索到的知识是无效的,会严重影响LLM应用的表现,因此将检索过程的精确度和召回率与整个 LLM 应用进行研究研究尤为重要。
如下图所示,需要建立一个评估框架,将检索性能与整个LLM应用程序隔离开来。所以这里既需要从模型角度出发评估生成结果的质量,也需要从检索的角度出发,用精确度和召回率评估检索并评估整个系统。

需要进行RAG评估的时候,可以从模型角度及检索角度这两个进行评估。
模型角度(generation)
-
回答真实性:模型结果真实性多高(少一些模型幻觉)。
-
回答相关度:结果和问题有多相关,不能南辕北辙。
检索角度(retrieval)
-
召回率(recall):相关信息有多少包含在返回的检索内容里,越全越好
-
准确率(precision):返回的检索内容中有用信息占比多少,越多越好
RAG也有局限性
如果LLM应用面临的问题与上下文有关,那么RAG就是一个强大的工具,它使模型能够访问外部数据源,提供模型训练数据中不存在的必要上下文。这种方法可以显著提高模型的性能,尤其是在最新信息或特定领域信息至关重要的情况下,可以为模型提供参考文本,能大大降低模型幻觉。

需要注意的是RAG的局限性:这门技术适合打造专才,不适合打造通才。虽然能够为模型提供新的信息、专有领域知识,但并不适合为模型提供通用领域的知识。
对于如何让LLM模型保持稳定的风格或结构输出,降低token消耗等。也就是我们在Prompt工程局限性的后两点,则需要使用微调技术解决。
Fine-tuning(微调)
从参数规模的角度,大模型的微调可以分成两条技术路线:全量微调FFT及PEFT。
-
全量微调FFT(Full Fine Tuning):对全量的模型参数,进行全量的训练。
-
PEFT(Parameter-Efficient Fine Tuning):只对部分模型参数进行训练从成本和效果的角度综合考虑,PEFT是目前业界比较流行的微调方案。
微调是在较小的、特定领域的数据集撒谎给你继续LLM的训练流程,这可以通过调整模型本身的参数,而不是像提示词工程和RAG那样仅仅更改提示词来大幅提高模型在特定任务中的性能,可以把微调的这个过程想象成:把通用工具打磨成精密仪器的过程。
微调的两大好处是什么?
提高模型在特定任务中的性能:微调意味着你可以输入更多的示例,可以在数以百万计的数据上进行微调。虽然经过微调的模型可能会失去一些通用性,但对于其特定任务而言,它会有更好的表现。
提高模型效率:提升LLM应用程序的效率意味着更低的延迟和更低的成本。实现这一优势有两种方法。通过专门化模型,您可以使用更小的模型。此外,由于只对输入输出对进行训练,而不是对完整的提示及其任何提示工程技巧和提示进行训练,因此你可以舍弃示例或指令,这可以进一步改善延迟和成本。

微调该如何做
为了使微调达到最佳效果,应该从明确的目标和相关的高质量数据集开始,使用能体现所需输出类型的数据进行微调。此外,迭代测试也至关重要,需要从小的、渐进的变化开始,并在下一步进行前对结果评估。
对于OpenAI模型:微调包括使用其提供的API工具在我们的数据集上进一步训练模型。在进行微调训练时需要调整各种超参数并监控模型的性能,以找到适合特定用例的最佳设置。
对于开源的LLM:微调可能需要更多的实践工作,包括设置训练环境、管理数据流,还可能需要直接调整模型架构。
微调也有局限性
对于需要快速迭代新用例的场景,微调所起的作用较小。
要实现微调功能,需要创建一个大型训练数据集,其中需包含数百个优质示例。然后,按照格式要求将数据集整理成适当的格式,并启动微调自定义LLM的训练任务,评估微调性能。
为了实现良好的微调,还需要建立一个模型改进工作流程,在流程中不断监控模型性能变化,获得反馈,并依据反馈不断改进模型。
通过记录所有生成的模型,以及评分指标(隐性和显性用户的反馈,以及人类和人工智能的评估),从而为下一版本创建的训练数据集进行调整。
另外,许多LLMOps平台也能自动收集和显示最佳数据,让我们只需点击几下就能对模型进行微调。

—
最后总结下:我在上面提到的提示词工程、RAG 和微调等方式,在优化LLM的性能时,都是可以叠加使用的。
提示词工程始终是优化过程的第一步,从精心设计的提示词开始,我们就能了解模型对于任务的固有能力,有时候许多任务通过提示工程可能就能达到理想效果!微调可以完善模型对任务的理解,使其提供正确的输出。微调与 RAG 搭配使用的情况下,模型不仅知道该说什么,而且还能从知识库中获取正确适当的信息。
“RAG+微调”的这种双重方法充分利用了微调(针对特定任务的性能)和 RAG(动态、上下文丰富的信息检索)的优势,使LLM应用程序的性能更强。
根据微调的数据情况或模型的性能变化,在RAG和微调后需要重新进行提示工程,优化提示词以获得真正的最佳性能。
了解并有效应用提示词工程、RAG和微调是将LLM应用从原型阶段过渡到生产就绪模型阶段的关键。
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。


👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)

👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
更多推荐
所有评论(0)