每一个搭建大语言模型应用的AI工程师都会面临一个难题,如何选择一个合适调优方法。就算是强大的预训练LLM也可能无法直接满足项目中的特定需求。如项目需要一个特定结构的应用程序,如预训练缺失上下文的重要文件,再比如有特定术语和结构的高专业性的行业领域,面对这些问题,需要有特定的方法来调整LLM。
要决定用哪种调优方法,首先得明白这些方法的含义。
提示工程(Prompt Engineering)
提示工程相对是大家比较熟悉的概念,输入prompt给large language model,大语言模型就根据这个输入来生成回应。然后得到我们想要的结果。这实际上是一种精确的输入方法,旨在引导模型产生相应的输出。大多数情况下prompts指的是文本,尤其是以自然语言来作为描述的文本。
检索增强生成(Retrieval Augmented Generation)
RAG技术通常将客户的原有文档切分成很多片段,理解每一个片段的语义并将其保存在数据库中,通过大语言模型理解用户的查询需求,并将相关的片段从数据库中检索出来,将提示工程与数据库查询相结合以获得上下文丰富的答案。达到提升生成内容的精准度。
微调(Fine-tuning)
微调和前两个不同的地方在于,前面两种技术,不管是提示工程还是RAG,大模型本身是没有任何的变化的,但是如果做微调,其实是要去通过一个训练的过程来修改大模型它本身的参数,使模型能更加专业化。比如,一个语言模型可以在医学文献上进行微调,从而更擅长回答健康护理相关的问题。
图片来源@Akshay_pachaar
这三种技术在性能、效率和适用范围上各有千秋。选择哪种方法取决于具体的应用需求。
当AI应用需求不涉及大量外部知识,且主要依赖模型现有知识库时,提示工程是一个简单有效的选择。提示工程通过设计合适的提示,引导模型生成更符合预期的回答。由于这类应用场景中,模型已经具备足够的知识储备,因此只需通过优化提示,便可实现更好的性能。这种方法适用于各种通用场景,如自然语言生成、对话系统等。
在需要引入和利用大量外部知识的场景中,RAG能提供更加丰富和准确的输出,RAG更多的是关于改变知识,而且利用外部知识库来生成答案。通过结合外部知识库,RAGs能够为模型提供更多上下文信息,从而生成更精确、详细的回答。这类方法适用于知识密集型场景,如问答系统、信息抽取等。
当AI应用需要在特定领域内表现出高度专业化时,微调是最佳选择,微调主要是关于改变模型的行为,通过训练特定领域的数据,使模型更好地适应特定应用场景。微调能够让模型在特定领域具备更高的准确性和专业性,从而满足领域内复杂、专业的要求。这类方法适用于医疗、金融、法律等特定领域。
如果你的应用既需要定制知识又需要改变模型的行为,那么采用混合方案(RAGs + 微调)将是更佳选择。通过结合RAGs和微调,可以在特定领域内实现丰富的知识生成和高度专业化的模型性能。这种混合方案充分发挥了两种方法的优势,使得AI应用在定制知识和行为改变方面达到更高水平。