AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RAG 与 Finetuning ——哪个是提升你的 LLM 申请的最佳工具?
发布日期:2024-08-22 06:12:48 浏览次数: 1797 来源:码农大牛毛


序幕

随着人们对大型语言模型 (LLM) 的兴趣不断高涨,许多开发人员和组织都在忙于构建利用其功能的应用程序。然而,当开箱即用的预训练 LLM 表现不如预期或希望时,如何提高 LLM 应用程序的性能就成了一个问题。最终,我们会问自己:我们应该使用检索增强生成(RAG) 还是模型微调来改善结果?

在深入探讨之前,让我们先揭开这两种方法的神秘面纱:

RAG:这种方法将检索(或搜索)功能集成到 LLM 文本生成中。它结合了检索系统(从大型语料库中获取相关文档片段)和 LLM(使用这些片段中的信息生成答案)。从本质上讲,RAG 可帮助模型“查找”外部信息以改进其响应。




微调:这是使用预先训练好的 LLM 并在较小的特定数据集上进一步训练它的过程,以使其适应特定任务或提高其性能。通过微调,我们根据数据调整模型的权重,使其更适合我们应用程序的独特需求。




RAG 和微调都是增强基于 LLM 的应用程序性能的强大工具,但它们解决优化过程的不同方面,因此在选择其中一种时这一点至关重要。

以前,我经常建议组织在进行微调之前先尝试使用 RAG。这是基于我的看法,即两种方法都取得了类似的结果,但在复杂性、成本和质量方面有所不同。我甚至曾经用这样的图表来说明这一点:




在此图中,复杂性、成本和质量等各种因素都以单一维度表示。要点是什么?RAG 更简单、更便宜,但其质量可能不匹配。我的建议通常是:从 RAG 开始,评估其性能,如果发现不足,则转向微调。

然而,我的观点后来发生了变化。我认为将 RAG 和微调视为两种实现相同结果的技术过于简单,只是其中一种比另一种更便宜、更简单。它们本质上是不同的——它们不是共线的,而是正交的——并且满足 LLM 应用程序的不同要求。

为了更清楚地说明这一点,请考虑一个简单的现实世界类比:当被问到“我应该用刀还是勺子吃饭?”时,最合乎逻辑的反问是:“那么,你吃什么?”我问了朋友和家人这个问题,每个人都本能地用这个反问来回答,这表明他们不认为刀和勺子可以互换,也不认为一个是另一个的劣等变体。

这是关于什么的?

在这篇博文中,我们将深入探讨 RAG 和微调在各个维度上的细微差别,在我看来,这些细微差别对于确定特定任务的最佳技术至关重要。此外,我们将研究 LLM 应用程序的一些最流行的用例,并使用第一部分中建立的维度来确定哪种技术最适合哪种用例。在这篇博文的最后一部分,我们将确定构建 LLM 应用程序时应考虑的其他方面。其中每一个方面都可能需要一篇自己的博文,因此我们只能在这篇文章的范围内简要介绍它们。

你为什么要关心?

选择正确的技术来适应大型语言模型会对 NLP 应用程序的成功产生重大影响。选择错误的方法可能会导致:

  • 模型在特定任务上的表现不佳,导致输出不准确。

  • 如果该技术未针对您的用例进行优化,则模型训练和推理的计算成本会增加。

  • 如果您以后需要转向其他技术,则需要额外的开发和迭代时间。

  • 部署应用程序并将其呈现给用户的过程中出现延迟。

  • 如果选择过于复杂的适应方法,模型就会缺乏可解释性。

  • 由于尺寸或计算限制,难以将模型部署到生产中。

RAG 和微调之间的细微差别涉及模型架构、数据要求、计算复杂性等。忽略这些细节可能会打乱您的项目时间表和预算。

这篇博文旨在通过清晰地阐述每种技术的优势来避免浪费精力。有了这些见解,您可以从第一天开始采用正确的适应方法。详细的比较将帮助您做出最佳技术选择,以实现您的业务和 AI 目标。这份选择合适工具的指南将为您的项目取得成功奠定基础。

让我们开始吧!

提高绩效的关键考虑因素

在我们选择 RAG 还是 Fintuning 之前,我们应该从某些方面评估我们的 LLM 项目的要求并问自己几个问题。

我们的用例是否需要访问外部数据源?

在选择微调 LLM 还是使用 RAG 时,一个关键考虑因素是应用程序是否需要访问外部数据源。如果答案是肯定的,那么 RAG 可能是更好的选择。

从定义上讲,RAG 系统旨在通过从知识源检索相关信息然后再生成响应来增强 LLM 的功能。这使得该技术非常适合需要查询数据库、文档或其他结构化/非结构化数据存储库的应用程序。可以优化检索器和生成器组件以利用这些外部源。

相比之下,虽然可以对 LLM 进行微调以学习一些外部知识,但这样做需要来自目标域的大量带标签的问答对数据集。此数据集必须随着基础数据的变化而更新,因此对于经常变化的数据源来说并不实用。微调过程也没有明确模拟查询外部知识所涉及的检索和推理步骤。

总而言之,如果我们的应用程序需要利用外部数据源,使用 RAG 系统可能会比仅通过微调来“吸收”所需知识更有效、更具可扩展性。

我们是否需要修改模型的行为、写作风格或特定领域的知识?

需要考虑的另一个非常重要的方面是我们需要模型在多大程度上调整其行为、写作风格或为特定领域的应用程序定制其响应。

微调的优势在于它能够根据特定的细微差别、语调或术语调整 LLM 的行为。如果我们希望模型听起来更像医学专业人士、以诗意的风格写作或使用特定行业的术语,那么对特定领域的数据进行微调可以让我们实现这些定制。这种影响模型行为的能力对于与特定风格或领域专业知识保持一致至关重要的应用程序至关重要。

RAG 虽然在整合外部知识方面功能强大,但主要侧重于信息检索,本身并不会根据检索到的信息调整其语言风格或领域特异性。它会从外部数据源提取相关内容,但可能无法展现微调模型可以提供的定制细微差别或领域专业知识。

因此,如果我们的应用程序需要专业的写作风格或与特定领域的术语和惯例深度契合,微调是实现这种契合的更直接途径。它提供了与特定受众或专业领域真正产生共鸣所需的深度和定制性,确保生成的内容真实可信且信息量丰富。

快速回顾

在决定使用哪种方法来提高 LLM 应用程序的性能时,这两个方面是迄今为止最重要的考虑因素。有趣的是,在我看来,它们是正交的,可以独立使用(也可以组合使用)。




然而,在深入研究用例之前,在选择方法之前我们还应该考虑一些关键方面:

抑制幻觉有多重要?

LLM 的缺点之一是容易产生幻觉——编造毫无现实依据的事实或细节。这在注重准确性和真实性的申请中可能会带来很大问题。

微调可以将模型扎根于特定领域的训练数据,在一定程度上有助于减少幻觉。然而,面对不熟悉的输入,模型仍可能会编造反应。需要对新数据进行重新训练,以不断减少错误编造。

相比之下,RAG 系统本质上不太容易产生幻觉,因为它们将每个响应都建立在检索到的证据上。在生成器构建答案之前,检索器会从外部知识源中识别相关事实。此检索步骤充当事实核查机制,降低了模型的虚构能力。生成器被限制为合成由检索到的上下文支持的响应。

因此,在抑制谎言和虚构至关重要的应用中,RAG 系统提供了内置机制来最大限度地减少幻觉。在生成响应之前检索支持证据使 RAG 在确保事实准确和真实的输出方面具有优势。

有多少标记的训练数据可用?

在 RAG 和微调之间做出选择时,需要考虑的一个关键因素是我们可掌握的领域或任务特定的标记训练数据的数量。

对 LLM 进行微调以适应特定任务或领域在很大程度上取决于可用标记数据的质量和数量。丰富的数据集可以帮助模型深入了解特定领域的细微差别、复杂性和独特模式,从而使其能够生成更准确、更符合上下文的响应。但是,如果我们使用的数据集有限,微调带来的改进可能微不足道。在某些情况下,数据集不足甚至可能导致过度拟合,即模型在训练数据上表现良好,但在处理看不见的或现实世界的输入时会遇到困难。

相反,RAG 系统独立于训练数据,因为它们利用外部知识源来检索相关信息。即使我们没有大量标记的数据集,RAG 系统仍然可以通过访问和整合来自其外部数据源的见解来胜任。检索和生成的结合确保系统保持知情,即使特定领域的训练数据稀疏。

本质上,如果我们拥有大量标记数据,能够捕捉到该领域的复杂性,那么微调可以提供更具针对性和更精细的模型行为。但在此类数据有限的情况下,RAG 系统提供了一种强大的替代方案,通过其检索功能确保应用程序始终了解数据并了解上下文。

数据有多静态/动态?

在 RAG 和微调之间进行选择时,需要考虑的另一个基本方面是数据的动态特性。数据更新的频率是多少?模型保持最新状态的重要性有多大?

在特定数据集上对 LLM 进行微调意味着模型的知识在训练时成为该数据的静态快照。如果数据频繁更新、更改或扩展,这可能会很快导致模型过时。为了在如此动态的环境中保持 LLM 的最新状态,我们必须经常对其进行重新训练,这个过程既耗时又耗资源。此外,每次迭代都需要仔细监控,以确保更新后的模型在不同场景中仍然表现良好,并且没有产生新的偏见或理解上的差距。

相比之下,RAG 系统在动态数据环境中具有先天优势。它们的检索机制不断查询外部来源,确保它们提取的用于生成响应的信息是最新的。随着外部知识库或数据库的更新,RAG 系统无缝集成这些变化,无需频繁重新训练模型即可保持其相关性。

总而言之,如果我们要应对快速发展的数据格局,RAG 提供的灵活性是传统微调难以比拟的。通过始终保持与最新数据的联系,RAG 可确保生成的响应与当前信息状态保持一致,使其成为动态数据场景的理想选择。

我们的 LLM 应用程序需要有多透明/可解释?

最后要考虑的方面是我们需要了解模型决策过程的程度。

LLM 的微调功能非常强大,但它就像一个黑匣子,使得其响应背后的推理更加不透明。随着模型从数据集中吸收信息,辨别每个响应背后的确切来源或推理变得具有挑战性。这可能会让开发人员或用户难以信任模型的输出,尤其是在关键应用中,理解答案背后的“原因”至关重要。

另一方面,RAG 系统提供了仅在微调模型中通常不具备的透明度。鉴于 RAG 的两步性质(检索和生成),用户可以窥视该过程。检索组件允许检查哪些外部文档或数据点被选为相关。这提供了有形的证据或参考线索,可以对其进行评估以了解响应的基础。在需要高度责任感的应用程序中,或者当需要验证生成内容的准确性时,将模型的答案追溯到特定数据源的能力可能非常有价值。

从本质上讲,如果透明度和解释模型响应基础的能力是优先事项,那么 RAG 具有明显的优势。通过将响应生成分解为不同的阶段并允许深入了解其数据检索,RAG 可以提高对其输出的信任度和理解度。

概括

考虑到这些因素,在 RAG 和微调之间做出选择变得更加直观。如果我们需要倾向于获取外部知识并重视透明度,RAG 就是我们的首选。另一方面,如果我们使用的是稳定的标记数据,并旨在使模型更贴近特定需求,微调是更好的选择。




在下一节中,我们将看到如何根据这些标准评估流行的 LLM 用例。

使用案例

让我们看一些常见的用例以及如何使用上述框架来选择正确的方法:

总结(在专业领域和/或特定风格)

1. 需要外部知识?对于以以前的摘要风格进行总结的任务,主要数据源将是以前的摘要本身。如果这些摘要包含在静态数据集中,则几乎不需要连续的外部数据检索。但是,如果有一个经常更新的动态摘要数据库,并且目标是不断使样式与最新条目保持一致,那么 RAG 可能在这里很有用。

2. 需要模型调整?此用例的核心在于适应专业领域或特定的写作风格。微调特别擅长捕捉文体细微差别、音调变化和特定领域词汇,使其成为此维度的最佳选择。

3. 尽量减少幻觉至关重要?幻觉在大多数 LLM 应用中都是有问题的,包括总结。然而,在这个用例中,要总结的文本通常作为上下文提供。与其他用例相比,这使得幻觉不那么令人担忧。源文本限制了模型,减少了想象的捏造。因此,虽然事实准确性总是可取的,但考虑到上下文基础,抑制幻觉对于总结来说优先级较低。

4. 有可用的训练数据吗?如果有大量以前的摘要,并且这些摘要的标签或结构可以让模型从中学习,那么微调就是一个非常有吸引力的选择。另一方面,如果数据集有限,并且我们依靠外部数据库进行风格对齐,那么 RAG 可以发挥作用,尽管它的主要优势不是风格调整。

5. 数据有多动态?如果以前的摘要数据库是静态的或很少更新,微调后的模型知识可能会在更长的时间内保持相关性。但是,如果摘要经常更新,并且模型需要不断与最新的风格变化保持一致,RAG 可能会因其动态数据检索功能而具有优势。

6. 需要透明度/可解释性?这里的主要目标是风格一致,因此特定摘要风格背后的“原因”可能不像其他用例那样重要。也就是说,如果需要追溯并了解哪些先前的摘要影响了特定输出,RAG 会提供更多的透明度。不过,这可能是此用例的次要问题。

建议:对于此用例,微调似乎是更合适的选择。主要目标是风格一致,这是微调大放异彩的维度。假设有大量以前的摘要可供训练,微调 LLM 将允许深度适应所需的风格,捕捉领域的细微差别和复杂性。但是,如果摘要数据库极其动态,并且追溯影响很有价值,则可以考虑采用混合方法或倾向于 RAG。

关于组织知识(即外部数据)的问答系统

1. 需要外部知识?依赖组织知识库的问答系统本质上需要访问外部数据,在本例中,即组织的内部数据库和文档存储。系统的有效性取决于它从这些来源挖掘和检索相关信息以回答查询的能力。鉴于此,RAG 是此维度的更合适选择,因为它旨在通过从知识源检索相关数据来增强 LLM 功能。

2. 需要调整模型?根据组织及其领域,可能需要模型与特定术语、语气或惯例保持一致。虽然 RAG 主要关注信息检索,但微调可以帮助 LLM 调整其响应以适应公司的内部用语或其领域的细微差别。因此,对于这个维度,根据具体要求,微调可能会发挥作用。

3. 尽量减少幻觉至关重要?由于 LLM 的知识截断,幻觉是此用例的主要问题。如果模型无法根据训练数据回答问题,它几乎肯定会(部分或全部)恢复为编造一个看似合理但不正确的答案。

4. 有可用的训练数据吗?如果组织拥有一个包含先前回答过的问题的结构化和标记数据集,这可以支持微调方法。但是,并非所有内部数据库都经过标记或结构化以用于训练目的。在数据没有整齐标记或主要重点是检索准确和相关的答案的情况下,RAG 能够利用外部数据源而无需大量标记数据集,这使其成为一个引人注目的选择。

5. 数据有多动态?组织中的内部数据库和文档存储可能高度动态,经常更新、更改或添加。如果这种动态是组织知识库的特征,那么 RAG 就具有明显的优势。它不断查询外部来源,确保其答案基于最新的可用数据。微调需要定期重新训练才能跟上这种变化,这可能是不切实际的。

6. 需要透明度/可解释性?对于内部应用,尤其是在金融、医疗保健或法律等领域,了解答案背后的原因或来源至关重要。由于 RAG 提供了检索和生成的两步流程,因此它本质上可以更清楚地了解哪些文档或数据点影响了特定答案。对于可能需要验证或进一步调查某些答案来源的内部利益相关者来说,这种可追溯性非常宝贵。

建议:对于此用例,RAG 系统似乎是更合适的选择。考虑到需要动态访问组织不断发展的内部数据库以及回答过程可能要求透明,RAG 提供的功能可以很好地满足这些需求。但是,如果重点是定制模型的语言风格或适应特定领域的细微差别,则可以考虑加入微调元素。

客户支持自动化(即自动聊天机器人或帮助台解决方案,为客户查询提供即时响应)

1. 需要外部知识?客户支持通常需要访问外部数据,尤其是在处理产品详细信息、特定于帐户的信息或故障排除数据库时。虽然许多查询可以用一般知识来解决,但有些查询可能需要从公司数据库或产品常见问题解答中提取数据。在这里,RAG 从外部来源检索相关信息的能力将大有裨益。然而,值得注意的是,许多客户支持互动也基于预定义的脚本或知识,可以通过微调模型有效地解决这些问题。

2. 需要模型调整?客户互动需要一定的语气、礼貌和清晰度,并且可能还需要公司特定的术语。微调对于确保 LLM 适应公司的语气、品牌和特定术语特别有用,从而确保一致且与品牌一致的客户体验。

3. 减少幻觉至关重要?对于客服聊天机器人来说,避免虚假信息对于维护用户信任至关重要。单靠微调会让模型在面对不熟悉的查询时容易产生幻觉。相比之下,RAG 系统通过将响应建立在检索到的证据上来抑制捏造。这种对来源事实的依赖使 RAG 聊天机器人能够最大限度地减少有害的虚假信息,并在准确性至关重要的情况下为用户提供可靠的信息。

4. 训练数据可用吗?如果一家公司有客户互动的历史,那么这些数据对于微调来说可能是无价之宝。丰富的先前客户查询及其解决方案的数据集可用于训练模型,以便将来处理类似的互动。如果此类数据有限,RAG 可以通过从产品文档等外部来源检索答案来提供后备方案。

5. 数据有多动态?客户支持可能需要解决有关新产品、更新政策或更改服务条款的查询。在产品系列、软件版本或公司政策频繁更新的情况下,RAG 能够动态地从最新文档或数据库中提取数据,这是非常有利的。另一方面,对于更静态的知识领域,微调就足够了。

6. 需要透明度/可解释性?虽然透明度在某些领域必不可少,但在客户支持方面,主要关注的是准确、快速和礼貌的回应。然而,对于内部监控、质量保证或解决客户纠纷,对答案来源具有可追溯性可能会有所帮助。在这种情况下,RAG 的检索机制提供了额外的透明度。

建议:对于客户支持自动化,混合方法可能是最佳选择。微调可以确保聊天机器人与公司的品牌、语气和一般知识保持一致,处理大多数典型的客户查询。然后,RAG 可以作为一个补充系统,介入更动态或更具体的查询,确保聊天机器人可以从最新的公司文档或数据库中提取信息,从而最大限度地减少幻觉。通过整合这两种方法,公司可以提供全面、及时且与品牌一致的客户支持体验。




需要考虑的其他方面

如上所述,在 RAG 和微调(或两者兼有)之间做出选择时,还应考虑其他因素。我们不可能深入研究它们,因为它们都是多方面的,并且没有像上面的某些方面那样有明确的答案(例如,如果没有训练数据,微调就根本不可能)。但这并不意味着我们应该忽视它们:

可扩展性

随着组织的发展和需求的演变,所讨论的方法的可扩展性如何?鉴于 RAG 系统的模块化特性,它可能提供更直接的可扩展性,尤其是在知识库增长的情况下。另一方面,频繁微调模型以适应不断扩大的数据集可能会对计算能力造成要求。

延迟和实时要求

如果应用程序需要实时或近实时响应,请考虑每种方法引入的延迟。RAG 系统涉及在生成响应之前检索数据,与基于内部知识生成响应的微调 LLM 相比,可能会引入更多延迟。

维护和支持

考虑长远。哪个系统更符合组织提供一致维护和支持的能力?RAG 可能需要维护数据库和检索机制,而微调则需要持续的再培训工作,尤其是在数据或需求发生变化时。

稳健性和可靠性

每种方法对不同类型的输入有多强健?虽然 RAG 系统可以从外部知识源获取信息并可能处理各种各样的问题,但经过良好微调的模型可能会在某些领域提供更高的一致性。

道德和隐私问题

存储和检索外部数据库可能会引发隐私问题,尤其是在数据敏感的情况下。另一方面,经过微调的模型虽然不查询实时数据库,但仍可能根据其训练数据产生输出,这可能会产生自身的伦理影响。

与现有系统集成

组织可能已经拥有某些基础设施。RAG 的兼容性或与现有系统(无论是数据库、云基础设施还是用户界面)的微调可能会影响选择。

用户体验

考虑最终用户及其需求。如果他们需要详细的、有参考依据的答案,RAG 可能是更好的选择。如果他们看重速度和特定领域的专业知识,微调模型可能更合适。

成本

微调可能会很昂贵,尤其是对于非常大的模型。但在过去的几个月里,由于QLoRA等参数高效技术,成本已大幅下降。设置 RAG 可能是一项巨大的初始投资——涵盖集成、数据库访问,甚至许可费用——但还需要考虑定期维护该外部知识库。

复杂

微调很快就会变得复杂。虽然许多提供商现在提供一键式微调,我们只需要提供训练数据,但跟踪模型版本并确保新模型仍然全面表现良好是一项挑战。另一方面,RAG 也会很快变得复杂。它需要设置多个组件,确保数据库保持最新,并确保各个部分(如检索和生成)恰到好处地组合在一起。

结论

正如我们所探讨的,在 RAG 和微调之间进行选择需要对 LLM 应用程序的独特需求和优先级进行细致的评估。没有一刀切的解决方案;成功在于将优化方法与任务的具体要求相结合。通过评估关键标准(对外部数据的需求、调整模型行为、训练数据可用性、数据动态、结果透明度等),组织可以做出明智的决定,选择最佳前进道路。在某些情况下,利用 RAG 和微调的混合方法可能是最佳选择。

关键是避免假设一种方法普遍优越。与任何工具一样,它们的适用性取决于手头的工作。方法和目标不一致会阻碍进展,而正确的方法会加速进展。当一个组织评估促进 LLM 应用的选项时,它必须抵制过度简单化,不要将 RAG 和微调视为可以互换的,而要选择能够使模型发挥其功能的工具,以满足用例的需求。这些方法释放的可能性是惊人的,但仅有可能性是不够的——执行才是一切。工具就在这里——现在让我们开始使用它们。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询