文章目录
- 一、背景
- 二、C-MTEB评测结果
- 三、性能不错的向量模型
- 腾讯Conan系列
- 阿里GTE系列
- 商汤Piccolo系列
- 合合信息acge系列
- 智源BGE系列
- 数元灵Dmeta系列
- jina系列
- OpenAI系列
- 四、业务中选择向量模型有哪些考量
- 五、洞察与总结
- 为什么需要RAG和Embedding向量化技术?
- RAG 和 Fine tuning的优缺点
- 六、参考资料
一、背景
随着大模型时代的爆发,检索增强生成技术(RAG)在大语言模型中广泛应用。RAG是一种性价比极高的方案,在大语言模型中占据重要地位。RAG(Retrieval-Augmented Generation)检索增强生成,即大模型LLM在回答问题或生成文本时,会先从大量的文档中检索出相关信息,然后基于这些检索出的信息进行回答或生成文本,从而可以提高回答的质量,而不是任由LLM来发挥。
Embedding模型作为RAG中检索召回的重要一环,扮演着极其关键的角色,直接影响到信息检索的效果和生成文本的质量。更加准确的Embedding模型在抑制模型幻觉、提升封闭领域回答能力等方面都能发挥优势。
为了解决传统机器学习文本处理中的维度灾难和特征语义信息捕捉不足的问题,研究者们提出了许多新的Embedding模型,它可以将高维度的数据转化为低维度的嵌入空间,并保留原始数据的特征和语义信息,从而提高模型的效率和准确性。
二、C-MTEB评测结果
C-MTEB是由北京智源研究院发布的最大规模、最为全面的中文语义向量表征能力评测基准,包含分类、聚类、句对分类、重排、检索和句子相似度六大类评测任务和31个数据集。
模型名称 | 排名 | 厂商 | 模型大小(million) | 内存使用(GB) | 维度 | Max Tokens | 检索精度 | 重排精度 | 平均精度 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
Conan-embedding-v1 | 1 | 腾讯Conan系列 | 326 | 1.21 | 1792 | 512 | 76.67 | 72.76 | 72.62 | 动态硬负样本挖掘;跨GPU平衡损失;利用LLM生成的提示-响应对进行训练 |
gte-Qwen2-7B-instruct | 6 | 阿里GTE系列 | 7613 | 28.36 | 3584 | 131072 | 76.03 | 68.92 | 72.05 | 整合双向注意机制,丰富上下文理解;指令调优,仅应用于查询端以提高效率;训练数据覆盖不同领域和场景 |
gte-Qwen1.5-7B-instruct | 14 | 阿里GTE系列 | 7099 | 26.45 | 4096 | 32768 | 70.62 | 66.38 | 69.56 | |
gte-Qwen2-1.5B-instruct | 22 | 阿里GTE系列 | 1776 | 6.62 | 1536 | 131072 | 71.86 | 68.21 | 67.65 | |
gte-large-zh | 26 | 阿里GTE系列 | 326 | 1.21 | 1024 | 512 | 72.49 | 67.40 | 66.72 | |
gte-base-zh | 28 | 阿里GTE系列 | 102 | 0.38 | 768 | 512 | 71.71 | 67.00 | 65.92 | |
Piccolo2 | 10 | 商汤Piccolo系列 | / | 1.21 | 1792 | / | 74.36 | 70.00 | 70.95 | 多任务混合损失训练:适用不同下游任务;大维度和MRL训练;高质量数据加持精度 |
Piccolo | 37 | 商汤Piccolo系列 | 163 | 0.61 | 1024 | / | 70.93 | 65.98 | 64.11 | |
acge_text_embedding | 15 | 合合信息acge系列 | 326 | 1.21 | 1792 | 1024 | 72.93 | 67.98 | 69.07 | 保持高性能同时资源占用更低 |
BGE-Multilingual-Gemma2 | 19 | 智源BGE系列 | 9242 | 34.43 | 3584 | 8192 | 73.73 | 68.28 | 68.44 | 基于大型语言模型的多语言向量模型,在多种语言和任务上训练,适应多样化的下游场景 |
BGE-large-zh-v1.5 | 33 | 智源BGE系列 | 326 | 1.21 | 1024 | 512 | 70.46 | 65.84 | 64.53 | |
BGE-M3 | / | 智源BGE系列 | 567 | 2.11 | 1024 | 8192 | / | / | / | 多功能(向量检索,稀疏检索,多表征检索);多语言(100种);多粒度(最大长度8192) |
Dmeta-embedding-zh | 23 | 数元灵Dmeta系列 | 103 | 0.38 | 768 | 1024 | 70.41 | 67.17 | 67.51 | 多任务、场景泛化性能优异;模型参数大小仅 400MB |
Dmeta-embedding-zh-small | 27 | 数元灵Dmeta系列 | 74 | 0.28 | 768 | 1024 | 67.70 | 66.92 | 66.10 | Dmeta-embedding-zh的蒸馏版本(8层BERT),模型大小不到300M |
jina-embeddings-v2-base-zh | 38 | jina系列 | 161 | 0.6 | 768 | 8192 | 69.40 | 66.57 | 63.79 | 中英双语无缝对接 |
text-embedding-ada-002 | 63 | OpenAI系列 | / | / | 1536 | 8191 | 52 | 54.28 | 53.73 |
注:空白处为数据尚未公布或更新
虽然我们可以通过 MTEB 排行榜对比不同向量模型的差异,但也只能作为一个参考,这些模型在公开数据集上的 benchmark 在垂直领域、企业自身的业务领域不一定成立,具体选择哪个向量模型还需结合业务特点进行综合比较、权衡。
三、性能不错的向量模型
腾讯Conan系列
- 动态硬 负样本 挖掘(Dynamic Hard Negative Mining) :Conan-embedding模型提出了一种动态硬负样本挖掘方法,这种方法可以在训练过程中动态地挖掘难负例,以适应模型处理能力的变化。具体来说,每100次迭代检查一次,如果负例的分数乘以1.15小于初始分数且绝对值小于0.8,就认为这个负例不再困难,并用新的难负例替换它。
- 跨GPU平衡损失(Cross-GPU Batch Balance Loss, CBB Loss) :由于对比学习需要尽可能多的负样本,但受限于GPU内存的限制,Conan-embedding模型使用了CBB Loss来提供更多的负样本进行嵌入训练,并在多个任务之间平衡批量大小,从而提高训练效率和效果。
- 利用 LLM 生成的提示-响应对进行训练:Conan-embedding模型还发现,大型语言模型(LLM)生成的提示-响应对可以用于嵌入训练,这有助于提升模型处理文本的能力。
阿里GTE系列
GTE(General Text Embedding)系列模型是由通义实验室开源的一系列通用文本表征和分析模型,它们专为RAG(检索增强生成)等检索场景设计,以提供先进的文本表征和排序功能。该系列包括基于BERT架构的模型以及基于Qwen LLM系列训练的大型语言模型(LLM)嵌入模型,例如gte-Qwen2-1.5B-instruct和gte-Qwen2-7B-instruct。目前,基于双向注意力机制的Encoder-only结构模型,在召回和排序效果上,相较于Decoder-only模型显示出明显的性能优势。
尽管如此,现有的基于Encoder-only的Embedding和Ranking模型仍然面临一些源自BERT时代的挑战,例如最长上下文长度限制为512个token,以及预训练阶段使用的语料库规模不足。为了克服这些问题,GTE模型的开发团队从零开始,训练了一种新的Encoder-only基础模型,该模型能够支持更长的上下文和多语言处理。在此基础上,他们推出了最新版本的GTE-Multilingual系列模型,简称为mGTE模型。这些模型旨在提供更强大的多语言支持和更长上下文的处理能力,以满足现代NLP任务的需求。
gte-Qwen2-7B-instruct 模型是基于 Qwen2-7B LLM 模型训练的,整合了双向注意力机制,增强了模型对上下文的理解能力;模型仅在查询侧进行指令微调,这种针对性的微调提高了模型在特定任务上的效率和性能;模型在包含多种语言的大型文本语料库上进行训练,这使得模型能够适用于多种语言和多种下游任务。
商汤Piccolo系列
商汤自研的通用Embedding模型Piccolo2目前支持512/2K/8K三种向量长度,其中8K模型是目前(2024.6.12)中文Embedding中能够实现对标OpenAI向量长度的模型。无论是应对幻觉和可解释性,还是应对长文,Piccolo2加持的商汤日日新5.0都完美地完成了从长文中处理和获取信息的任务。相比之前同量级的SOTA模型acge-embedding,Piccolo2模型综合评分提升了约1.9个点。
受到 OpenAI 的 text-embedding-v3的启发,商汤在研发Piccolo2时,也扩大了Embedding的维度尺寸,从1024 增加到1792。
与上一代(Piccolo)相比,Piccolo2 主要利用高效的多任务混合损失训练方法,有效地利用来自不同下游任务的文本数据和标签。 同时,Piccolo2 扩大了嵌入维度,并使用 MRL 训练来支持更灵活的向量维度。除了训练方法之外,Piccolo2 还利用了一个数据合成框架和难负挖掘方法,以不断扩充数据集的数量和质量。
合合信息acge系列
合合信息的acge模型在设计上充分考虑了实际应用的需求。与目前C-MTEB榜单上其他的开源模型相比,acge模型在保持高性能的同时,具有更小的模型体积和更低的资源占用,且模型输入文本长度为1024,使其更适用于实际生产环境。此外,模型支持的可变输出维度功能,使得企业可以根据具体场景灵活调整资源分配,进一步优化应用效果。
值得一提的是,acge模型不仅在传统文本处理任务中表现出色,还能在不同场景下构建通用分类模型,提升长文档信息抽取精度,为大模型在多个行业中的快速应用提供了有力支持。这一特性使得acge模型在帮助企业实现数字化转型、提升业务效率等方面具有广阔的应用前景。
智源BGE系列
BGE系列的技术亮点:
-
高效预训练和大规模文本微调;
-
在两个大规模语料集上采用了RetroMAE预训练算法,进一步增强了模型的语义表征能力;
-
通过负采样和难负样例挖掘,增强了语义向量的判别力;
-
借鉴Instruction Tuning的策略,增强了在多任务场景下的通用能力。
BGE时间线:
- BGE v1:智源研究院于2023年8月发布了首款模型BGE v1。BGE v1是一个中英文通用向量模型,经过数亿规模的中英文关联数据训练,能够准确表征不同场景下数据之间的语义相关性。它在主流基准MTEB(英文)、C-MTEB(中文)的评测中达到了当时的SOTA(State of the Art),特别在中文领域表现突出,填补了中文向量模型的空白。
- BGE v1.5:在BGE v1之后,智源研究院发布了BGE v1.5模型。BGE v1.5进一步扩展了模型的能力,增加了对“文本+图片”混合检索的支持,并保持了优异的文本检索性能。
- BGE M3:智源研究院在2024年1月发布了BGE M3模型。BGE M3是一个多语言、多粒度、多功能的语义向量模型,支持超过100种语言的语义表示及检索任务,最大输入长度扩展到8192,极大地满足了社区对于长文档检索的需求,并集成了稠密检索、稀疏检索、多向量检索三种检索功能。
- BGE Re-Ranker v2.0:智源研究院在2024年3月推出了新一代检索排序模型BGE Re-Ranker v2.0。这个模型支持更多语言,更长文本长度,并在多个主流基准上取得了state-of-the-art的结果。BGE Re-Ranker v2.0还借助分层自蒸馏策略进一步优化了推理效率,并新增了“文本+图片”混合检索能力。
- BGE-EN-ICL、BGE-Multilingual-Gemma2、BGE-Reranker-v2.5-Gemma2-Lightweight:智源研究院在2024年7月发布了三款新模型,这些模型进一步刷新了MTEB、BEIR、MIRACL、AIR-Bench等主要评测基准的最佳水平,并借助情境学习获得了出色的自适应能力。
数元灵Dmeta系列
Dmeta-embedding 是一款跨领域、跨任务、开箱即用的中文 Embedding 模型,适用于搜索、问答、智能客服、LLM+RAG 等各种业务场景,支持使用 Transformers/Sentence-Transformers/Langchain 等工具加载推理。优势特点如下: 多任务、场景泛化性能优异, 模型参数大小仅 400MB,对比参数量超过 GB 级模型,可以极大降低推理成本 支持上下文窗口长度达到 1024,对于长文本检索、RAG 等场景更适配。
jina系列
jina-embeddings-v2-base-zh 是支持中英双语的文本向量模型,它支持长达8192字符的文本编码。 该模型的研发基于BERT架构(JinaBERT),JinaBERT是在BERT架构基础上的改进,首次将ALiBi应用到编码器架构中以支持更长的序列。 不同于以往的单语言/多语言向量模型,jina设计双语模型来更好的支持单语言(中搜中)以及跨语言(中搜英)文档检索。
OpenAI系列
OpenAI 的 embedding 模型如text-embedding-ada-002,通过将五个独立的模型(文本相似性、文本搜索-查询、文本搜索-文档、代码搜索-文本和代码搜索-代码)合并为一个新的模型,在长文本搜索、文本相似性和代码搜索等任务上表现出色,它支持8191tokens 的输入长度。不过,OpenAI Embedding 并不是免费的,而是根据 token 数量来收费,这可能会增加一定的使用成本。
四、业务中选择向量模型有哪些考量
我们可以将 MTEB 作为选择向量模型的一个参考,但位于 MTEB 榜单 topK 的模型却并非一定适合企业自身的业务系统。在业务系统中,选择合适的 Embedding 模型是一个微妙的过程,受到多种因素的影响,比如知识库语言是中文、英文还是中英混合抑或是其他语言混合、切分文本块的长度、通用向量模型在垂类细分领域性能不佳、模型的精度、硬件的限制、检索时间限制等等。
第二章已经列出各个向量模型在支持序列长度、向量维度等方面的差异以及在检索和重排任务上的性能比较。下面列出一些关键的考量点:
- 处理长文本的能力: 切分的文本片段后续需要通过 Embedding 模型进行向量化,所以必须考虑向量模型对输入文本块的 tokens 长度限制,超出这个限制则会导致模型对文本进行截断,从而丢失信息,影响下游任务的性能。 不同的 Embedding 模型对文本块长度的支持能力不同。比如,BERT 及其变体通常支持最多 512 个tokens,处理长文本时则需要将文本分成更小的块,意味着需要更加精细化的分块策略。而 Jina AI 的 Embedding 模型和 bge-m3 模型则支持 8K 的 tokens 输入,适合处理长文本块。
- 存储和内存等资源需求:高维向量需要更多的存储空间,这可能会带来长期成本。较大的模型可能会占用更多内存,因此不适合内存有限的设备。
- 模型响应时间:Embedding 模型的处理速度在实时应用中尤为关键。例如,intfloat/e5-base-v2 模型(仅适用于英文文本)在处理速度上表现优异,但需要在 GPU上 运行以达到最佳性能。在选择模型时,需要评估其在嵌入和检索过程中的延迟。例如,OpenAI 的 Embedding 模型在许多基准测试中显示出较高的性能和较低的延迟。
- 可扩展性和性能:检查数据库在管理大量数据和维度方面的可扩展性。考虑其性能指标,包括查询响应时间和吞吐量,以确保它满足负载需求。
- 模型在特定领域的表现:通用 Embedding 模型在特定垂直领域可能不如专用模型有效。这些领域通常需要专门训练 Embedding 模型来捕捉特定的专业术语和语境。为特定业务需求优化的 Embedding 模型能够显著提升检索和生成的质量。例如,通过结合向量检索和重排序(reranking)技术,可以进一步优化结果。
- 语言支持和性能:选择的向量模型需要能够处理业务中使用的主要语言,无论是中文、英文还是多语言混合。例如OpenAI Embedding 和 bge-m3 等模型能够处理多种语言。
五、洞察与总结
为什么需要RAG和Embedding向量化技术?
纯参数化语言模型(LLM)将从大量语料库中获取的世界知识存储在模型的参数中。本身有以下的局限性:
-
知识更新滞后:大型语言模型通常基于固定的训练数据集,这意味着它们的知识是截止到某个时间点的。对于需要最新信息的场景,这些模型可能无法提供及时的更新。
-
模型幻觉:大型语言模型有时会生成看似合理但实际上是错误的信息。
-
数据覆盖不全面:尽管训练数据集非常庞大,但仍然可能存在某些领域或主题的数据覆盖不足,导致模型在这些领域的性能不佳。
幻觉:模型生成的内容与现实世界事实或用户输入不一致。
无法基于意图的文本搜索:指的是在没有RAG技术的情况下,系统可能无法有效地根据用户的输入意图在外部数据中搜索相关信息。
微调:为了让模型更好地适应特定任务或数据集。
RAG 可能是各方面综合之后的最优解。
RAG 和 Fine tuning的优缺点
特征比较 | RAG | Fine-Tuning |
---|---|---|
知识更新 | 直接更新检索知识库确保信息保持最新,而不需要频繁地再训练,使其非常适合于动态数据环境。 | 存储静态数据,需要对知识和数据更新进行再训练。 |
外部知识 | 精通利用外部资源,特别适合访问文档或其他结构化/非结构化数据库。 | 可用于将从预训练中获得的外部知识与大型语言模型相结合,但可能不太适合用于频繁更改的数据源。 |
数据处理 | 涉及最少的数据处理(data processing and handling)。 | 取决于高质量数据集的创建,有限的数据集可能不会显著提高性能。 |
模型定制 | 专注于信息检索和整合外部知识,但可能无法完全定制模型行为或写作风格。 | 允许基于特定音调或术语(specific tones or terms)调整LLM行为、写作风格或特定领域知识。 |
可解释性 | 响应可以追溯到特定的数据源,提供更高的可解释性和可追溯性。 | 与黑盒类似,人们并不总是清楚为什么模型会以某种方式做出反应,从而导致相对较低的可解释性。 |
计算资源 | 【数据库需要计算和存储】依赖于计算资源来支持与数据库相关的检索策略和技术。此外,它还需要维护外部数据源集成和更新。 | 【训练需要】高质量训练数据集的准备和管理,定义微调目标,并提供相应的计算资源是必要的。 |
延迟要求 | 涉及数据检索,这可能会导致更高的延迟。(一般来说检索的效率会比LLM生成的效率高很多,延迟可以做到ms级别) | 微调后的LLM可以在不检索的情况下响应,从而降低延迟。 |
减少幻觉 | 本质上不太容易产生幻觉,因为每个答案都以检索到的证据为基础。 | 可以通过基于特定领域数据训练模型来帮助减少幻觉,但在面对陌生输入时仍可能表现出幻觉。 |
道德隐私 | 从外部数据库中存储和检索文本会引起道德和隐私方面的问题。 | 训练数据中的敏感内容可能会引发道德和隐私问题。 |
六、参考资料
MTEB基准测评榜单:https://huggingface.co/spaces/mteb/leaderboard
Piccolo2:https://hub.baai.ac.cn/view/37797
BGE系列:https://github.com/FlagOpen/FlagEmbedding
大模型RAG 场景、数据、应用难点与解决:https://zhuanlan.zhihu.com/p/673465732
一文通透Text Embedding模型:从text2vec、openai-text embedding到m3e、bge:https://blog.csdn.net/v_JULY_v/article/details/135311471
12个RAG常见痛点及解决方案:https://segmentfault.com/a/1190000044614891
Mastering Multilingual Embedding Models for RAG: A Simplified Guide:https://crescitaai.com/multilingual-embedding-models
RAG 高效应用指南:Embedding 模型的选择和微调:https://53ai.com/news/qianyanjishu/2024061372409.html
探索更强中文Embedding模型:Conan-Embedding:https://blog.csdn.net/weixin_72959097/article/details/143078659