如何利用大语言模型(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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解码 Elasticsearch 查询 DSL:利用 Elasticsearch 中的 has_child 和 has_parent 查询进行父子文档搜索

今天,让我们深入研究 has_child 查询和 has_parent 查询,这将帮助我们将 2 个不同的文档组合到一个索引中,从而使我们能够将它们与关系关联起来。 这样做会对我们搜索相关文档时有很大帮助。 在使用 has_child 及 has_parent 这种关系时&…

解决 rasa 中 slot 不能为中文的问题

解决 rasa 中 slot 不能为中文的问题 定位问题解决办法 定位问题 slots:姓名:type: textmappings:- type: custom如上的 slot 配置,在 rasa train 时会报以下错误: YamlValidationException: Failed to validate D:\project\python\rasa_test\y\domain…

Ansys Zemax | 如何使用 ZPL 创建用户自定义求解

附件下载 联系工作人员获取附件 本文使用两个示例演示了如何使用 ZPL 创建用户自定义解。第一个示例介绍了如何创建 ZPL 解以确保序列文件中像面的曲率半径等于系统的 Petzval 曲率。第二个示例介绍了如何在非序列元件编辑器 ( Non-Sequential Component Editor ) 中基于其他…

实战:使用docker容器化服务与文件挂载-2

接着上文,演示Elasticsearch 和 Kibana 的安装,并讲解文件挂载 Elasticsearch of Docker (Kibana) 1、Elasticsearch 安装 ElasticSearch 使用 Docker 安装:https://www.yuque.com/zhangshuaiyin/guli-mall/dwrp5b 1.…

C++ 实现十大排序算法

教你手撕排序,这里有一个概念就是稳定排序。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]r[j],且r[i]在r[j]之前&#…

vue2 +Html + css 实现房间状态图,酒店前台入住管理系统的设计与开发

一、需求分析 酒店管理系统是指一种可以提高酒店管理效率的软件或平台。其面向酒店前台工作人员和酒店管理员,界面美观大方、操作方便。系统强化以客源为中心的信息完整性、长久性、可操作性,突出以预订、房源、房价等对营销具有影响力的信息处理。 系统…

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝:触发阀值直接抛弃。冷启动:在一段时间内针对突发流量缓慢增长处理数量。 3)匀速器:请求以均匀的速度通过。 降级降级文档 1)RT 统计时间内,大于预设请求数量&…

Spring - 配置支持多数据源

目录 SpringBoot整合多数据源整合步骤具体整合步骤如下:1、在application.properties中配置出多个数据源2、在代码中创建出mapper目录,在mapper目录下创建出不同数据源的目录创建出目录MySQL数据源的MapperSQL Server数据源的Mapper 3、创建config packa…

数据结构实验2:队列的应用

目录 一、实验目的 二、实验原理 1.1 队列的基本操作 1.1.1 队列的定义 1.1.2 队列的初始化 1.1.3 入队操作 1.1.4 出队操作 1.1.5 检查队列是否为空 1.1.6 返回队列的长度 2.1队列的运用 三、实验内容 问题描述 代码 截图 分析 一、实验目的 1、理解并掌握队列…

Pod的亲和性和反亲和性

如何部署pod是重要的集群的调度机制,合理的配置pod调度机制可以实现资源最大化利用。 调度策略匹配标签操作符拓扑域调度目标node的亲和性主机标签In、NotIn、Exists、DoesNotExist、Gt、Lt不支持指定主机pod的亲和性pod的标签In、NotIn、Exists、DoesNotExist支持…

【DNS Server Spoofed Request Amplification DDoS漏洞修复】

文章目录 前言 之前对公司服务器做漏洞扫描,发现扫描工具提示存在这样一个漏洞,本来觉得漏洞利用率低,而且扫描百度,QQ等网站也会有此漏洞,主要是找了很久资料也不知道如何修复,所以暂未处理。但是近期由于…

基于ODBC的数据库应用(MFC)

文章目录 1.预备知识1.数据库概述1.数据库和DBMS2.结构化查询语言SQL(Structured Query Language)3.数据库方式种类1.ODBC(Open DataBase Connectivity)开放数据库连接2.DAO(Data Access Objects)数据访问对象3.OLE DB(OLE数据库) 2.MFC ODBC1.CRecordset类构造记录集属性记录集…

制作更好的待办事项清单的方法有哪些?

在忙碌的工作、学习或生活中,我们都渴望变得更加自律,希望每件事都能有目标、有计划地高效完成。而要实现这一愿望,一个精心制作的待办事项清单无疑是不可或缺的。那么,制作更好的待办事项清单的方法有哪些?高效的待办…

C++深入学习之模板

为什么需要模板 先来看下面一段程序: int add(int x, int y) {return x y; }double add(double x, double y) {return x y; }long add(long x, long y) {return x y; }string add(string x, string y) {return x y; }//T1 T2 T3 T3 add(T1 x, T2 y) {return…

Apache ActiveMQ 远程代码执行漏洞分析

漏洞简介 Apache ActiveMQ官方发布新版本,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …

docker部署firefox浏览器,实现远程访问

拉取firefox镜像,部署代码 docker run -d --name firefox -e TZAsia/Hong_Kong -e DISPLAY_WIDTH1920 -e DISPLAY_HEIGHT1080 -e KEEP_APP_RUNNING1 -e ENABLE_CJK_FONT1 -e VNC_PASSWORD12345678ABCabc -p 5800:5800 -p 5900:5900 -v /docker/firefox/config:/…

阿里云计算平台大数据基础工程技术团队直聘!!!

大数据基础工程技术团队,隶属于阿里云智能集团计算平台事业部,是一支负责阿里集团、公共云和混合云场景计算平台大数据&AI产品的稳定性建设、架构&成本优化、运维产品ABM(Apsara Big data Manager)研发和售后技术专家支持…

05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

目录 CMAK 各个功能的作用解释(主题)★ 主题★ 分区★ 创建主题:★ 列出和查看主题 CMAK 各个功能的作用解释(主题) ★ 主题 Kafka 主题虽然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 t…

好用的AI写作软件,这6款助你轻松写作

这几年,AI在线写作平台在国内市场上呈现出蓬勃发展的态势,这些写作软件能够帮助用户快速生成高质量的文章。下面我将介绍国内的6款AI在线写作平台,一起来看看吧! 第一个爱制作AI 爱制作AI是拥有智能创作的AI在线写作平台之一&…

深兰科技AI医疗健康产品获3000台采购订单

12月6日,武汉某企业与深兰科技签署协议,一次性采购3000台深兰科技AI生理健康检测仪——扁鹊。 深兰科技AI生理健康检测仪——扁鹊是深兰科技推出的人体生理指标检测产品。基于AI生物技术、融合互联网医疗及AIoT技术,深兰科技AI生理健康检测仪…