Leonurus-free

大模型调优的策略

大模型存在两个非常显著的问题:

因此,在使用大型模型时,需要谨慎验证其提供的信息,并采取措施来提高信息的准确性。


调优方法:


微调(FinTuning)🐫

通过提供额外的问答对在监督训练阶段微调大模型,以此来优化大模型的性能。

0269b2ba8e5d63fe672f008020d71ec8.png

通常,大多数人倾向于使用已经预训练好的基础大模型,以此避免对大模型进行预训练。因为基础大模型需要使用庞大的文本语料库进行预训练的,通常有数十亿甚至数万亿个标记,这意味着成本可能高达数十万甚至数百万美元。

选择基础大模型后,便可以开始下一步对其进行微调。由于 LoRa 和 QLoRA 等可用技术,微调这一步骤的成本相对便宜。

我们有一些利用大模型从知识图谱上下文构建问答对的想法。

然而,目前还有很多未知数。例如,能否为同一问题提供两个不同的答案,然后大模型以某种方式将它们组合到内部知识库中?

另一个考虑因素是,如果不考虑其关系,知识图中的某些信息是不相关的。因此,我们是否必须预先定义相关查询,或者是否有更通用的方法来实现?或者我们可以使用表示主语-谓语-宾语表达式的节点-关系-节点模式来生成相关对吗?

想象一下,我们以某种方式设法根据知识图谱中存储的信息生成包含问答对的训练数据集并对大模型进行微调,因此现在大模型包含了更新的知识。但是,对模型进行微调并没有解决知识截止问题,因为它只是将知识截止推迟到了更晚的日期。

因此,建议仅在数据更新的速度较缓的情况下通过微调技术来更新 LLM 的内部知识。例如,我们可以使用微调模型来提供旅游信息。

除了知识截止问题,目前微调还可以帮助减轻幻觉,但不能完全消除它们。

一方面原因在于大模型在提供答案时没有引用其来源。因此,你不知道答案是来自预训练数据、微调数据集,还是大模型编造的。

另一方面,如果我们使用 LLM 创建微调数据集,则可能存在另一个可能的虚假来源。

最后,经过微调的模型无法根据提出问题的用户自动提供不同的响应。同样,不存在访问限制的概念,这意味着与大模型互动的任何人都可以访问其所有信息,所以从根本上大模型就不能够获取机密信息。除了知识截止问题,目前微调还可以帮助减轻幻觉,但不能完全消除它们。


RAG🐫

RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信。

大模型在自然语言应用程序中表现非常好,例如:文字概括、提取相关信息、实体消歧、从一种语言翻译成另一种语言,甚至可以将自然语言转换为数据库查询或脚本代码。

此外,以前的 NLP 模型通常是特定于领域和任务的,这意味着我们很可能需要根据我们的用例和领域来训练自定义自然语言模型。然而,由于大模型的泛化能力,单个模型可以应用于解决各种任务集合。

c4fd2128f2def3c4b4620176a64caf0c.png

RAG 使用大模型根据数据源中额外提供的相关文档生成答案。

因此,我们不必依赖大模型的内部知识来得出答案。相反,大模型仅用于从我们传入的文档中提取相关信息并进行总结。

例如,ChatGPT 插件可以被视为 LLM 应用程序的 RAG。

与微调方法相比,RAG 具有一些明显的优势

另一方面,在使用检索增强方法时,我们应该考虑以下限制


汇总结论

这里我分几个方面来进行对比吧。

首先是知识层面,这个应该是RAG使用者最关心的。

然后是具体任务效果的问题。

第三块来聊成本了,现实应用很难避开成本的问题。

上面的内容所体现出来的,更多是RAG的优势,看起来似乎微调就没有什么好处了。但事实并非如此,RAG还是有很多不适用的环境的。


技术方案分析案例

借助两个比较典型的案例,大家应该能体会这两者的区别了。

产品百科问答

电商场景下,客服都要具备一个能力,就是产品百科问答,用户会需要咨询某些商品的属性等细节消息,这是一个很具体的场景了。然而实际我们需要面对的,除了这个功能本身,还需要解决一个问题,即商品信息是需要更新和变化的,例如新商品上架、价格优惠修改等,这个信息是需要快速反映在问答系统中的,此时我们RAG非常有必要性。

日常工作工具

写周报、灵感、工作日志、修改一份材料、查错查重、话术推荐、会议纪要之类的,类似这些问题,我们更多的日常使用方式就是prompt+大模型完成,我们做起来非常自然,可能顶多会根据自己的需求加一些例子,但往往不会优先考虑RAG。