编者按:过来,NLP 开发人员依赖于文本分类、命名实体辨认和命名实体消歧等技术栈来优化 NLP 工作。然而,随着大语言模型 (LLM) 的疾速倒退,新的技术栈开始呈现,以反对和减速这些大型语言模型的实现和利用。
让咱们一起追随 Langchain 的开发者,独特探讨 LLM 及 NLP 技术栈正在产生的变动,以及这一系列变动对开发者的意义。
以下是译文,Enjoy!
作者 | Harrison Chase & Brian Raymond
编译 | 岳扬
01 现有的 NLP 技术栈
直到最近,NLP 开发人员都始终依赖于传统优化 NLP 工作的技术栈,如文本分类(text classification)、命名实体辨认(Named Entity Recognition)、命名实体消歧(Named Entity Disambiguation)。这种技术栈通常由数据预处理管道(data preprocessing pipeline)、机器学习管道(machine learning pipeline)和各种存储嵌入和结构化数据的数据库组成。
这种架构在生成大量的三元组(triples)、词嵌入(word embeddings)、句子嵌入(sentence embeddings)、Seq2Seq 模型的输入(sequence-to-sequence outputs)、语言模型概率值(language model probabilities)、注意力机制的权重(attention weights)等方面运作良好。开发人员通常会将这些结构化输入数据存储在 ElasticSearch、Postgres 或 Neo4j 数据库中,他们会将这些数据作为用户(或服务)能够查问的常识图谱来应用。
图 1. 现有的 NLP 技术栈
02 新兴的大语言模型 (LLM) 技术栈
自 2022 年秋季以来,一个旨在充沛开掘 LLM 后劲的新技术栈开始呈现。与之前的技术栈相比,该技术栈着重于实现 文本生成——与晚期的机器学习模型相比,古代 LLM 最善于这项工作。
这个新的技术栈由四个次要局部组成:数据预处理管道(data preprocessing pipeline)、嵌入终端(embeddings endpoint)+ 向量存储(vector store)、LLM 终端(LLM endpoints)和 LLM 编程框架(LLM programming framework)。
旧的技术栈和新的技术栈之间有几个很大的不同之处:
- 首先,新的技术栈 不那么依赖存储结构化数据的常识图谱(如三元组),因为诸如 ChatGPT、Claude 和 Flan T- 5 等 LLM 比晚期的 GPT 2 等模型编码了更多的信息。
- 第二,较新的技术栈 应用现成的 LLM 终端(LLM endpoint)作为模型,而不是定制的 ML 管道(ML pipeline)(至多在刚开始时)。 这意味着明天的开发人员破费更少的工夫来训练专门的信息提取模型(例如命名实体辨认、关系提取和情感剖析),并且能够在比拟少的工夫(和老本)内启动解决方案。
图 2. 新兴的大模型技术栈
2.1 数据预处理管道
新技术栈的第一个次要局部(数据预处理管道)与旧的技术栈没有太大变动。这一步包含用于摄取数据的 连接器 (例如 S3 bucket 和 CRM), 数据变换层 (data transformation layer)和 上游连接器(如到向量数据库)。通常状况下,输出到 LLM 中最有价值的信息个别是最难解决的(PDF、PPTX、HTML 等),但也有一些容易解决的文件(例如.DOCX)蕴含用户不心愿发送到推理终端的信息(如广告、法律模板等)。
从历史上看,这一步骤个别是由数据科学家为每个应用程序手工构建的。依据所波及的数据类型,他们可能应用现成的 OCR 模型 和几十到几百个自定义的 正则表达式 来转换和清理自然语言数据(natural language data),以便在 上游机器学习管道 (machine learning pipeline)中进行解决。对于 非结构化数据 ,咱们正在开发一款开源工具来减速这一预处理步骤,利用一系列 计算机视觉文档宰割模型 (computer vision document segmentation models),以及NLP 模型、Python 脚本 和正则表达式 来主动提取、清理和转换要害文档元素(例如题目、注释、页眉 / 页脚、列表等)。
咱们 (Langchain) 目前正在开发一款跨时代的工具,以使开发人员可能轻松地将 蕴含自然语言数据的大型和高度异构的语料库(例如,蕴含成千上万的 PDF、PPTX、聊天记录、抓取的 HTML 等的 S3 bucket)指向单个 API 终端,并接管洁净的 JSON,为嵌入终端和存储在矢量数据库中做好筹备。
2.2 嵌入终端和向量存储
嵌入终端(embeddings endpoint)和向量存储(vector store) 的应用代表了 数据存储和拜访形式的重大演变 。以前的嵌入次要用于文档聚类等专有工作(niche task)。将文档及其嵌入存储在向量数据库中,使 LLM 终端的 critical engagement patterns 得以实现(下文将具体介绍)。 这种架构的次要劣势之一是可能间接存储原始嵌入,而不是将它们转换为结构化格局。 这意味着数据能够以其天然格局存储,从而 实现更快的解决工夫和更高效的数据检索 。此外,这种办法能够更轻松地解决大型数据集,因为它能够 缩小在训练和推理过程中须要解决的数据量。
生成和存储文档嵌入(document embeddings)以及文档的 JSON 版本,为 LLM 与向量存储的对接发明了一个简略的机制。这对于须要实时处理的利用特地有用,比方聊天机器人(chatbots)。通过最大限度地缩小数据检索所需的工夫,零碎能够更快地响应并提供更好的用户体验。应用嵌入(以及文档索引)和向量存储的另一个长处是,它能够更容易地实现迁徙学习等技术,以实现更高效的微调和更好的性能。
2.3 LLM 终端
新技术栈的第三个外围组成是 LLM 终端。这是接管输出数据并产生 LLM 输入的终端。LLM 终端负责管理模型的资源,包含内存和计算,并提供可扩大和容错的接口,为上游应用程序提供 LLM 输入。
只管大多数 LLM 供应商提供了几种不同类型的终端,本文咱们用 LLM endpoints 来指代文本生成(text-generation)终端。如上所述,这是为许多新兴应用程序提供能源的新技术解锁(与更传统的 ML 管道相比)。这仿佛有点简化了,但这些 LLM 终端公开的接口是文本字段作为输出,文本字段作为输入。
2.4 LLM 编程框架
新技术栈的最初一个次要内容是 LLM 编程框架。这些框架为应用语言模型构建应用程序提供了一组工具和形象组件(abstractions)。 在 LangChain,这正是咱们正在致力构建的框架。这些框架正在迅速倒退,这使得它们很难被定义。尽管如此,咱们还是在收集一组 abstractions,咱们将在上面具体介绍。
这些框架的一个重要性能是编排所有不同的组件到目前为止,在新技术栈中,咱们看到呈现的组件类型有:LLM 提供商(在上一节中介绍)、嵌入模型、向量存储、文档加载器、其余内部工具(谷歌搜寻等)。在 LangChain 中,这些组件的组合形式被称为链。例如,咱们有在向量存储上做 QA 的链,与 SQL 数据库交互的链,等等。
所有这些链都波及在某个时候调用语言模型。调用语言模型时,次要挑战来自构建传递给语言模型的提醒(prompt)。这些提醒(prompt)通常是从其余组件中获取的信息加上根本提醒模板的组合。LangChain 提供了一堆默认提醒模板来开始应用这些链,同时构建了 LangChainHub[1]——一个供用户分享这些提醒(prompt)的中央。
03 Open Questions
索引数据的最佳形式是什么?
当初很多人都在应用向量存储作为索引数据的次要形式,以便 LLM 可能与之交互。然而,这只是定义这些交互应该如何工作的第一步。当初有一个正在被积极探索的畛域是 钻研将常识图谱与文档索引及其嵌入相结合能够在多大程度上进步 LLM 的推理品质。 此外,在能够预感的将来,大多数企业将持续须要高质量的结构化数据(通常在图数据库中)来与现有数据集和商业智能解决方案交融。 这意味着从中期来看,企业决策者实际上可能同时依赖向量数据库和图数据库来反对现有的应用程序和工作流。
微调(Fine Tuning)/ 再训练(Retraining)将会是什么样子?
当初像 LangChain 这样的 LLM 编程框架常常被用来将自有数据与预训练的 LLM 相结合,还有另一种办法 是在自有数据上对 LLM 进行微调 。微调有一些长处和毛病, 从好的方面来说,它缩小了对这种编排的大量需要。然而,从坏的方面来说,它的老本和工夫破费都比拟高,而且须要定期进行调整以放弃更新。 看看这些衡量如何随着工夫的推移而演变将会很乏味。
应用嵌入(embeddings)有哪些不同形式?
尽管目前次要的应用模式依然是 将数据保留在内部数据库中,而不是对其进行微调,但也有其余办法将其与 LLM 联合起来,而不是以后的办法(这些办法都波及将数据传递到提醒(prompt)中)。令人高兴的是有 RETRO[2]这样的方 法,它为文档获取嵌入(embeddings),而后间接解决这些嵌入(embeddings),而不是将文本作为提醒(prompt)传递进来。尽管这些模型大多用于钻研环境,但看看它们是否能成为支流,以及这对 LLM 编程框架有什么影响,将会很有意思。
04 总结 Conclusion
当初向这个新的 LLM 技术栈进行转变是一个令人兴奋的过程,它将使开发人员可能构建和部署更弱小的 NLP 应用程序。新技术栈比旧技术栈更高效、更可扩大、更易于应用,而且它开释了 LLM 的全副后劲。随着开发人员持续寻找利用 LLM 力量的新办法,咱们能够期待在将来几个月和几年内看到这一畛域的更多翻新。
END
参考资料
1.https://github.com/hwchase17/langchain-hub
2.https://arxiv.org/abs/2112.04426
本文经原作者受权,由 Baihai IDP 编译。如需转载译文,请分割获取受权。
原文链接:https://medium.com/@brian_90925/llms-and-the-emerging-ml-tech…