如何使用大型语言模型创建定制嵌入模型

2024年01月09日 由 camellia 发表 308 0

理想情况下,你应该能够为你的应用创建定制的嵌入模型。然而,训练嵌入模型伴随着许多挑战和困难。这就是为什么开发人员通常使用为通用应用预训练的嵌入模型。


微软的研究人员最近提出了一种技术,它能显著降低训练定制嵌入模型的成本和复杂性。这项技术使用开源的LLM,而不是BERT式的编码器,以减少重新训练的步骤。它还使用专有的LLM自动生成标记过的训练数据。这类研究可以开启新的LLM应用,使组织能够为他们的需求创建定制化的LLM。


训练嵌入模型的挑战


42


嵌入模型创建捕捉输入数据主要特征的数值表示。例如,单词嵌入捕捉单词的语义含义,句子嵌入捕捉句子中单词的关系。图像嵌入表示它们输入的视觉特征。嵌入对于各种任务非常有用,如比较两个单词、句子或文本的相似性。


嵌入的一个重要应用是与LLM结合使用的检索增强生成(RAG)。在RAG中,嵌入帮助找到和检索与用户提示相关的文档。检索到的文档内容被插入到提示中,然后指导LLM根据文档生成响应。RAG使LLM能够避免幻觉并完成涉及超出其训练数据集之外的信息的任务。


RAG的质量高度依赖于嵌入模型的质量。如果嵌入没有捕捉到来自文档的正确特征并将它们匹配到用户提示,则RAG流水线将无法检索相关文档。


在定制数据上训练嵌入模型是提高特定应用质量的方法之一。但目前流行的嵌入模型采用的是一个多阶段训练过程。首先在一个大规模的、通过对比学习获得的弱监督文本对数据集上训练模型。然后在一个小规模但质量高的、经过仔细标记的示例数据集上进行微调。


这种方法的问题是,它需要大量工程努力来策划相关的文本对。它还依赖于手动收集的数据集,这些数据集通常只覆盖少数任务和语言。这就是为什么,大多数情况下,开发者使用可能不适合他们应用的通用嵌入模型。


LLM作为嵌入模型


43


微软提出的新技术在单一阶段内训练嵌入,而不是其他模型中使用的两阶段方法。为此,他们依赖于诸如GPT-4之类的专有LLM来为多种嵌入任务生成合成数据。


首先,他们引导GPT-4创建一个小型的候选任务池。接下来,他们将候选任务馈入模型,并引导它生成训练示例。


44


我在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."
}

研究人员还没有发布他们实验的任何源代码或数据。但你可以在我创建的这个Python笔记本中看到一个非常简化版本的流水线。自然,这是一个非常灵活的过程,您可以根据您的需要轻松定制模板。


为了增加数据集的多样性,研究人员设计了多个提示模板并将它们结合起来。总体上,他们通过Azure OpenAI服务用GPT-3.5和GPT-4生成了500,000个示例,其中包含150,000个独特的指令。他们的总代币消耗约为1.8亿,这可能会花费约5000美元。


有趣的是,研究人员使用他们的训练数据来微调一个开源的自回归模型,而不是像BERT这样的双向编码器,后者是常规做法。前提是,由于这些模型已经在非常大的数据集上进行了预训练,它们可以以非常低的成本进行嵌入任务的微调。


他们在合成数据和13个公共数据集上测试了他们的方法。使用不同的技术,如LoRA,他们降低了训练成本。他们能够在流行的基准数据集上获得最先进的结果,甚至在RAG和嵌入质量基准测试中超越了OpenAI的Ada-002和Cohere的嵌入模型。


LLM和嵌入


该论文的主要发现是,在嵌入任务中训练自回归模型如Mistral-7B时,不需要经历昂贵的对比式预训练阶段


“广泛的自回归预训练使LLM能够获得良好的文本表示,只需要最少的微调就可以将它们转变为有效的嵌入模型,”他们写道。


他们的发现还表明,LLM应该能够以非常低的成本生成适合的训练数据来微调嵌入模型。这对未来的LLM应用产生重要影响,使组织能够为他们的应用创建定制的嵌入。


“我们认为,生成语言建模和文本嵌入是同一枚硬币的两面,两个任务都需要模型对自然语言有深刻的理解,”研究人员写道。“给定一个嵌入任务定义,一个真正健壮的LLM应该能够自己生成训练数据,然后通过轻量级的微调转变为嵌入模型。我们的实验揭示了这个方向的潜力,需要更多的研究来充分探索它。”

文章来源:https://bdtechtalks.com/2024/01/08/microsoft-llm-embeddings/
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消