在大型语言模型(LLMs)迅速发展的今天,检索增强生成已经成为提升模型性能的重要手段。然而,随着RAG框架的广泛应用,文本Embedding模型逐渐成为制约其进一步发展的瓶颈。传统Embedding模型在处理多语言、多领域任务时,往往因训练数据质量不高而表现欠佳。为此,我们推出了KaLM-Embedding(Knowledge in large Language Models into Embedding)模型,其在MTEB(Massive Text Embedding Benchmark)基准测试中,多语能力超越了同规模的其他模型。
在KaLM-Embedding模型的开发过程中,我们精心设计了数据收集策略,以确保模型在多语言、多领域的任务中表现出色。
尽管微调数据以中文和英文为主,仅包含少量多语言数据,但模型在其他语言上的表现依然令人满意,表明预训练LLMs的多语言优势可以成功转移到嵌入模型中。
我们利用Qwen2-72B-Instruct生成了55万条高质量的合成数据,涵盖6种任务类型和4万条独特指令。为了增强数据的多样性,我们引入了Persona Hub中的随机角色作为系统提示,有效提升了生成数据的领域多样性。由于4种检索任务需要在生成数据之前生成指令,我们仅在指令生成阶段引入角色,避免了两个阶段之间角色冲突。
除了使用批内负样本外,我们还从数据集的语料库中检索难负样本。然而,某些查询可能对应多个正确文档或答案,或过于宽泛,导致与多个文档相关联,尽管相关性较低。这些情况会引入假负样本,对模型优化产生不利影响。
为了解决这一问题,我们采用了排序一致性过滤(top-k过滤)方法,通过对查询与其原始正样本数据在整个文档语料库中的相似度进行排名,过滤掉正样本数据对排名不在前k位的样本。这一过程与难负样本挖掘同时进行,以避免冗余计算。