使用GRIT训练更好的LLMs,构建RAG20
作者: 子非AI 来源: 子非AI
Contextual AI 是一家致力于开发健壮可靠的企业级 AI 性能的公司。RAG 2.0 是他们最新的成果**,它通过端到端优化语言模型和检索器来克服传统 RAG 方法的局限性。RAG 2.0 模型在多个基准测试中取得了最先进的结果,并在实际应用中展现出更大的优势。与长上下文模型相比,RAG 2.0 在准确性和计算效率方面也表现出优越性。**
大多数自然语言处理问题可以归纳为生成或表示两大类。我们要么致力于生成新的文本序列,要么致力于以某种方式表示文本,以便检索、聚类和分类。
然而,现代的机器学习流程通常包含这两种类型的组件。检索增强生成(RAG)就是一个典型的例子,其中表示(即嵌入)用于检索,检索结果随后用于增强生成模型。
嵌入模型通常使用对比损失进行训练,而生成性语言模型则采用因果或自回归的方式进行训练。得益于指令微调,生成模型在处理判别性任务上变得越来越擅长。那么,如果我们利用指令学习来训练一个单一的模型,使其在生成和表示两方面都表现出色,会怎样呢?
这样做有三个主要原因。首先,单独训练模型的成本很高。通常,嵌入模型仍然从生成性语言模型初始化,原因就在于此。其次,同时学习两个任务可能使模型更好地泛化,因为它获得了更丰富的训练信号。最后,如果我们使用同一个模型进行生成和表示,正如我们将在这里展示的,我们可以更高效地进行 RAG。
使用 GRIT 进行训练
我们引入了 GRIT(Generative Representational Instruction Tuning),这是一种新颖的技术,使用指令来训练语言模型,使其在表示和生成两方面都表现出色。在这个新范式中,模型简单地学习按照“以医生可以找到相关信息做出正确决策的方式表示这段文本”的指示进行操作。我们在指令微调期间,同时使用对比损失和因果损失对相同的核心模型进行优化。有关更多详细信息,请参见我们的论文。
采用这种方法,我们训练了一个新模型,在 MTEB 基准测试中为表示质量树立了新的艺术状态。同一个模型在生成基准测试中也实现了一流或接近一流的性能:
更快的 RAG
大多数现代 LLM 部署,特别是在生产环境中,倾向于遵循 RAG 范式,其中检索器和语言模型共同解决问题。传统的 RAG 在计算上远非最优,因为查询和文档必须被编码两次:一次由嵌入模型进行检索,一次由语言模型作为上下文。如果我们有同一个模型,我们可以在检索期间缓存(即稍后保存)网络的部分,并在生成期间重用它们。
有不同的方法来处理这个问题:你可以缓存查询、文档或两者,并且顺序不同——有关更多详细信息,请参见论文。我们的最佳方法比简单的 RAG 带来了超过 60% 的效率提升,实际上与直接生成而不检索所需的时间非常接近:
近日,Contextual AI宣布推出 RAG 2.0,这是Contextual AI为开发健壮可靠的企业级 AI 性能而采取的新方法。与之前的 RAG 版本不同,它不再简单地将冻结的模型、向量数据库和低质量的嵌入技术拼接在一起,而是进行了端到端的全面优化。利用 RAG 2.0,我们已经开发出第一组上下文语言模型(CLMs),这些模型在多项行业基准测试中都取得了最先进的成绩。根据我们的研究和客户反馈,CLMs 在性能上大幅超越了基于 GPT-4 的 RAG 基线版本,以及市面上最佳的开源模型。
通过 RAG 2.0 训练的上下文语言模型,在所有我们的基准测试中都表现出比现有 RAG 系统更出色的性能。在自然问题(NQ)、HotpotQA(HPQA)和 TriviaQA 等测试中,我们使用了精确匹配度量。由于 HaluEvalQA 和 TruthfulQA 需要 logits,GPT-4 无法直接在这些任务上进行评估。传统的 RAG 是零次射击;我们所说的 RAG 包括了少次射击演示、细致的分块处理和手动提示工程。我们投入了大量精力来加强这些基线。
为什么选择 RAG 2.0?
语言模型在处理知识密集型任务时常常遇到困难,因为它们受限于训练过程中接触到的信息。2020 年,我们的联合创始人兼首席执行官 Douwe Kiela 及其在 Facebook AI 研究团队引入了检索增强生成(RAG),通过为语言模型增加检索器来访问外部数据源(如 Wikipedia、Google、公司内部文件)来解决这一问题。
目前典型的 RAG 系统使用冻结的现成模型进行嵌入,利用向量数据库进行检索,并采用黑盒语言模型进行生成,这些组件通过提示或编排框架拼接在一起。这导致了生成式 AI 的“弗兰肯斯坦怪物”现象:单个组件虽然可以工作,但整体效果远非理想。这些系统脆弱,缺乏针对部署领域的机器学习或专业化,需要大量的提示,并且容易出现连锁错误。结果,RAG 系统很少能达到生产标准。
RAG 2.0 方法通过预训练、微调和整合所有组件为一个单一的集成系统,通过语言模型和检索器进行反向传播,以最大化性能:
深度学习的历史反复证明,端到端优化总是优于手工调整的系统。我们应用这种方法来超越 RAG 的限制,并开发了 RAG 2.0。简而言之:如果你知道你将要进行 RAG,那么你应该为 RAG 训练系统。
RAG 2.0 基准测试
我们在多个维度上比较了上下文语言模型(CLMs)与冻结的 RAG 系统:
开放领域问答:我们使用标准的自然问题(NQ)和 TriviaQA 数据集来测试每个模型正确检索相关知识并准确生成答案的能力。我们还评估了模型在 HotpotQA(HPQA)数据集上单步检索设置下的表现。所有数据集都使用了精确匹配(EM)度量。
忠实度:HaluEvalQA 和 TruthfulQA 用于衡量每个模型在检索证据时保持忠实度的能力。
新鲜度:我们通过使用网络搜索索引来衡量每个 RAG 系统概括快速变化的世界知识的能力,并在最近的 FreshQA 基准测试上显示准确性。
这些维度中的每一个对于构建生产级 RAG 系统都至关重要。我们展示了 CLMs 在使用 GPT-4 或最先进的开源模型(如 Mixtral)构建的多种强大冻结 RAG 系统上显著提高了性能。
在知识密集型基准测试中的结果。我们的普通 RAG 和标准 RAG 基线都使用冻结的搜索索引、重新排名和现成的语言模型。对于我们的 RAG 基线,我们使用少次射击设置和手工调整的提示来展示这些变化如何可以在我们的普通零次射击 RAG 设置中导致下游任务性能的大幅改进。我们的 HotpotQA 评估使用与 KILT 基准测试一起发布的分割和 EM 度量。HaluEvalQA 使用基于日志概率的零次射击二进制准确性,并仅评估给定真实上下文文档的语言模型的忠实度。TruthfulQA 使用 MC1 度量。
我们在 Google Cloud 的最新一代 ML 基础设施上训练和部署了我们的 RAG 2.0 模型。使用带有 H100 GPU 的 A3 实例和最新的 TCPx 网络堆栈,我们能够按规模训练 RAG 2.0 模型,以实现最先进的准确性。
在实际应用中应用 RAG 2.0
当我们将 CLMs 应用于真实世界数据时,它们在当前方法上取得了更大的进步,正如我们已经看到的早期客户一样。
以 FinanceBench 作为说明性的代理(为了保持客户数据的机密性),我们可以看到 CLMs 甚至在金融特定的开卷问答上超越了冻结的 RAG 系统——并且在其他专业领域,如法律和硬件工程中,我们也看到了类似的进步。
RAG 2.0 与长上下文窗口
在评估真实世界的实现时,有些人可能会想知道 RAG 2.0 与具有长上下文窗口的最新模型相比如何——因此我们也深入研究了这一点。
长上下文模型通常使用“大海捞针”基准测试进行评估,其中“针”(即事实)隐藏在大型“干草堆”(即文本语料库)中,模型使用旨在引出特定针的查询进行评估。为了有意义地比较冻结的 RAG 和上下文语言模型,我们通过创建一个非重复的 2M 标记干草堆来适应最近的传记基准。使用 100+ 生物问题测试集,我们评估了 CLM、Frozen-RAG 和 GPT-4-Turbo(仅限于 32K 标记)的干草堆从 2K 到 2M 标记不等。
我们看到的是 RAG 2.0 表现更好,尤其是如果你希望扩展:RAG 2.0 在准确性上更高,并且与长上下文语言模型相比,使用的计算资源要少得多,这种差异在生产中变得有意义。
更多AI工具,参考Github-AiBard123,国内AiBard123