Zilliz 05月20日 19:51
从BGE到 CLIP,从文本到多模态,Embedding 模型选型终极指南
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文提供了一个实用的评估框架,帮助用户根据自身需求选择最合适的embedding模型。文章从明确任务和业务需求、评估数据特性、调研可用模型、评估候选模型、集成部署规划和端到端测试六个方面,详细介绍了如何选择和应用embedding模型。通过对不同模型的测试和比较,强调了选择最契合业务实际需求与技术约束的模型的重要性。

🧐 明确任务和业务需求是选择embedding模型的第一步。需要明确应用类型,如语义搜索、推荐系统等,并考虑ROI评估、多语言支持、专业领域支持和硬件/延迟要求等因素,以确保模型能够满足业务需求。

💡 评估数据特性对模型选择至关重要。文章强调了数据模态、领域特定性和embedding类型的选择。例如,文本数据可选择BERT、Sentence-BERT等模型;专业场景下,应考虑使用BioBERT等行业专用模型;同时,稀疏embedding与稠密embedding的混合使用也是一种有效策略。

🤔 调研可用模型是选择过程中的关键环节。应关注模型的受欢迎程度、版权与许可,并选择社区活跃、文档丰富的模型。此外,开源模型和第三方API模型的选择应根据自身运维能力、成本和数据隐私需求进行权衡。

✅ 评估候选模型需要进行质量评估、基准测试和负载测试。质量评估关注结果的真实性、相关性等;基准测试可参考公开benchmark,但需注意避免过拟合;负载测试则模拟真实并发请求,测试模型在高负载下的表现。

原创 王舒虹 2025-05-20 18:05 上海

最合适的模型不一定是 benchmark 分最高的

通过通过将原始输入转换为固定大小的高维向量,捕捉语义信息,embedding(嵌入)模型在构建RAG、推荐系统,甚至自动驾驶的模型训练过程中都产生着至关重要的影响。

即使 OpenAI、Meta 和 Google 等科技巨头,也选择在近些年来,在 embedding 模型的研发上持续加大投入。以 OpenAI 为例,其最新的  text-embedding-3-small生成 1536 维向量,在保持高语义表达能力的同时,实现了更低的延迟和更小的模型体积,适用于对性能敏感的大规模语义检索场景。Meta 则早在 2019 年就推出了 DLRM(Deep Learning Recommendation Model),以 embedding 层为基础构建用户和物品的向量表示,用于广告点击率预测。DLRM 至今仍是支撑 Meta 推荐系统的核心组件,服务于其每天数千亿次的推荐请求。

但要如何选择 embedding 模型?本文将提供一个实用的评估框架,我们可以根据自身需求选择最合适的 embedding 模型。

01

明确任务和业务需求

在选择模型前,首先需要明确你的核心目标:

02

评估数据特性

你的数据特性将直接影响模型选择。需考虑以下几点:

03

调研可用模型

了解任务与数据后,开始调研候选模型:

04

评估候选模型

初步筛选后,需在真实数据上测试模型质量:

一般来说,比较常见的基准测试榜单有以下几种:

(1)文本数据:MTEB 排行榜

HuggingFace 的 MTEB leaderboard 是一个一站式的文本 Embedding 模型榜,我们可以了解每个模型的平均性能。

(2)图像数据:ResNet50

有时候我们可能想要搜索与输入图像相似的图片。比如,当我们想寻找更多苏格兰折耳猫的图片。在这种情况下,您可以上传一张苏格兰折耳猫的图片,并要求搜索引擎找到类似的图片。

ResNet50 是一种流行的 CNN 模型,最初由微软在 2015 年使用 ImageNet 数据训练。

同样,对于视频搜索,ResNet50 仍然可以将视频转换为 Embedding 向量。然后,对静态视频帧进行相似性搜索,返回给用户最相似的视频作为最匹配结果。

(3)音频数据:PANNs

类似于以图搜图,也可以基于输入的音频片段搜索相似音频。

PANNs(预训练音频神经网络)是常用的音频搜索 Embedding 模型,因为 PANNs 基于大规模音频数据集预训练,并且擅长音频分类和标记等任务。

(4)多模态图像与文本数据:SigLIP

近几年,涌现了一批针对多种非结构化数据(文本、图像、音频或视频)混合训练的 Embedding 模型。这些模型能够在同一向量空间内同时捕获多种类型的非结构化数据的语义。

多模态 Embedding 模型支持使用文本搜索图像、为图像生成文本描述或以图搜图。

OpenAI 在 2021 年推出的 CLIP 是标准的 Embedding 模型。但由于其需要用户自行进行微调,并不好用,所以到了 2024 年,谷歌推出了的 SigLIP(Sigmoidal-CLIP)。该模型在使用 zero-shot prompt时取得了不错的表现。

(5)多模态文本、音频、视频数据

多模态文本-音频 RAG 系统大多使用多模态生成型 LLM。这类应用首先将声音转换为文本,生成声音-文本对,然后将文本转换为 Embedding 向量。之后我们可以像往常一样使用 RAG 来检索文本。在最后一步,文本被映射回音频。

OpenAI 的 Whisper 可以将语音转录为文本。此外,OpenAI 的 Text-to-speech (TTS) 模型也可以将文本转换成音频。

多模态文本-视频的 RAG 系统使用类似的方法首先将视频映射到文本,转换为 Embedding 向量,搜索文本,并返回视频作为搜索结果。

OpenAI 的 Sora 可以将文本转换成视频。与 Dall-e 类似,您提供文本提示,而 LLM 生成视频。Sora 还可以通过静态图像或其他视频生成视频。

05

集成部署规划

选定模型后,考虑集成策略:

06

端到端测试

在生产上线前,务必进行闭环测试:

如有必要,我们可以可以在自己的数据集上评估Embedding模型。以下是一个Embedding模型的流程示例:

数据集准备如下:

接下来,我们采用

pymilvus[model]

对于上述数据集生成相应的向量Embedding。关于 `pymilvus[model]` 使用,参见https://milvus.io/blog/introducing-pymilvus-integrations-with-embedding-models.md

    def gen_embedding(model_name):

        openai_ef = model.dense.OpenAIEmbeddingFunction(

            model_name=model_name, 

            api_key=os.environ["OPENAI_API_KEY"]

        )

        docs_embeddings = openai_ef.encode_documents(df['description'].tolist())

        return docs_embeddings, openai_ef

    然后,把生成的Embedding存入到Milvus 的collection。

      def save_embedding(docs_embeddings, collection_name, dim):

          data = [

              {"id": i, "vector": docs_embeddings[i].data"text": row.language}

              for i, row in df.iterrows()

          ]

          if milvus_client.has_collection(collection_name=collection_name):

              milvus_client.drop_collection(collection_name=collection_name)

          milvus_client.create_collection(collection_name=collection_name, dimension=dim)

          res = milvus_client.insert(collection_name=collection_name, data=data)

      查询

      我们定义查询函数,方便对于向量Embedding进行召回。

        def query_results(query, collection_name, openai_ef):

            query_embeddings = openai_ef.encode_queries(query)

            res = milvus_client.search(

                collection_name=collection_name, 

                data=query_embeddings, 

                limit=4,  

                output_fields=["text"],

            )

            result = {}

            for items in res:

                for item in items:

                    result[item.get("entity").get("text")] = item.get('distance')

            return result

        评估Embedding模型性能

        我们采用 OpenAI的两个 Embedding模型,

        text-embedding-3-small

         和 

        text-embedding-3-large

        ,对于如下两个查询进行比较。有很多评估指标,例如准确率、召回率、MRR、MAP等。在这里,我们采用准确率和召回率。

        准确率(Precision) 评估检索结果中的真正相关内容的占比,即返回的结果中有多少与搜索查询相关。

        Precision = TP / (TP + FP)

        其中,检索结果中与查询真正相关的内容 True Positives(TP), 而 False Positives(FP) 指的是检索结果中不相关的内容。

        召回率 (Recall)评估从整个数据集中成功检索到相关内容的数量。

        Recall = TP / (TP + FN)

        其中,False Negatives (FN) 指的是所有未包含在最终结果集中的相关项目

        对于这两个概念更详细的解释,参见 https://zilliz.com/learn/information-retrieval-metrics

        查询 1

        auto garbage collection

        相关项: Java, Python, JavaScript, Golang

        Rank

        text-embedding-3-small

        text-embedding-3-large

        1

        ❎ Rust

        ❎ Rust

        2

        ❎ C/C++

        ❎ C/C++

        3

        ✅ Golang

        ✅ Java

        4

        ✅ Java

        ✅ Golang

        Precision

        0.50

        0.50

        Recall

        0.50

        0.50

        查询 2: 

        suite for web backend server development

        相关项: Java, JavaScript, PHP, Python (答案包含主观判断)

        Rank

        text-embedding-3-small

        text-embedding-3-large

        1

        ✅ PHP

        ✅ JavaScript

        2

        ✅ Java

        ✅ Java

        3

        ✅ JavaScript

        ✅ PHP

        4

        ❎ C#

        ✅Python

        Precision

        0.75

        1.0

        Recall

        0.75

        1.0

        在这两个查询中,我们通过准确率和召回率对比了两个Embedding模型 

        text-embedding-3-small

         和 

        text-embedding-3-large

         。我们可以以此为起点,增加数据集中数据对象的数量以及查询的数量,如此才能更有效地评估Embedding模型。

        总结

        选型的关键是遵循以下六步:

          明确业务目标与任务类型

          分析数据特性与领域需求

          调研现有模型与授权模式

          用测试集和 benchmark 严格评估

          设计部署与集成方案

          进行全链路上线前测试

        要记住,最合适的模型不一定是 benchmark 分最高的,而是最契合你业务实际需求与技术约束的模型

        在 embedding 模型快速迭代的时代,也建议大家可以定期复盘已有选型,持续关注新的模型与技术,及时替换可能带来重大收益的解决方案。

        作者介绍

        王舒虹

        Zilliz Social Media Advocate

        推荐阅读

        DeepSearcher深度解读:Agentic RAG的出现,传统RAG的黄昏

        低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建

        不止语义检索,Milvus+LangChain全文检索RAG教程来了

        阅读原文

        跳转微信打开

        Fish AI Reader

        Fish AI Reader

        AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

        FishAI

        FishAI

        鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

        联系邮箱 441953276@qq.com

        相关标签

        Embedding模型 模型评估 语义搜索 推荐系统
        相关文章