像 GPT 这样的大型语言模型是在大型语料库数据上进行离线训练的。这使得模型对于在它们训练之后生成的任何数据一无所知。本文介绍了如何对它们进行更新。
图片来自 的 Penny 。
基础模型,包括像 GPT 这样的大型语言模型(LLMs),通常是在大型语料库数据上进行离线训练的。这使得模型对于在它们训练之后生成的任何数据一无所知。
此外,由于基础模型是在公开可用的通用语料库数据上进行训练的,它们在特定领域的任务中效果较差。检索增强生成( ,RAG)是一种技术,可以从基础模型外部检索数据,并将相关检索到的数据注入到上下文中,以增强提示信息。
RAG 比预训练或微调基础模型更具成本效益和高效性。它是用于使 LLMs “接地”的技术之一,能够提供与特定用例相关且相关的信息,以确保响应的质量和准确性。这对于减少 LLMs 中的错误回答非常关键。
在本文中,我们将仔细探讨如何使用 RAG 来引入特定领域的知识,并应用于 LLMs 中。
为什么要实施 RAG ?
让我们考虑一个简单的场景,您向 提问关于第 95 届奥斯卡奖( )。由于宣布的日期在 2023 年 3 月,而 的训练截止日期为 2021 年 9 月,您会得到一个典型的道歉回答。
然而,如果在询问同样的问题之前给 一些上下文,它将能够以有意义的答案回复。
让我们复制并粘贴 Good 网站上与第 95 届奥斯卡奖相关的简介,这将为提示“注入”额外的上下文。
我们的提示现在如下:
正如我们所看到的,那个简单的简介对 LLM 对问题的回答产生了重大影响。根据支持的上下文长度,我们可以向 LLM 提供额外的信息,使其了解特定主题。
尽管我们手动复制和粘贴,但实质上我们实施了一个基本的 RAG 机制,以从 获取我们想要的结果。
在企业环境中,LLM 可能需要从各种非结构化和结构化数据源中检索信息。因此,复制和粘贴上下文以补充提示不是一个可行的选择。这就是 RAG 提供一个框架和蓝图,以构建特定领域的生产级 LLM 应用的地方。
RAG 框架
在 RAG 中用于增强提示的外部数据可以来自不同的来源,包括文档库、数据库和 API 。
第一步:提示
用户在此交互中首次为 提供提示。提示可能包含用户期望在输出中得到的简要描述。
第二步:上下文搜索
这是最关键的一步,通过一个外部程序来增强提示,该程序负责从外部数据源搜索和检索上下文信息。这可能包括查询关系数据库,基于关键词搜索一组索引文档,或调用 API 从远程或外部数据源检索数据。
第三步:提示增强
一旦生成上下文,它将被注入到原始提示中进行增强。现在,用户的查询中包含了附加的包含事实数据的信息。
第四步:推理
LLM 收到带有附加上下文和用户原始查询的丰富提示。这显著增加了模型的准确性,因为它可以访问事实数据。