如何使用LLMs来处理公司内部数据?

ChatGPT中文站

如何使用大型语言模型(例如ChatGPT)与公司内部数据?

随着大语言模型(LLMs)的进一步发展,它们在业务世界中为语言分析和处理提供日益丰富的能力。将LLMs与公司的数据基础设施整合,可以实现对客户反馈、财务文件或其他关键信息的更加复杂的分析。潜在的应用,如知情聊天机器人或分钟摘要,是无穷无尽的。

然而,这可能是复杂和具有挑战性的,需要仔细的规划和执行。虽然将LLMs与公司数据集成的好处是显而易见的,但如何构建一个能够实现它的系统可能并不明显。那么,从哪里开始呢?典型场景涉及微调的过程。更近期的方法,则是为LLMs的日益普及打造的,涉及将一些上下文附加到查询中。让我们逐步解决它们。

旧的方式:微调

微调是指将预先训练好的语言模型适应于特定任务或领域。这需要在与特定任务或领域相关的数据集上重新训练模型,以提高其性能。因此,在典型情况下,人们可能会想要采用一种在某个大型通用数据集上训练好的现成模型,然后用经过精心准备的专有数据来对其进行训练。

微调并非总是容易的,它需要仔细的数据工程,并且数据需要在适当的数量(通常意味着大量的数据)中。有时候模型会“忘记”它先前所学的内容,而更喜欢新获得的知识。在机器学习文献中,这被称为灾难性遗忘。这种方法的缺点也在于需要全面的深度学习基础设施来训练LLMs。由于训练需要时间,这种方法在快速变化的数据用例中可能也太慢了 - 任何数据增加都意味着需要重新培训。

“新”的学习方式:上下文学习

LLMs的出现带来了新范式的流行:上下文学习。对于普通听众来说,能够依赖以前的信息(上下文)来学习是ChatGPT最令人印象深刻的特点之一。上下文学习是指在不改变模型的情况下学习如何解决新的任务。换句话说,我们的网络能够在没有改变权重的情况下解决在训练时没有看到的任务(如微调)。此外,模型能够学习而无需专门训练。最重要的是,通常只需要很少的示例,这与机器学习模型对数据的贪婪印象形成鲜明对比。这种现象的根源可能在于贝叶斯推理,目前正在进行密集的研究。

通过提示工程实现上下文学习

使用上下文学习的最简单方法是提示工程,其中提示只是发送给模型的一段文本。这指的是设计和细化提示或指令,以便向ChatGPT这样的语言模型提供所需的响应。它涉及制作具体和清晰的指示,示例如何指导模型的行为并鼓励其生成准确和相关的输出。提示工程至关重要,因为像ChatGPT这样的语言模型根据提供的信息,包括初始提示和任何后续上下文,生成响应。

相当频繁,快速的工程往往是一个迭代过程,常需要进行试验和改进。这可能涉及使用特定的关键词或提供相关的示例。通过调整和微调提示,用户可以提高模型的性能,提高响应质量,并减轻可能出现的偏差或错误。需要注意的是,提示工程是针对语言模型的设计和配置具体的,不涉及修改模型的基础架构或培训数据。

那么,这么简单吗?实际上并不是。由于查询窗口(或更正式地说,令牌限制)的大小有限,我们只能将有限的信息附加到上下文中。随着公司数据的增长趋势,这种方法很快可能变得不够用,更不用提成本了。

使用索引和向量存储的上下文学习更加智能化。

幸运的是,有更明智的方式将上下文附加到查询中。如果您拥有大量的自有数据,则无法将所有内容附加到提示中。但是,一些技术可以让您提供正确的上下文。其中之一是考虑在您的数据上建立一组索引。这些索引有助于识别您数据中相关的“块”,并仅将所需内容附加到查询中。

实质上,在将提示发送给模型之前,我们首先搜索相关数据块,然后将它们附加到提示上。例如,使用LlamaIndex,我们可以将不同的文档(例如PDF文件或SQL数据)存储为索引节点,这些节点按照一定的结构制作,可以后续查询。当然,必须考虑索引速度和成本。另一种方法考虑向量数据库,例如Pinecone。向量数据库存储嵌入,嵌入是数据的一种数字表示形式。这些嵌入可以后续查询,以便与我们的查询近似相似度,并可用于为提示构建正确的上下文。

其他要考虑的因素

无论是在现场部署还是利用外部模型(例如使用API的ChatGPT)来提供语言模型时都存在显着差异。现场部署涉及在组织自己的服务器或数据中心内托管,提供完全对基础架构的控制。这种方法可以根据其特定要求管理数据安全性和隐私。它可能更适用于需要保持在组织网络内的敏感或机密数据。然而,现场部署通常需要大量的硬件(例如GPU)、基础架构设置和持续维护的前期投资。它还缺乏外部解决方案所固有的可扩展性和灵活性。因此,最终决定应该始终基于谨慎的规划和计算。云解决方案可能被用来满足一半的需求。

2023-10-20 16:52:53 AI中文站翻译自原文