为任何用例定制 LLM 的三大技术
1. 引言:为什么要定制大模型?
大型语言模型(简称“大模型”)开箱即用,功能强大:能回答问题、写诗作赋、构思菜谱、编写代码。但它们未必能精准契合你的特定用例,给出的答案可能过于笼统、格式不佳,甚至有误。
幸运的是,我们可以通过定制来让大模型满足需求。大模型的定制主要有三个层次:
-
提示工程
-
检索增强生成
-
微调
每个层次的难度和成本都比前一个高出一个数量级,但相应地,定制化程度也远超前者。
2. 第一层:提示工程
适用场景:数据格式化、任务链设计、文案写作、风格化写作、聊天机器人等。
所谓“提示工程”,就是通过向提示词中添加更多细节和上下文,来改善模型输出结果的一种方法。这是一种非常灵活且低成本的优化方式。
2.1 核心方法:少样本提示
通常,我们直接向模型提出要求,这被称为“零样本提示”。如今的大模型在这方面已经相当出色。但是,如果提供一个或多个“输入 - 输出”范例,即“单样本提示”或“少样本提示”,往往能获得更好的结果。
少样本提示在数据格式化方面尤其有用。例如,如果你希望模型将整数转换为浮点数,可以直接在提示中给出几个转换示例,模型就能学会这种格式。
除了少样本学习,有时简单地提供更清晰、更明确的指令也同样有效。例如,在开发一个菜谱应用时,你可以明确指示模型“只返回菜名”,而不是输出详细的食谱。
2.2 成本分析
前期成本:低 持续成本:低
一个精心设计的提示如果能一次性产生有用的答案,而不是需要多次尝试,实际上可以降低运行大模型的成本。总的来说,提示工程是一种廉价而高效的方法,可以从现成的模型中获得广泛的行为。
3. 第二层:检索增强生成
适用场景:私有知识库问答、文档搜索、智能客服机器人等。
提示工程有其局限性,尤其是在需要处理大量私有信息时,很容易超出模型的上下文窗口限制。这时,检索增强生成就派上了用场。
3.1 工作原理
检索增强生成通过引入专门的向量数据库来解决这一限制。其核心思想是:
- 将私有数据(如产品文档、知识库)分割成块,通过嵌入模型转换为向量,并存入向量数据库。
- 当用户提问时,系统将用户的问题同样转换为向量。
- 在向量数据库中进行相似度搜索,找出与问题最相关的几个数据块。
- 将这些相关的数据块连同原始问题一起,作为上下文信息交给大模型,让它生成最终答案。
一个典型的例子就是智能客服或文档查询机器人。例如,一些大型科技公司已经利用这项技术优化了他们的文档搜索体验,能基于用户查询,从海量文档中找到最相关的内容并给出精准回答。
3.2 成本分析
前期成本:中等 持续成本:中等
虽然向量数据库是处理大量数据的有效方式,但它增加了工程复杂度和维护成本。同时,由于向模型传入了更长的上下文,单次调用的成本和时间也会相应增加。尽管如此,这项技术解锁了许多需要大模型感知私有数据的关键用例。
4. 第三层:微调
适用场景:训练特定风格的聊天模型、定制模型行为、教授模型进行逐步推理等。
如果你的目标是改变模型的底层行为或教授其海量新知识,而不仅仅是提供上下文,那么微调是最佳选择。
4.1 工作原理
微调直接修改模型底层的权重,以添加新信息和行为。它可以与提示工程和检索增强生成结合使用。
一个常见的用例是基于一个开源基础模型,通过微调使其适应特定任务(如聊天)。例如,业界常说的“羊驼”系列模型,就是在一个著名的开源大模型基础上微调而来,专门用于对话任务。如今,主流的开源大模型通常都会发布一个基础模型和一个经过指令微调的变体。
4.2 成本分析
前期成本:高 持续成本:低
微调需要在新数据上重新训练模型的一部分。虽然不像从头训练模型那样耗时和昂贵,但大型的微调任务也可能需要在多个 GPU 上运行数天。不过,一旦模型微调完成,后续运行它的成本与运行基础模型相同,但结果却是个性化定制的。
5. 结语:如何为你的场景选择最合适的方案?
定制大模型需要投入时间和金钱。我们应从最简单、经济的方法开始尝试:
-
首先,尝试提示工程:这是最快、成本最低的方法。通过优化提示词和使用少样本提示,看是否能获得满意的结果。
-
其次,考虑检索增强生成:如果模型缺乏必要的上下文信息,导致“胡说八道”,使用向量数据库进行检索增强是理想的下一步。
-
最后,选择微调:如果以上两种方法都无法满足需求,你需要从根本上改变模型的行为或注入海量新知识时,再考虑微调。
当然,还有终极的第四层:从头开始训练你自己的大模型!