什么,你在开发RAG竟然还没听说过Embedding模型还有排名?在AI应用开发热潮中,Embedding模型的选择已成为决定RAG系统成败的关键因素。然而,令人惊讶的是,许多开发者仍依靠直觉或跟风选择模型,而非基于系统化评估。本文详细解析了ICLR 2025接收的MMTEB研究成果,这项由全球50多位研究者共同完成的工作,构建了覆盖250多种语言、500多个任务的嵌入模型评估基准。最令人震惊的发现是:参数量仅560M的模型竟然击败了参数量为7B的大模型! 这对资源受限的开发环境意义重大,证明我们可以在不牺牲性能的前提下,大幅降低部署成本。无论你是RAG系统开发者还是对多语言AI应用感兴趣的研究者,这篇文章都将为你带来全新视角。
在当今AI应用开发的浪潮中,检索增强生成(Retrieval-Augmented Generation,RAG)已经成为构建高质量、可靠AI系统的关键技术路径。作为RAG系统的核心组件,文本嵌入(Embedding)模型的选择直接决定了检索的质量和系统的整体表现。然而,令人惊讶的是,许多开发者在选择Embedding模型时仍然依赖于直觉、口碑或者简单地跟随热门趋势,而非基于系统化的评估结果。这种做法在单语言场景下尚且存在风险,在多语言应用中更是可能导致灾难性的后果。
很难想象,你辛辛苦苦构建的RAG系统在英语中表现出色,但在其他语言中却完全失效,这对于追求全球化的产品来说无疑是致命的。正是在这样的背景下,MMTEB(Massive Multilingual Text Embedding Benchmark)应运而生,它作为一个全面的多语言文本嵌入基准测试,为开发者提供了在250多种语言上评估嵌入模型性能的可能。如果你懒得继续阅读,记住下面这两张图,也好过你盲目跟风。至少,你以后会庆幸读过修猫的文章,了解Embedding模型排名。
详情请参考:https://github.com/embeddings-benchmark/mteb
这篇文章将深入解析MMTEB的设计理念、评估方法和关键发现,帮助你在RAG系统开发中做出更明智的模型选择。特别值得注意的是:MMTEB的研究结果挑战了"更大即更好"的传统观念——在多语言环境下,参数量仅有560M的multilingual-e5-large-instruct模型竟然击败了参数量为7B的模型。这一发现对于资源受限的开发环境具有重大意义,它表明我们可以在不牺牲性能的前提下,大幅降低部署和运行成本。
MMTEB研究是一项令人印象深刻的全球协作成果,由来自世界各地的50多位研究者共同完成,这一点从论文的作者列表中可见一斑。该研究已被ICLR 2025接收为会议论文,这进一步证明了其学术价值和影响力。
团队成员包括来自学术界和工业界的专家,他们带来了多样化的专业知识和视角。特别值得一提的是,团队成员来自不同的语言背景,北大也参与了这个项目,这对于构建一个真正多语言的基准测试至关重要。例如,团队包括了来自亚洲、欧洲、北美和非洲等地区的研究者,他们熟悉各自地区的语言和文化特点。
这种多元化的团队组成确保了MMTEB能够真正理解和评估不同语言的嵌入模型性能,而不仅仅局限于英语或其他主流语言。此外,团队成员的专业背景也非常多样,涵盖了自然语言处理、机器学习、语言学和计算机科学等多个领域,这使得MMTEB的设计和评估方法能够从多个角度考虑问题,更加全面和严谨。这种大规模、多元化的研究协作不仅提高了研究结果的可靠性和代表性,也为未来的多语言NLP研究树立了榜样,展示了开放协作在推动技术进步中的重要作用。
MMTEB不仅仅是一个简单的基准测试,它代表了文本嵌入评估领域的一场革命。在MMTEB出现之前,嵌入模型的评估往往局限于特定领域、特定任务或特定语言,缺乏全面性和代表性。例如,BEIR基准主要关注信息检索任务,而早期的MTEB虽然覆盖了多种任务类别,但其多语言能力主要来自机器翻译的数据集。
如上图所示,MMTEB通过一项大规模的开放协作努力,汇集了来自不同语言背景的原生语言使用者、NLP实践者、学术和工业研究人员的智慧,构建了一个包含超过500个不同任务、覆盖250多种语言的庞大评估体系。这些任务横跨10个任务类别,包括语义文本相似度、分类、多标签分类、对分类、双文本挖掘、摘要、聚类、检索、指令检索和改写等,涵盖了从小说、社交媒体到医学文本和技术编程文档等各种领域。
MMTEB的前沿性不仅体现在其规模和覆盖范围上,还体现在其评估方法的创新上。它引入了指令跟随、长文档检索、推理任务和跨语言检索等挑战性任务,这些任务更贴近实际应用场景,能够更全面地评估模型的实用性能。此外,MMTEB特别关注低资源语言社区的需求,通过优化评估过程,显著降低了计算成本。例如,通过使用仅占原始文档2%的样本(字符数为原始的6%),MMTEB能够在保持准确排名的同时,将7B参数模型的评估时间从数天缩短到H100 GPU上的3.11小时。这种优化使得即使是资源有限的团队也能够进行全面的模型评估,从而做出更明智的技术决策。
构建一个覆盖250多种语言、500多个任务的基准测试绝非易事,MMTEB团队采用了一系列创新方法来确保基准的质量和可靠性。首先,他们实施了一个基于积分的系统来明确贡献者的角色和期望,类似于Lovenia等人在2024年的工作。这种透明的协作机制通过GitHub进行管理,确保了整个过程的开放性和可追踪性。
为了保证任务质量,每个提交的任务都经过至少一位主要贡献者的审核,并要求包含详细的元数据字段,如注释来源、数据集来源、许可证、方言和引用信息等。此外,研究团队还确保所提交任务的性能落在合理范围内,避免出现过于简单或不切实际的高性能。
他们要求在每个任务上运行两个多语言模型(ultilingual-e5-small和MiniLM-L12),如果模型得分接近随机基线(在2%的范围内)、接近完美分数,或者两个模型获得大致相似的分数,则会对任务进行进一步检查。这些检查旨在识别实现缺陷或数据质量问题,然后决定是否排除或包含该任务。在可能的情况下,他们会在做出最终决定前咨询熟悉目标语言的贡献者。
值得注意的是,即使任务未通过这些检查,也可能被包含在基准中,因为接近随机基线的分数可能是由于任务本身的固有难度,而非数据质量问题。这种严格的质量控制流程确保了MMTEB基准的可靠性和代表性,使其成为评估嵌入模型多语言能力的权威标准。
在构建MMTEB的过程中,研究团队深刻认识到计算资源限制与低资源语言之间的常见共现关系,这被称为低资源双重约束。为了使基准测试对低资源社区更加友好,他们实施了三种主要的优化策略。
第一种策略是对数据集进行下采样并缓存嵌入。对于聚类任务,他们提出了一种引导方法,在多个集合中重用已编码的文档。具体来说,他们首先对语料库的4%子样本进行编码,然后不放回地抽样10个集合。每个集合都使用k-means聚类,并记录性能估计。这种方法在某些任务中将编码文档的数量减少了100倍,同时保持了模型的相对排名(平均Spearman相关性:0.96)。
如上图所示,即使只使用原始文档的2%,模型在MTEB(eng, v1)和MTEB(eng, v2)上的性能排名仍然保持高度一致(Pearson相关性0.96,Spearman相关性0.90)。这证明了MMTEB优化策略的有效性,大大降低了评估的计算成本。
对于检索任务,他们采用了TREC池化策略,为每个查询保留排名前250的文档。这种方法在保持绝对分数和相对排名的同时,将最大的数据集从超过500万文档减少到最多25万文档。对于双文本挖掘任务,他们通过缓存嵌入来减少嵌入计算的数量,使其与语言数量成线性关系而非二次关系。
第二种策略是鼓励贡献者在提交前对数据集进行下采样。他们使用基于目标类别的分层分割,确保下采样的数据集能够有效区分候选模型。
第三种策略是任务选择,旨在构建一个可靠预测基准外任务分数的任务子集。他们采用了受Xia等人(2020年)启发的方法,将任务性能视为预测问题中的特征,并使用后向选择方法来移除最可预测的任务。
这些优化策略共同作用,显著降低了评估的计算成本,使MMTEB成为一个既全面又实用的基准测试。
为了确保评估的公平性和代表性,MMTEB团队精心选择了一系列具有代表性的模型,涵盖了不同规模和类型的多语言模型。他们评估了基于副语料库训练的多语言LaBSE,英语和多语言版本的MPNet和MiniLM模型(这些模型在多样化的数据集上进行了训练),以及使用两步弱监督方法训练的多语言e5系列模型。
此外,为了理解规模和指令微调的作用,他们还评估了基于Mistral 7B模型的GritLM-7B和e5-multilingual-7b-instruct。所有模型的修订ID、实现细节和使用的提示都在论文附录中提供,确保了实验的可重复性。
在性能指标方面,他们报告了跨所有任务的平均分数、每个任务类别的分数以及按任务类别加权的分数。为了计算模型排名,他们使用了源自社会选择理论的Borda计数方法,这种方法在比较NLP系统时被证明更加稳健。在这种方法中,每个任务被视为一个偏好投票者,为每个模型投票,然后根据Borda计数方法汇总分数。在出现平局的情况下,他们使用锦标赛Borda计数方法。这种严格的评估方法确保了结果的可靠性和公正性,为开发者提供了真实的模型性能参考。
MMTEB的评估结果揭示了几个令人惊讶的发现,挑战了我们对嵌入模型的传统认知。首先,经过指令微调的模型在所有任务类别中都显著优于未经指令微调的模型。这一点在比较multilingual-e5-large与其指令微调版本(multilingual-e5-large-instruct)时尤为明显。指令微调在双文本挖掘和聚类任务上的效果最为显著,但在所有任务类别中都表现出明显的提升。值得注意的是,这种提升是在使用通用任务类别提示且没有针对每个任务进行模型特定提示调整的情况下实现的。
如上图所示,更令人惊讶的是,基于XLM-R Large的multilingual-e5-large(-instruct)模型通常优于基于Mistral-7B的e5-mistral-7b-instruct和GritLM-7B,尽管后者的参数量要大得多。图中清晰地表明,尽管multilingual-e5-large-instruct的参数量(约5亿)远小于GritLM-7B(约70亿),但它们的性能相当。这种效果在中低资源语言(<3亿使用者)中尤为明显,可能是由于预训练的差异——Mistral主要在英语上预训练,而XLM-R针对100种语言进行预训练。所有三个模型在微调时都使用了类似的多语言数据集。
图3:语言资源与模型性能排名关系图。基于Mistral的模型在高资源语言上表现较好,但在低资源语言上被multilingual-e5-large-instruct超越。
上图进一步证实了这一点,它展示了MTEB(European)和MTEB(Indic)上前三名多语言模型的性能排名,按照语言的使用者数量排序。图中显示,基于Mistral的模型在高资源语言上表现较好,但在低资源语言上被multilingual-e5-large-instruct超越,尽管后者参数量更少。
然而,GritLM在MTEB(Multilingual)的检索任务上仍然表现最佳,它具有更高的最大序列长度,并且在MTEB(Code)和MTEB(eng, v2)上优于multilingual-e5-large-instruct。多语言基准排名的差异似乎主要源于预训练的差异。
虽然多语言基准获得了看似相似的性能排名,但存在一些显著的差异。这些差异主要源于预训练期间的狭窄多语言焦点(GritLM-7B、e5-mistral-7b-instruct、multilingual-mpnet-base),导致在目标语言(通常是中高资源或欧洲语言)上表现不成比例地更好。在MTEB(Europe)的低资源语言和MTEB(Indic)的所有语言上,这些模型通常被基于XLM-R的multilingual-e5-large-instruct所超越,尽管后者的参数量要小得多。
MMTEB的研究结果对RAG系统开发者提供了几点重要启示。首先,模型大小并不总是决定性因素。在多语言环境中,一个经过良好预训练和指令微调的较小模型(如multilingual-e5-large-instruct,560M参数)可能比参数量为7B的大型语言模型表现更好。这意味着开发者可以在不牺牲性能的情况下,大幅降低部署和运行成本。
其次,预训练语言覆盖范围对模型性能至关重要。如果你的应用需要支持多种语言,特别是包含低资源语言,那么选择在多语言数据上预训练的模型(如基于XLM-R的模型)比选择主要在英语上预训练的模型更为明智。
第三,指令微调显著提升模型性能。即使使用通用任务提示,经过指令微调的模型也能在各种任务上表现出色。因此,在选择模型时,应优先考虑那些经过指令微调的版本。
第四,任务特性应该影响模型选择。例如,如果你的应用主要涉及检索任务,那么GritLM-7B可能是更好的选择,因为它在MTEB(Multilingual)的检索任务上表现最佳。但如果你的应用需要处理多种任务类型,特别是在低资源语言环境中,那么multilingual-e5-large-instruct可能是更平衡的选择。
最后,英语模型在非英语语言上的表现通常很差。如果你的应用需要支持多种语言,避免使用仅在英语上训练的模型(如all-MiniLM-L12、all-MiniLM-L6、all-mpnet-base)。
这些研究发现为开发者提供了清晰的指导,帮助他们根据具体应用需求选择最合适的嵌入模型。
让我们通过一个实际案例来说明如何将MMTEB的研究发现应用于多语言RAG系统开发。假设你正在构建一个面向全球用户的客户支持RAG系统,需要支持英语、西班牙语、中文、阿拉伯语和斯瓦希里语等多种语言。
根据MMTEB的研究结果,你应该优先考虑multilingual-e5-large-instruct模型,因为它在多语言环境中表现出色,特别是对于低资源语言。在系统架构设计上,你可以采用统一的嵌入模型来处理所有语言,而不是为每种语言使用单独的模型,这不仅简化了系统架构,还能提高整体性能。
在提示工程方面,即使使用通用任务提示,指令微调模型也能表现良好,但你可以进一步优化提示以适应特定领域和语言的需求。例如,对于客户查询嵌入,你可以使用类似"将这个客户查询表示为嵌入,以便检索相关支持文档"的提示;对于支持文档嵌入,可以使用"将这个支持文档表示为嵌入,以便与客户查询匹配"的提示。
在评估方面,你应该使用MMTEB提供的多语言基准来全面评估系统在各种语言上的性能,而不仅仅关注英语性能。此外,你还应该收集真实用户查询数据,构建特定于你的应用领域的评估集。
在系统优化方面,你可以借鉴MMTEB的优化策略,如对大型文档集合进行下采样和缓存嵌入,以提高系统效率。通过这些最佳实践,你可以构建一个既高效又高性能的多语言RAG系统,为全球用户提供优质的客户支持体验。
MMTEB的研究结果为我们提供了重新思考嵌入模型选择的契机。传统观念认为,更大的模型通常意味着更好的性能,但MMTEB的评估结果表明,在多语言环境中,一个经过良好预训练和指令微调的较小模型可能比参数量大得多的模型表现更好。这一发现对于资源受限的开发环境具有重大意义,它表明我们可以在不牺牲性能的前提下,大幅降低部署和运行成本。
此外,MMTEB还强调了预训练语言覆盖范围和指令微调的重要性,这为模型选择提供了新的维度。作为RAG系统开发者,我们不应该盲目追随热门趋势或简单地选择最大的模型,而应该基于系统化的评估结果,考虑应用的具体需求和约束,选择最合适的嵌入模型。
文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。
【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。
视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/
项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0