如何利用大语言模型(LLM)打造定制化的Embedding模型

一、前言

在探索大语言模型(LLM)应用的新架构时,知名投资公司 Andreessen Horowitz 提出了一个观点:向量数据库是预处理流程中系统层面上最关键的部分。它能够高效地存储、比较和检索高达数十亿个嵌入(也就是向量)

那么,为什么要如此强调向量数据库的重要性呢?这是因为计算机虽然功能强大,但并不擅长直接理解文本、图像、音频等人类友好的数据格式。通过将这些数据转换成数值型的“向量”,我们能够让计算机更高效地处理它们。而普通的数据库并不是为了处理这样的向量而设计的,尽管现在随着生成式 AI 技术的普及,它们开始逐渐支持向量操作。

在深度学习领域,大语言模型(LLM)和嵌入模型是两个非常关键的组成部分。嵌入模型是将语言转化为向量空间的模型,而大语言模型则是一种能够生成自然流畅语言的深度学习模型。现有的嵌入模型已经在检索增强生成(RAG)等应用中取得了不错的效果,但在特定领域和任务中,它们的表现仍然存在缺陷。因此,在一些特定领域的场景下,定制化的微调训练嵌入模型也比较重要,可以根据特定的业务需求进行训练,更好地理解和把握业务语境,提升整体的业务表现。但由于训练个性化嵌入模型面临着成本高、复杂度高等挑战,所以一般我们在实际的业务场景落地的时候都会选择OpenAI提供的嵌入模型或一些开源的嵌入模型,这些模型都属于预先训练好的通用型的嵌入模型,适用于一般应用的嵌入模型,对于特定场景的语义会存在一定的空白。

不过,微软的研究者们在一篇新论文中提出了一项技术,这项技术大幅降低了训练个性化嵌入模型的成本和复杂度。该技术采用开源的大语言模型而不是BERT类的编码器作为基础,简化了重训练的步骤,并利用专有专有的大语言模型自动产生带标签的训练数据。这样的研究为新的LLM应用打开了大门,也使得各个组织能够根据自己的需求打造定制化的LLM。

接下来就让我们一起来简单回顾一下,为什么向量嵌入如此关键。本文将带你了解向量、向量嵌入以及向量数据库的基础知识,并介绍如何利用大语言模型(LLM)打造定制化的 Embedding 模型。

二、什么是向量?

究竟什么是向量呢?向量是通过一组固定长度的数字来表征,这组数字既反映了量的大小,也指明了方向。至少需要两个维度的数据才能构成一个向量,比如在平面上的点 [1,1]。同理,三维空间中的点可以表示为 [1,1,1]:

在机器学习领域,一个向量可能包含成千上万个维度,这已经多到我们难以直观展示。但关键在于,一旦将对象转换为数学向量,我们就可以利用向量运算进行距离测量、相似度计算和变换等操作。这些运算对于相似性搜索、聚类、分类和揭示模式与趋势等多种任务至关重要。

三、什么是向量嵌入(Vector Embedding)?

向量嵌入,简称“嵌入”,是将通常无法直接量化的数据对象转化为数字向量形式。这些嵌入能够在一个更紧凑的格式中捕捉到原始数据的本质属性和相互关系,它们在机器学习领域有着广泛应用。

举个例子,一个包含数百万像素点的图像,每个像素点都有其独特颜色、色调和对比度,其向量嵌入可能只包含几百或几千个数值。这样,嵌入就能在一个更低维度的空间中有效编码原始数据的重要信息,从而实现数据的高效存储、检索和计算。简单的嵌入技术可能会产生稀疏嵌入(Sparse Embeddings),这意味着向量中许多值可能是0;而更为复杂和高级的嵌入技术则能创造出稠密嵌入(Dense Embeddings),几乎不含0值。但是,稀疏嵌入的维度通常比稠密嵌入要高,因此需要更多的存储空间。

与原始数据可能的复杂性和异质性不同,嵌入旨在以一种更规范和结构化的方式捕捉数据的精髓。这一转换过程由称为嵌入模型(Embedding Model)的工具完成,通常涉及到复杂的机器学习技术。

这些模型负责处理数据对象,从中提炼出有意义的模式和关系,并生成向量嵌入,这些嵌入随后可以被算法用来执行各种任务。

四、向量嵌入的主要应用场景

当我们掌握了这些向量嵌入技术之后,它可以帮我们完成哪些任务呢?

  • 相似性搜索:通过比较嵌入之间的相似度,我们可以在自然语言处理(NLP)领域找出内容相近的文档或是互有关联的单词。

  • 聚类与分类:将嵌入作为机器学习模型中的输入特征,帮助算法学会如何将相似的事物归为一组,并对各种对象进行分类。

  • 信息检索:运用向量嵌入,我们可以打造出强大的搜索引擎,快速地根据用户的搜索需求找到他们想要的文档或多媒体内容。

  • 推荐系统:基于用户以往的喜好和行为数据,通过向量嵌入技术为用户个性化推荐商品、文章或其他媒体内容。

  • 可视化:在二维或三维空间中展示这些嵌入,让我们能直观地看到数据之间的关系和其中的模式。

  • 迁移学习:利用已经训练好的嵌入作为新项目的跳板,借此发挥现有知识的力量,减少我们在新任务上的训练工作量。

五、训练嵌入模型所面临的挑战

嵌入模型能够生成数值化表示,从而捕捉输入数据的核心特征。例如,词嵌入揭示了词汇的语义含义,而句子嵌入则揭示了句子中词与词之间的关联。图像嵌入则代表了输入图像的视觉特质。这些嵌入对于各种任务都非常有用,比如比较两个单词、句子或文本之间的相似性。

其中一个重要的应用是结合大语言模型进行检索增强生成(RAG)。在RAG中,嵌入帮助寻找和获取与用户输入相关的文档。这些文档的内容被并入用户输入中,并指导大语言模型基于这些文档生成回应。RAG允许大语言模型避免生成不相关或错误信息,并解决需要超出其训练数据集范围信息的任务。

RAG的质量极度依赖于嵌入模型的优劣。如果嵌入未能正确抓取文档特征与用户输入相匹配,那么RAG系统就无法获取到相关文档。

在专有数据上训练嵌入模型是提升其在特定应用中质量的途径之一。但现行流行的方法是一个多阶段训练过程:首先在一个包含大量弱监督文本对的数据集上通过对比学习进行训练,接着在一个规模较小但高质量、标签明确的样本集上进行微调。

这种方法存在一个问题:它需要大量工程投入来策划相关文本对,并且依赖手动收集的数据集,这些数据集往往只覆盖有限的任务和语言,这就是为什么,大多数情况下,我们使用一些通用的嵌入模型效果不太理想的原因。

六、大语言模型在嵌入任务中的新应用

生成高级检索任务的提示(来源:arxiv)

微软提出了一种新技术,它可以在一个阶段内完成嵌入训练,这与传统的两阶段训练方法不同。他们利用了像GPT-4这样的专有大语言模型(LLM)来生成适用于各种嵌入任务的合成数据。

首先,研究人员会让GPT-4生成一系列可能的任务。然后,这些任务被用来生成训练用的数据样例。

提示生成检索任务的示例(来源:arxiv)

我在ForeFront平台上对这一过程进行了简化测试。ForeFront允许用户在GPT-4和Claude的基础上,轻松创建无需编程的工作流程。在测试的第一阶段,我得到了一系列抽象的任务描述:

["Retrieve case law that supports or opposes a specific legal argument.","Find recipes based on a list of ingredients provided in the query.","Search for news articles related to a particular event or phenomenon.","Locate scholarly articles that discuss the efficacy of a certain medical treatment.","Identify historical documents that mention a specific figure or event.","Gather financial reports related to a particular industry or company.",… (redacted)
]

进入第二阶段,我将其中一个任务描述输入给GPT-4,并指导它构造出一个包含具体用户提示以及每个包含150个词的正反例子的JSON结构。除了在一个困难负面例子的最后一句出现了些许偏差外,整个结果接近完美,但这个小错误可能会对嵌入结果造成影响:

{"user_query": "Looking for a vegetarian chili recipe that uses black beans, quinoa, and sweet potatoes","positive_document": "This hearty vegetarian chili is the perfect way to warm up on a chilly day. Begin by sautéing one diced onion and three cloves of minced garlic in olive oil until translucent. Add one diced bell pepper and two diced sweet potatoes and cook until slightly soft. Stir in two cups of vegetable broth, one can of black beans (rinsed and drained), one cup of cooked quinoa, one can of diced tomatoes, and one can of tomato paste. Season with two tablespoons of chili powder, one teaspoon of cumin, and salt and pepper to taste. Let the chili simmer for 30 minutes, stirring occasionally. Serve hot, garnished with avocado, cilantro, and a squeeze of lime juice.","hard_negative_document": "This delicious sweet potato and black bean burrito bowl is a great vegetarian meal. Start by roasting two diced sweet potatoes in the oven with olive oil, salt, and pepper until golden and tender. Meanwhile, cook one cup of quinoa as per package instructions. In a pan, cook one can of black beans with one diced onion, two cloves of garlic, and one tablespoon of cumin until heated through. Assemble your bowls by placing a scoop of quinoa at the bottom, followed by the roasted sweet potatoes, and the black bean mixture. Top with sliced avocado, fresh cilantro, and a dollop of sour cream. While this recipe shares ingredients with the user's query, it is not a chili recipe."
}

微软的研究团队并未公开他们实验的源代码或数据集。可以参考下文提供的脚本,展示了一个极其简化的实验流程。这个流程非常灵活,你可以根据自己的需求调整模板。

https://github.com/Crossme0809/frenzyTechAI/blob/main/embedding/Generate_Examples_for_Embedding_Training.ipynb

为了让数据集更加多元化,研究人员设计并应用了多种提示模板。最终,他们通过Azure OpenAI Service使用GPT-3.5和GPT-4生成了50万个训练样例,并设计了15万个独特任务指令。整个过程消耗了大约1.8亿个Token,成本约为5000美元。

值得注意的是,研究人员选择了对开源自回归模型进行微调,而不是常见的双向编码器模型如BERT。因为这些模型已经在大规模数据集上进行了预训练,所以可以以较低成本进行嵌入任务的微调。

他们在合成数据和13个公开数据集上对方法进行了测试。通过应用各种降低成本的技术,例如LoRA(一种低秩适应技术),他们取得了令人瞩目的成果。在多个公认的基准测试中,他们不仅达到了非常好的效果,甚至在RAG和嵌入质量基准上超过了OpenAI的Ada-002和Cohere的嵌入模型

七、大语言模型与特征嵌入

这篇论文的核心观点是,在训练如Mistral-7B这类自回归模型进行特征嵌入任务时,并不需要经历成本高昂的对比学习预训练阶段

研究者指出:“广泛的自回归预训练让大语言模型(LLM)能够获取到优质的文本表示,并且仅需少量进一步优化就可以将其转换成高效的特征嵌入模型。”

从他们的研究结果表明,大语言模型应当能以极低的成本生成适合进一步优化特征嵌入模型所需的训练数据。这一点对于未来大语言模型应用可能具有重要意义,它使得各种组织能够为他们的应用定制特征嵌入方式。

研究者们提出:“我们认为,生成语言建模与文本特征嵌入是一枚硬币的两面,这两项任务都要求模型对自然语言有深刻的理解。在得到一个特征嵌入任务的定义后,一个真正强大的大语言模型应该能够自主生成训练数据,随后通过简单的精调变为一个特征嵌入模型。我们的实验为这一方向的潜力提供了线索,但还需要更多的研究去深入探讨。”

八、总结

在大语言模型的应用场景中,定制化的嵌入模型的训练变得尤为重要。由于RAG等应用场景的检索准确性和生成质量高度依赖于嵌入模型的质量,因此,针对特定领域和任务的个性化嵌入模型的训练变得尤为重要。然而,训练个性化嵌入模型面临着成本高昂、复杂度高等问题。微软提出了一种新的技术,可以在一个阶段内完成嵌入训练,这与传统的两阶段训练方法不同。他们利用了像GPT-4这样的专有大语言模型(LLM)来生成适用于各种嵌入任务的合成数据。这种方法可以大幅降低训练个性化嵌入模型的成本和复杂度。因此,针对特定领域和任务的个性化嵌入模型的训练将成为未来大语言模型应用的重要方向。

九、References

[1]. Improving Text Embeddings with Large Language Models

https://arxiv.org/abs/2401.00368

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

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

相关文章

unittest自动化测试框架

一、unittest简介 Unittest是python内置的一个单元测试框架,主要用于自动化测试用例的开发与执行 简单的使用如下 import unittestclass TestStringMethods(unittest.TestCase):def setUp(self):print("test start")def test_upper(self):self.assertE…

可以打印试卷的软件有哪些?推荐这几款

可以打印试卷的软件有哪些?随着科技的飞速发展,越来越多的学习工具如雨后春笋般涌现,其中,能够打印试卷的软件尤其受到广大学生和家长的青睐。这些软件不仅方便快捷,而且内容丰富,可以满足不同学科、不同年…

python学习笔记9(程序的描述方式、程序的组织结构、顺序结构、选择结构1)

(一)程序的描述方式 自然语言、流程图、伪代码 (二)程序的组织结构 顺序、选择、循环 (三)顺序结构 (四)选择结构1 if 1、条件写法1 2、如果只有一个判断的写法 3、注意冒号和缩进…

NOIP2013提高组day2 - T3:华容道

题目链接 [NOIP2013 提高组] 华容道 题目描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次。于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少…

Element-ui图片懒加载

核心代码 <el-image src"https://img-blog.csdnimg.cn/direct/2236deb5c315474884599d90a85d761d.png" alt"我是图片" lazy><img slot"error" src"https://img-blog.csdnimg.cn/direct/81bf096a0dff4e5fa58e5f43fd44dcc6.png&quo…

debian cups 打印机共享

apt update apt install -y cups localhost:631 add printer root 密码 添加打印机 然后在windows上设置 http://ip:631/printers/HP_LaserJet_1022

[element-ui] 级联选择器el-cascader不触发change事件

el-cascader 使用官网的数据是可以的 官网数据中最后一级没有children // 删除最后一级的children changeKey(arr) {for (var i0; i<arr.length; i) {if (arr[i].children.length) {this.changeKey(arr[i].children)} else {delete arr[i].children}} ]就可以了 参考&…

HackTheBox - Medium - Linux - Shared

Shared Shared 是一台中等难度的 Linux 机器&#xff0c;它具有通向立足点的 Cookie SQL 注入&#xff0c;然后通过对 Golang 二进制文件进行逆向工程并利用两个 CVE 来获得 root shell 来提升权限。 外部信息收集 端口扫描 循例nmap Web枚举 查看证书 看到这个扫了一下vhos…

superset未授权访问漏洞(CVE-2023-27524)复现

Superset是一个开源的数据探索和可视化平台。它由Apache软件基金会支持&#xff0c;旨在帮助用户通过直观的方式探索、分析和可视化复杂的数据集。Superset支持多种数据源&#xff0c;包括关系型数据库、NoSQL数据库和各种其他数据存储系统。Apache Superset 2.0.1 版本及之前版…

Linux反向、分离解析与主从复制

前言 上篇介绍了DNS正向解析&#xff0c;本文将继续介绍反向解析与主从复制等内容。域名反向解析即从IP地址到域名的映射。为了完成逆向域名解析&#xff0c;系统提供一个特别域&#xff0c;该特别域称为逆向解析域。 目录 前言 一、反向解析 1. 配置bind服务 2. 修改区…

Redis的设计、实现

数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)hash(哈希)、list(列表)、set(集合)、zset (有序集合),但这些只是Redis对外的数据结构。 实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的…

十四.变量、异常处理

变量、异常处理 1.变量1.1系统变量1.1.1系统变量分类1.1.2查看系统变量 1.2用户变量1.2.1用户变量分类1.2.2会话用户变量1.2.3局部变量1.2.4对比会话用户变量与局部变量 2.定义条件与处理程序2.1案例分析2.2定义条件2.3定义处理程序2.4案例解决 1.变量 在MySQL数据库的存储过程…

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考&#xff1a; 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能&#xff0c;包括全新的M33内核、250M主频处…

软件测试|selenium 元素无此属性NoSuchAttributeException问题分析与解决

简介 在使用Selenium进行Web自动化测试时&#xff0c;我们可能会遇到NoSuchAttributeException异常。这个异常通常在尝试访问一个元素的属性&#xff08;attribute&#xff09;时抛出&#xff0c;但该属性不存在。本文将介绍NoSuchAttributeException异常的常见原因以及解决方…

Vue-15、Vue条件渲染

1、v-show 在Vue中&#xff0c;v-show是一个指令&#xff0c;用于根据表达式的值来控制元素的显示与隐藏。当指令的值为true时&#xff0c;元素显示&#xff1b;当指令的值为false时&#xff0c;元素隐藏。 v-show的用法如下&#xff1a; <!DOCTYPE html> <html lan…

代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差

代码随想录二刷 &#xff5c;二叉树 &#xff5c; 二叉搜索树的最小绝对差 题目描述解题思路 & 代码实现递归法迭代法 题目描述 530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#…

从0开始python学习-47.pytest框架之解决Template替换无法进行二次处理的问题之热加载

问题&#xff1a;当参数为动态参数时&#xff0c;Template替换无法进行二次处理 解决方案&#xff1a;通过热加载来进行替换 热加载原理&#xff1a;在代码运行的过程中动态的调用python中的方法达到获得动态参数 可以进行热加载的情况&#xff1a;yaml文件&#xff0c;随机…

用我这套模板,几分钟做出文档网站!

大家好&#xff0c;我是保姆皮&#xff0c;最近我上线了自己的《编程宝典》网站&#xff0c;可以在线阅读我分享过的各种编程学习路线和知识干货。 指路&#xff1a;https://codefather.cn/ 不少小伙伴催我出教程&#xff0c;说也想做个类似的文档网站。 所以我用最快的速度出了…

程序员如何写高水平简历?(附模板)

Q&#xff1a;什么是高水平的简历&#xff1f; A&#xff1a;满足HR需求的同时&#xff0c;最大化的体现自身价值的简历是高水平的简历 HR的需求是什么&#xff1f; ✅ HR想看到清晰专业的简历模板 ——家人们每天看几百份简历谁懂啊&#xff01;花里胡哨真看不下去一点&…

OpenAI 自带的检索功能好用吗?定量测评带你深度了解!

向量数据库的劲敌来了&#xff1f;又有一批赛道创业公司要倒下&#xff1f; …… 这是 OpenAI 上线 Assistant 检索功能后&#xff0c;技术圈传出的部分声音。原因在于&#xff0c;此功能可以为用户提供基于知识库问答的 RAG&#xff08;检索增强生成&#xff09; 能力。而此前…