未来 AI 在企业应用中的重心

news2024/12/23 10:58:51

1. LLM 中精度、参数、数据、性能、以及成本之间的权衡是什么?

在大型语言模型(LLM, Large Language Models)中,精度、参数数量、训练数据量、性能和成本之间的权衡是一个复杂且多维度的问题。以下是这些因素之间关系的简要分析:

  • 精度 vs 参数数量
    通常情况下,增加模型的参数数量可以提升模型的表达能力,从而提高其在各种任务上的表现或精度。然而,随着参数数量的增长,模型可能会过拟合训练数据,导致在未见过的数据上表现不佳。因此,找到合适的参数规模对于达到最佳精度至关重要。

  • 参数数量 vs 成本
    模型的参数越多,所需的计算资源就越多,这不仅包括训练阶段的成本,还包括推理时的运算需求。大规模的参数会增加存储、带宽以及计算设备的需求,直接提高了硬件采购、电力消耗等运营成本。

  • 数据 vs 精度/性能
    更高质量和更大规模的训练数据可以帮助模型学习到更丰富的语言特征,进而提高其精度和泛化能力。但是,获取大量标注良好的数据本身也是一笔不小的成本,并且处理海量数据也会带来额外的技术挑战。

  • 性能 vs 成本
    性能通常指的是模型运行的速度和效率,比如响应时间、吞吐量等。为了优化性能,可能需要采用特定的硬件加速器(如GPU、TPU),或者对模型架构进行剪枝、量化等操作以减少参数量而不显著降低精度。然而,高性能往往伴随着更高的前期投资和技术难度。

  • 综合考量
    在实际应用中,开发者需要根据具体的应用场景来平衡上述各个因素。例如,在资源受限的环境中部署LLM时,可能更注重成本效益;而在追求极致用户体验的应用里,则可能会优先考虑性能和精度。此外,随着技术的发展,新的算法和技术(如迁移学习、自适应压缩等)也在不断涌现,为这种权衡提供了更多的灵活性。

因此,针对不同的应用场景,设计者需要仔细评估,并选择最合适的模型尺寸、训练策略及部署方案,确保在满足业务需求的同时控制好成本。

2. 精度的缩放定律(Scaling Laws for Precision)

  • 痛点:
    • 现有缩放定律的不足
      现有的 LLM 缩放定律主要关注模型参数量和数据集大小,忽略了训练和推理精度对模型性能和成本的影响;

    • 低精度训练和推理的趋势
      LLM 训练和推理正朝着低精度方向发展(例如 BF16、FP8、甚至更低的精度),但缺乏对低精度下性能和成本权衡的系统性研究;

    • 低精度带来的挑战
      研究低精度下的缩放定律具有挑战性,因为既要考虑低精度训练和量化的具体实现细节,又要找到普适的函数形式。

精度的缩放定律(Scaling Laws for Precision),这篇论文研究了低精度训练和推理对大型语言模型(LLM)的影响。通过大量的实验,建立了精度感知型缩放定律,为低精度训练和推理提供了理论指导,并指出了现有实践中的一些潜在问题,例如盲目追求极低精度训练和过度训练带来的负面影响。 论文的贡献在于它系统地研究了精度、参数量和数据量之间的复杂相互作用,为未来的 LLM 训练和部署提供了重要的参考。

2.1. 后训练量化对损失的影响

在这里插入图片描述

2.1.1. 后训练量化(Post-Training Quantization, PTQ)

后训练量化(PTQ), 是指在模型完成训练之后,将模型的权重和激活值从高精度(例如32位浮点数)转换为低精度(如8位整数或更低)的一种技术。这种方法的主要目的是减少模型的存储需求、加快推理速度,并降低计算硬件的成本,同时尽量保持模型的预测性能。

  • 量化过程

    • 权重量化
      将训练好的模型权重从高精度格式转换为低精度格式。这通常涉及到确定一个映射规则,比如线性缩放,以确保低精度表示尽可能地接近原始高精度值。
    • 激活量化
      除了权重,输入数据经过网络各层产生的激活值也可以被量化。这对于某些类型的网络(如卷积神经网络)尤其重要,因为它们的激活值可以占用大量内存。
  • 校准(Calibration)
    在量化过程中,为了最小化因量化引入的误差,通常需要使用一小部分验证集来调整量化参数。这个过程称为校准。通过校准,可以找到最佳的量化范围和尺度因子,使得量化后的模型能够保留尽可能多的原始信息。

  • 成本效益
    对于资源受限的环境(如移动设备或边缘计算),后训练量化可以在不显著牺牲模型性能的情况下大幅降低计算资源的需求,提高部署效率。

  • 性能优化
    通过适当的量化策略,可以在保证一定准确性的前提下显著提升推理速度,这对于实时应用尤为重要。

后训练量化是一种有效的方法,用于在不影响模型核心功能的前提下,通过减少模型大小和计算复杂度来优化模型的部署和执行。然而,它也带来了新的挑战,特别是在处理大规模预训练语言模型时,如何平衡数据规模与量化精度之间的关系成为了关键问题。

2.1.2. 插图解读

插图展示了一个固定大小的模型在不同数据预算(即训练时的token数量)下使用BF16(Brain Floating Point 16-bit,一种16位浮点数格式)进行训练,并在训练结束后对权重进行量化。

  • 横坐标:横轴为 token/parameters ratio ((D/N)),其中 (D) 是训练数据的 token 数量,(N) 是模型参数的数量;

    • Token:指的是语言模型处理的最小单位,通常是一个单词、子词或字符。在自然语言处理任务中,输入文本会被分割成一系列 tokens。
    • Parameters:指的是模型中的权重参数数量,决定了模型的复杂度和表达能力。
    • Token/Parameters Ratio:因此,这个比率反映了相对于模型参数数量而言,用于训练的数据量有多大。较高的比率意味着每单位参数有更多的数据可供学习;较低的比率则意味着相对较少的数据对应较多的参数。
  • 纵坐标:表示损失值(loss),它衡量了模型预测结果与真实标签之间的差异。

  • 趋势线:“INT3”, “INT4”, “INT5”, “INT6” 和 “No PTQ” 描述了不同量化策略对模型性能的影响。具体含义如下:

    • INT3:表示将模型的权重、激活或其他参数量化为3位整数格式。每个数值被限制在一个较小的离散范围内,通常是从 (-2^{(3-1)}) 到 (2^{(3-1)} - 1),即从 -4 到 +3;
    • INT4:表示4位整数格式,范围是从 (-2^{(4-1)}) 到 (2^{(4-1)} - 1),即从 -8 到 +7;
    • INT5:表示5位整数格式,范围是从 (-2^{(5-1)}) 到 (2^{(5-1)} - 1),即从 -16 到 +15;
    • INT6:表示6位整数格式,范围是从 (-2^{(6-1)}) 到 (2^{(6-1)} - 1),即从 -32 到 +31;
    • No PTQ:代表没有进行后训练量化(Post-Training Quantization)。这意味着模型在训练结束后直接使用其原始的高精度格式(例如 FP16 或 BF16)进行推理,而没有经过任何量化处理。这通常是性能最高的选项,因为它保留了所有原始信息,但也意味着更高的计算成本和更大的模型尺寸。
    • 这些精度级别的选择反映了不同的量化程度,较低的位宽(如 INT3 或 INT4)可以显著减少模型的存储需求和推理时的计算量,但可能会导致性能下降。较高的位宽(如 INT5 或 INT6)则提供了一个折衷方案,在保持一定性能的同时仍然减少了资源消耗。

2.1.3. 研究发现

  • 随着 token/parameters ratio 的增加,后训练量化(PTQ)带来的性能退化也变得更加显著。这意味着当模型在大量数据上训练时,如果随后对其进行量化处理,那么量化所导致的性能损失会更大;

  • 对于某些 token/parameters ratio,即使增加了训练数据,量化后的损失也可能不降反升,这提示存在一个临界点,超过这一点额外的数据反而有害,导致性能下降。;

  • 性能对比
    通过展示不同量化级别下的模型损失或准确率,可以直观地看到随着量化精度降低,模型性能的变化趋势。

  • 退化分析
    特别对于后训练量化(PTQ),图表可能显示了随着数据量增加,低精度量化(如 INT3 或 INT4)引起的性能退化更为明显,这是由于更多数据使模型压缩更多信息到其权重中,从而使得量化带来的扰动对模型表现影响更大。

  • 对抗过拟合的效果
    研究表明,在较低精度下训练的模型可能会变得对“量化噪声”更加鲁棒,这意味着即使在量化后,这些模型的表现也可能比那些在较高精度下训练的模型要好。这是因为低精度训练迫使模型学习到更鲁棒的特征表示,从而减少了量化带来的负面影响。

  • 损失函数的影响
    根据论文中的发现,当模型训练使用的数据量增加时,后训练量化导致的性能下降也会变得更加明显。这是因为随着更多数据的加入,模型会压缩更多信息到其权重中,因此对权重进行量化时所造成的扰动会对模型表现产生更大的负面影响。具体来说,公式 δ P T Q ( N , D , P p o s t ) = C T ( D N e f f ) γ e − P p o s t / γ p o s t \delta_{PTQ}(N, D, P_{post}) = C_T \left(\frac{D}{N_{eff}}\right)^γ e^{-P_{post}/γ_{post}} δPTQ(N,D,Ppost)=CT(NeffD)γePpost/γpost 描述了这种退化现象,其中 δ P T Q δ_{PTQ} δPTQ 表示由后训练量化引起的性能下降, N e f f N_{eff} Neff 是考虑了精度影响的有效参数数量。

2.1.4. 实践意义

  • 选择合适的量化精度对于优化模型部署至关重要。
  • 虽然低精度量化能够显著降低计算资源需求,但在某些情况下可能导致性能下降。
  • 实践中需要根据具体应用场景来决定最适宜的量化策略,以实现性能和效率的最佳平衡。
  • “No PTQ” 作为一个基准,帮助评估量化过程对模型性能的实际影响。

2.2. 低精度训练的计算最优性

不同精度格式对模型训练效果的影响,更重要的是揭示了在低精度环境下训练大型语言模型时如何平衡模型大小、训练精度和计算资源之间的关系。

在这里插入图片描述

2.2.1. 插图解读

  • 横坐标:模型大小(参数数量)

    • 横轴表示模型的大小,即模型中的参数数量 (N)。较大的模型通常具有更多的参数,可以捕捉更复杂的模式,但也需要更多的计算资源来进行训练和推理;
    • “FP4”, “FP6”, “FP8”, “BF16”, 和 “FP32” 代表了不同的数值精度格式,用于描述模型训练和推理过程中使用的浮点数表示方法。这些格式决定了数据在计算机内存中的存储方式以及计算过程中的精度水平。以下是每种格式的具体含义:
      • FP4(4-bit Floating Point):4位浮点数格式,极其紧凑,几乎只能表示非常有限的数值范围。
        • 主要用于极端低功耗或高度受限环境下,例如某些边缘设备或移动应用;
      • FP6(6-bit Floating Point):6位浮点数格式,比 FP8 更加紧凑,牺牲更多精度换取更高的计算速度和更低的资源消耗。
        • 较少见,可能用于特定优化或实验性设置中;
      • FP8(8-bit Floating Point):8位浮点数格式,通常具有较小的指数和尾数位数,旨在进一步减少计算量和存储需求。
        • 适用于对精度要求不是特别高的场景,可以大幅降低计算成本并提高效率;
      • BF16(Brain Floating Point 16-bit):一种简化版本的16位浮点数格式,由 Google 提出,专门用于加速机器学习任务。它保留了与 FP32 相同的8位指数但减少了尾数位数到7位。
        • 在保持足够精度的同时显著减少了计算资源需求,成为现代深度学习硬件(如TPU)上的常用格式;
      • FP32(32-bit Floating Point): 标准的单精度浮点数格式,由 IEEE 754 标准定义,包含1位符号、8位指数和23位尾数(总计32位)。
        • 广泛应用于传统深度学习模型的训练和推理,提供较高的数值精度和广泛的动态范围。
  • 纵坐标:损失值(Loss)

    • 纵轴表示模型的损失值 (L),这是衡量模型预测结果与真实标签之间差异的一个指标。较低的损失值意味着模型的预测更加准确。
    • 图中的纵坐标展示了在不同条件下(如不同精度)训练后的模型损失。较低的损失值对应更好的性能。
  • 图表表明,使用不同精度进行训练的结果,展示了随着模型大小变化时,不同精度训练对损失的影响在给定的计算预算下,通过降低训练精度可以实现更优的计算效率。具体来说,当模型足够大时,在较低精度下训练可能比在高精度下训练更加划算,因为这能有效地利用计算资源,同时保持良好的性能表现。对于较小的模型,低精度训练可能不会显著影响性能;但对于较大的模型,低精度训练可能导致更大的损失。

2.2.2. 研究发现

  • 不同精度下的计算最优性

    • 图表展示了不同精度格式 (如 FP4, FP6, FP8, BF16, FP32) 对模型训练损失的影响。随着模型大小的增加,当模型足够大时,在较低精度下进行训练可以实现更优的计算效率,因为低精度减少了计算资源的需求,同时保持了良好的性能表现。

    • 展示了不同精度格式对模型训练效果的影响,更重要的是揭示了在低精度环境下训练大型语言模型时如何平衡模型大小、训练精度和计算资源之间的关系。

    • 对于较大模型,在较低精度下训练可能是计算上最优化的选择,因为它可以在不影响性能的前提下大幅减少计算成本。

    • 存在一个最优的精度水平,模型能够在计算效率和性能之间找到最佳平衡点。

    • 精度选择依赖于具体的模型和数据规模,需要针对不同情况灵活调整。

  • 有效参数数量 N e f f N_{eff} Neff

计算最优性的关键在于有效参数数量 N e f f N_{eff} Neff,它考虑了精度对参数效率的影响。公式 [ 1 − e − P / γ ˉ ] \left[1 - e^{-P/\bar{\gamma}}\right] [1eP/γˉ] 描述了精度 (P) 对有效参数数量的影响,随着精度的降低, N e f f N_{eff} Neff 减少,导致性能下降。然而,对于足够大的模型,即使 N e f f N_{eff} Neff 减少,低精度训练仍然可能提供计算上的优势。

2.2.3. 实践意义

  • 优化模型部署
    这些发现为设计和部署大型语言模型提供了重要的指导。通过理解不同精度格式对模型性能的影响,工程师可以选择最适合具体应用场景的精度设置,从而在性能和效率之间找到最佳平衡。

  • 降低成本
    低精度训练和推理可以在不显著牺牲性能的前提下大幅减少计算资源需求。这对于资源受限的环境(如移动设备或边缘计算)尤为重要,可以帮助降低硬件成本并提高能效。

  • 灵活性与适应性
    研究结果强调了根据具体任务需求灵活调整模型配置的重要性。不同的应用可能需要不同的精度水平,因此了解这些权衡有助于更好地定制模型,以满足特定的任务要求。

  • 未来研究方向
    图表中的发现也为未来的深度学习研究指明了方向。例如,探索更高效的量化方法、开发新的硬件支持低精度运算,以及进一步优化大规模语言模型的训练策略等。

2.3. 综合解读

这两个图表共同揭示了精度选择对于语言模型训练和推理的重要性。

  • 图1 强调了后训练量化与数据量之间的微妙关系,指出了过度训练可能导致的问题;
  • 图2 则提出了关于如何在不同精度下高效地训练大型模型的新见解。
  • 这些结果对于指导未来的大规模深度学习实践具有重要意义,特别是在考虑计算成本和模型性能平衡的时候。

2.4. 联合优化函数

论文中描述了联合优化 (N) (参数数量)、(D)(数据量)和 (P)(精度)时的损失函数,具体表达式为:
L ( N , D , P ) = A N − α + B D − β + C T N γ N D γ D e − P / γ L(N, D, P) = AN^{-α} + BD^{-β} + CT \frac{N^{γ_N}}{D^{γ_D}} e^{-P/γ} L(N,D,P)=ANα+BDβ+CTDγDNγNeP/γ

2.4.1. 公式解读

  • A , B , C , T A, B, C, T A,B,C,T:这些都是常数项,代表了模型性能与参数、数据和精度之间的关系强度。不同的模型或任务可能有不同的这些常数值。

  • α , β , γ N , γ D , γ α, β, γ_N, γ_D, γ α,β,γN,γD,γ:这些都是经验拟合得到的指数因子,用来刻画各个变量对总损失的影响程度。例如,(α) 和 (β) 分别决定了参数数量 (N) 和数据量 (D) 对损失的影响大小。

  • A N − α AN^{-α} ANα :这部分表示的是由于参数数量 (N) 减少而引起的损失。随着 (N) 的增大,模型能够捕捉更复杂的模式,从而减少损失;反之,如果 (N) 较小,则可能导致欠拟合,增加损失。

  • B D − β BD^{-β} BDβ:这部分反映了数据量 (D) 对损失的影响。更多的训练数据可以帮助模型更好地泛化,降低过拟合的风险,因此 (D) 越大,损失越低。

  • C T N γ N D γ D e − P / γ CT \frac{N^{γ_N}}{D^{γ_D}} e^{-P/γ} CTDγDNγNeP/γ:这部分是关于精度 (P) 的项,它考虑到了训练期间低精度效果作为独立且累积的乘法噪声,以及包含后训练量化退化。随着精度 (P) 的降低,这一项会迅速增长,意味着较低的精度会导致显著的性能下降。这里的 e − P / γ e^{-P/γ} eP/γ 表示了精度 (P) 对损失的指数影响,即精度越低,损失越大。

  • 约束条件 (C = NPD):这个等式确保了总的计算预算 (C) 是固定的,其中 (N) 为参数数量,(P) 为精度,(D) 为数据量。这意味着在进行优化时,必须保持这三者的乘积不变。

2.4.2. 总结

该公式试图捕捉到在固定计算预算下,如何通过调整参数数量、数据量和精度来最小化模型的总体损失。它不仅考虑了参数规模和数据量对模型性能的传统影响,还特别加入了精度这一因素,强调了低精度训练和推理带来的挑战及其对模型最终表现的影响。通过理解并应用这个公式,研究者可以更好地设计和调整大型语言模型,以实现性能和成本之间的最佳平衡。

3. 选择正确的生成式 AI 的方法指南

对于 LLM 的应用,要想获得一个可用 AI 模型的解决方法,除了自己训练一个模型,通常有以下三种方法:

  • 提示工程(Prompt Engineering)

提示工程是指设计和优化输入给大型语言模型(LLM)的文本提示(prompt),以引导模型产生期望的输出。这种方法依赖于精心构造的指令或上下文来影响模型的行为。提示可以非常简单,如直接问一个封闭式问题,也可以复杂到包含多步骤指示、样例和具体格式要求。提示工程师会试验不同的提示结构,调整措辞,甚至添加额外的信息或约束条件,以便获得更精确、有用或符合预期的回答。

  • 检索增强生成(Retrieval Augmented Generation, RAG)

RAG是一种结合了信息检索(IR)技术和语言生成的方法。在这种方案中,系统首先根据用户的查询从大量文档或数据库中检索相关信息片段,然后使用这些片段作为上下文来辅助语言模型生成更加准确和相关的响应。通过这种方式,RAG能够提供基于事实的答案,并且可以在一定程度上避免传统语言模型可能出现的“幻觉”问题——即生成与现实不符的内容。此外,RAG还可以提高模型对于特定领域知识的理解能力,因为它可以直接利用外部资源中的最新信息。

  • 微调(Fine-tuning)

微调是指在预训练好的大型语言模型基础上,针对特定任务或应用场景进行进一步训练的过程。预训练模型通常是在大规模通用语料库上训练得到的,而微调则是在较小规模但高度相关的目标域数据集上继续训练,从而使模型更好地适应特定的任务需求。例如,如果有一个用于医疗咨询的聊天机器人,可以通过微调让模型学习到更多关于医学术语、诊疗流程等专业知识。微调不仅可以改善模型性能,还能使其更贴近实际应用环境中的用户交互模式。

总结来说:

  • 提示工程:侧重于如何有效地构建输入给定模型的提示,以引导其生成理想的输出。
  • 检索增强生成: 则是通过引入外部信息源来增强语言生成的质量,确保回答既有关联性又基于事实。
  • 微调: 涉及对现有预训练模型进行再训练,以便它能更好地服务于某一特定用途或解决某一类问题。

每种方法都有其独特的优势,在实际应用中,它们往往会被组合使用,以达到最佳效果。

但这三种方法,以及直接自己训练模型,在精度、实施复杂度、实施成本、以及应用的灵活性上有哪些差异?

3.1. 精度比较

在这里插入图片描述

3.2. 实施复杂度

在这里插入图片描述

3.3. 实施成本

在这里插入图片描述

3.4. 实施效果

在这里插入图片描述

3.5. 应用灵活性

在这里插入图片描述

3.6. 应用总结

使用检索增强生成(Retrieval Augmented Generation (RAG)),可以在保持输出质量高的同时,获得最高程度的灵活性来更改不同组件(数据源、Embeddings、大模型、向量引擎)。

4. 寻找最佳RAG实践

检索增强生成(RAG)技术在整合最新信息、减轻幻觉以及提升响应质量方面表现出色,特别是在专业领域。尽管许多RAG方法被提出以通过查询依赖检索来增强大型语言模型,但这些方法仍面临复杂的实施和较长的响应时间问题。通常,RAG工作流涉及多个处理步骤,每个步骤可以通过不同的方式执行。

《Retrieval-Augmented Generation for Fact-Verified Question Answering》
探讨了现有的RAG方法及其潜在组合,以确定最佳RAG实践。通过大量实验,提出了一些部署RAG的策略,以平衡性能和效率。此外,还展示了多模态检索技术如何显著提高关于视觉输入的问题解答能力,并通过“检索即生成”策略加速多模态内容的生成。这对于开发更可靠的AI应用具有重要意义,也为未来的相关研究指明了方向。

4.1. RAG 的工作流

在这里插入图片描述

4.2. 嵌入模型选择

嵌入模型选择是构建检索增强生成(RAG)系统的一个关键环节。

嵌入模型的主要任务是将查询(用户的问题)和候选文档转换为低维向量空间中的表示,使得语义相似的内容在该空间中距离较近。一个好的嵌入模型应该能够在大规模数据集中快速找到与查询最相关的文档片段,并且这些片段应当包含有助于回答问题的事实信息。

选择合适的嵌入模型可以帮助确保RAG系统能够高效地从大量文档中提取出最有用的信息,从而提升整个问答系统的性能和可靠性。

4.2.1. 候选模型评估

为了选择最适合的嵌入模型,作者评估了几种不同的嵌入模型:

在这里插入图片描述

  • BAAI/bge-large-en

BAAI/bge-large-en 是由北京智源人工智能研究院(BAAI)开发的一个大型预训练语言模型。它基于Transformer架构,旨在提供高质量的英文文本表示。
适用于需要高质量英文文本表示的各种NLP任务,如问答系统、情感分析、机器翻译等。

  • LLM-Embedder

LLM-Embedder 是一个专注于为大型语言模型(LLM)生成高效文本嵌入的工具或库。它通常用于将长文本序列转换为固定长度的向量表示,以便于后续处理。
特别适合与大型语言模型配合使用,广泛应用于文本分类、聚类、相似度计算等领域。

  • Alibaba-NLP

Alibaba-NLP 是阿里巴巴集团推出的一系列自然语言处理工具和技术的集合,包括但不限于文本嵌入模型。该平台提供了多种预训练模型和服务,涵盖了多个语言和任务类型。
广泛应用于电商搜索、智能客服、内容推荐等多个领域,尤其擅长处理中文和其他亚洲语言的任务。

  • intfloat

intfloat 是一个专注于低精度量化技术的项目,旨在通过减少模型参数的位宽来降低计算成本,同时尽量保持模型性能。它不仅限于文本嵌入,还涉及图像和其他模态的数据。

适用于资源受限环境下的模型部署,如移动设备、边缘计算等,能够有效提升能效比。

  • sentence-transformers

sentence-transformers 是一个流行的Python库,专门用于生成句子级别的嵌入表示。它基于Transformers架构,并集成了多种预训练模型,如BERT、RoBERTa等。

广泛应用于文本相似度计算、信息检索、对话系统等多个领域,是构建NLP应用的理想选择。

  • thenlper

thenlper 是一个较为小众但功能强大的NLP工具包,专注于提高文本处理效率。它不仅提供了文本嵌入功能,还包括了其他实用的NLP工具,如分词、POS标注等。

适用于需要综合NLP能力的应用开发,如文本分析、数据挖掘等,尤其适合那些对文本处理效率有较高要求的场景。

  • jinaai

jinaai 是Jina AI公司推出的一个端到端的神经搜索引擎框架,支持多模态数据(文本、图像、音频等)的高效索引和检索。它内置了多种预训练模型,包括文本嵌入模型,简化了开发者的工作流程。

特别适合构建复杂的多模态搜索引擎,如跨媒体检索、智能推荐等,尤其是在需要高效处理大规模数据集的情况下表现出色。

4.2.2. 结果分析

在评估过程中,LLM-Embedder 与 BAAI/bge-large-en 取得了相当的结果,但是,前者的尺寸比后者小三倍,在性能和大小之间取得了平衡。因此选择 LLM-Embedder。

嵌入模型的选择直接影响到RAG系统的检索效率和质量,因此是一个非常重要的决策点。通过系统的比较和评估,确定了最适合当前任务的嵌入模型,也为未来的研究和发展提供了宝贵的经验和参考。

4.3. 向量数据库选择

向量数据库的选择是构建高效检索增强生成(RAG)系统的关键步骤之一。

选择向量数据库的主要目标是在保证检索质量的前提下,最大化查询效率,并最小化存储和计算资源的消耗。具体需求包括:

  • 高检索速度:能够在毫秒级别内返回最相关的文档片段。
  • 高检索精度:确保检索到的内容确实与用户提问高度相关。
  • 可扩展性:支持大规模数据集的索引和检索,适应不断增长的数据量。
  • 灵活性:能够根据不同的应用场景调整参数设置。

4.3.1. 候选数据库评估

为了找到最适合的向量数据库,作者评估了五种流行的开源工具和技术:

在这里插入图片描述

  • Weaviate:
    Weaviate 是一个模块化的、面向开发者的向量搜索引擎,支持分布式部署和多模态数据(文本、图像、音频等)的高效检索。它内置了多种预训练模型,并提供了灵活的API接口,方便用户集成到现有应用中,适合需要处理多样化数据类型的复杂应用。

  • Faiss(Facebook AI Similarity Search):
    Faiss 是由Facebook AI Research开发的一个高效向量搜索库,专为高维向量索引和相似度搜索设计。它提供了多种索引方法,如IVFADC、Flat等,以满足不同性能需求。是追求极致检索速度的选择。

  • Chroma:
    Chroma 是一个轻量级、高性能的向量数据库,专注于简化开发者体验。它内置了许多实用功能,如自动索引优化、批量插入支持等,使得向量数据管理更加便捷。因其简便的操作和出色的实时性能而受到青睐,尤其适合中小型项目。

  • Qdrant:
    Qdrant 是一个分布式向量搜索引擎,旨在提供高效的向量相似度搜索服务。它不仅支持标准的向量操作,还引入了一些高级特性,如混合查询、向量过滤等,增强了其适用性。引入了混合查询和向量过滤等高级特性,增加了检索逻辑的灵活性。

  • Milvus:
    Milvus 是一个开源的分布式向量搜索引擎,专注于解决大规模向量数据的高效存储和检索问题。它支持多种索引类型,并且可以通过插件机制轻松添加新的功能模块。凭借其强大的分布式架构和多引擎支持,在处理超大规模数据集方面表现出色。

4.3.2. 结果分析

通过对上述候选数据库的综合评估,研究者发现:

  • FAISS 在大多数情况下表现最佳,尤其是在需要高速检索的情况下。其原因在于FAISS专门为高维向量搜索优化,提供了多种索引方法来平衡速度和精度。

向量数据库的选择直接影响到RAG系统的检索效率和质量,因此是一个非常重要的决策点。通过系统的比较和评估,本研究不仅确定了最适合当前任务的向量数据库,也为未来的研究和发展提供了宝贵的经验和参考。选择合适的向量数据库可以帮助确保RAG系统能够高效地从大量文档中提取出最有用的信息,从而提升整个问答系统的性能和可靠性。此外,根据不同应用场景的特点灵活选择和配置向量数据库,可以进一步优化系统的性能和适用范围。

4.4. 结论

  • 结论:
    研究表明,通过整合检索技术和语言生成,可以显著改善问答系统的性能,尤其是在保证事实准确性方面。此外,这种方法还为构建更为可靠、透明的人工智能应用提供了新的思路。
  • 未来工作:
    进一步探索如何更好地融合不同类型的知识源,以及如何针对特定领域定制化检索策略。同时,还需要解决大规模部署时面临的效率和成本问题。

5. 结论

  • 本文试图从三篇文章出发,讨论大模型在应用中如何平衡:精度、效率、成本,从而为不同的应用形式提供选择的因素和指导;
  • 《精度的缩放定律》给出了模型训练过程中精度、效率、成本的预估模型;
  • 《选择正确的生成式 AI 的方法指南》,从精度、成本、实施复杂度、实施效果、以及灵活性,讨论了:Prompt、RAG、微调、重新训练的不同使用指南;
  • 《寻找最佳RAG实践》, 从 RAG 实践的角度出发,这里只讨论了我关心的 RAG 工作流中两个重要的关键组件:嵌入模型和向量数据库的选择;
  • 对于大多数企业来说,直接训练模型或者微调的成本、复杂度、要求都太高,因此工作的重点需要放在提示(Prompt)和 RAG 上,这样投入和产出比相对较高;
  • 企业的 AI 的应用的重点需要放在领域知识库的建立,并通过 RAG 提供领域内的专业服务;同时在技术上重点关注 RAG 中知识转换成向量的嵌入模型的使用,以及向量数据库的建立和检索。

6. 参考

  • Scaling Laws for Precision
  • Vikesh Pandey:Should you Prompt, RAG, Tune, or Train? A Guide to Choose the Right Generative AI Approach
  • Searching for Best Practices in Retrieval-Augmented_Generation_2407.01219v1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 安装 禅道-21.2版本-外部数据库模式

Docker 安装系列 1、拉取最新版本(zentao 21.2) [rootTseng ~]# docker pull hub.zentao.net/app/zentao Using default tag: latest latest: Pulling from app/zentao 55ab1b300d4b: Pull complete 6b5749e5ef1d: Pull complete bdccb03403c1: Pul…

排序算法 (插入,选择,冒泡,希尔,快速,归并,堆排序)

排序:经常在算法题中作为一个前置操作,为了之后的贪心or else做个铺垫,虽然我们经常都只是调用个sort,但是了解一些排序算法可以扩充下知识库 排序的分类: 从存储设备角度: ✓ 内排序:在排序过程中所有数据元素都在内存中; ✓ 外排序&a…

web复习(五)

一、补零 二、打印出五行五列的星星 三、用户输入行数和列数并打印相应行数和列数的⭐ 四、打印倒三角星星(第一行一个,第二行两个...,以此类推) 五、用户输入秒数,可以自动转换为时分秒 六、随机点名

法规标准-C-NCAP评测标准解析(2024版)

文章目录 什么是C-NCAP?C-NCAP 评测标准C-NCAP评测维度三大维度的评测场景及对应分数评星标准 自动驾驶相关评测场景评测方法及评测标准AEB VRU——评测内容(测什么?)AEB VRU——评测方法(怎么测?)车辆直行与前方纵向行走的行人测试场景&…

XRP价格跌破2.20美元 1.94美元是否下一波牛市的关键支撑?

原文转自:XRP价格跌破2.20美元 1.94美元是否下一波牛市的关键支撑? - 币热网 - 区块链数字货币新闻消息资讯 XRP价格经历剧烈波动后强势反弹,$1.94或成新牛市关键支撑 在过去24小时内,XRP价格经历了一场过山车式的剧烈波动。价…

centos-stream9系统安装docker

如果之前安装过docker需要删除之前的。 sudo dnf -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装yum-utils工具: dnf -y install yum-utils dnf-plugin…

H264编解码标准码流分析:SPS语法

H264编解码标准 SPS 语法解析 解释:H264编解码标准中的SPS(Sequence Parameter Set,序列参数集)是一组编码视频序列的全局参数,包含了视频编码序列的基本属性和配置信息。分析工具:elecard streamEye、elecard StreamAnalyzer、h264Visa 等elecard StreamAnalyzer 展示形…

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…

门控循环单元(GRU):深度学习中的序列数据处理利器

目录 ​编辑 引言 GRU的诞生背景 GRU的核心机制 GRU的计算过程 GRU的数学公式 GRU的应用领域 代码示例:PyTorch中的GRU GRU与LSTM的比较 参数比较 GRU的技术发展 BiGRU(双向GRU) BiGRU的实现示例 GRU与CNN的结合 GRU的应用案例…

Sui 基金会任命 Christian Thompson 为新任负责人

Sui 基金会是专注于推动 Sui 蓬勃发展的生态增长与采用的机构。近日,基金会宣布任命 Christian Thompson 为新任负责人。在 Sui 主网发布的开创性一年里,Sui 凭借其无与伦比的速度、可扩展性和效率,迅速崛起为领先的 Layer 1 区块链之一&…

Vue2五、商品分类:My-Tag表头组件,My-Table整个组件

准备: 安包 npm less less-loader。拆分:一共分成两个组件部分: 1:My-Tag 标签一个组件。2:My-Table 整体一个组件(表头不固定,内容不固定(插槽)) 一&…

mysql运维篇笔记——日志,主从复制,分库分表,读写分离

目录 日志 错误日志 二进制日志 查询日志 慢查询日志 主从复制 概念: 优点: 原理: 搭建: 1,服务器准备 2,主库配置 3,从库配置 4,测试 分库分表: 介绍 问题分析 中心思想…

【JavaEE初阶】线程 和 thread

本节⽬标 认识多线程 掌握多线程程序的编写 掌握多线程的状态 一. 认识线程(Thread) 1概念 1) 线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏着多份代码. 还…

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 设计模式的主题是关于软件设计中反复出现的问题以及相应的解决方案。这些主题是基于长期实践经验的总结,旨在提供一套可复用的设计思路和框架,以应对软件开发中的复杂性和变化性。 三、面向对象程…

【小白51单片机专用教程】protues仿真AT89C51入门

课程特点 无需开发板0基础教学软件硬件双修辅助入门 本课程面对纯小白,因此会对各个新出现的知识点在实例基础上进行详细讲解,有相关知识的可以直接跳过。课程涉及protues基本操作、原理图设计、数电模电、kell使用、C语言基本内容,所有涉及…

MFC用List Control 和Picture控件实现界面切换效果

添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…

Linux高并发服务器开发 第五天(压缩解压缩/vim编辑器)

目录 1.压缩和解压缩 1.1压缩 1.2解压缩 2.vim编辑器 2.1vim的3种工作模式 2.2切换编辑模式 2.3保存和退出 2.4光标移动 1.压缩和解压缩 - Linux 操作系统,默认支持的 压缩格式:gzip、bzip2。 默认,这两种压缩格式,只能…

接口测试Day-02-安装postman项目推送Gitee仓库

postman安装 下载 Postman(已提供安装包,此步可以跳过) https://www.postman.com/downloads/安装 Postman 安装Postman插件newman 要想给 postman 安装 newman 插件,必须 先 安装 node.js。 这是前提! 安装node.js 可能…

虚拟地址空间 -- 虚拟地址,虚拟内存管理

1. C/C语言的内存空间分布 用下列代码来观察各种区域的地址&#xff1a; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int g_unval; int g_val 100;int main(int argc, char *argv[], char *env[]) {const char *str "helloworld&qu…

【数字化】华为数字化转型架构蓝图-2

目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…