acge_text_embedding 文本向量化模型详解与 C-MTEB 评测分析
本文介绍国产自研文本向量化模型 acge_text_embedding,该模型基于俄罗斯套娃表征学习(MRL)框架,在 C-MTEB 中文语义向量评测基准中取得第一名。文章解析了模型原理、效果复现及与检索增强生成(RAG)技术的结合应用,展示了其在搜索、聚类、推荐等任务中的表现,并探讨了如何利用高质量向量表示解决大模型的幻觉与知识时效性问题。

本文介绍国产自研文本向量化模型 acge_text_embedding,该模型基于俄罗斯套娃表征学习(MRL)框架,在 C-MTEB 中文语义向量评测基准中取得第一名。文章解析了模型原理、效果复现及与检索增强生成(RAG)技术的结合应用,展示了其在搜索、聚类、推荐等任务中的表现,并探讨了如何利用高质量向量表示解决大模型的幻觉与知识时效性问题。

在人工智能的浪潮中,以 GPT4、Claude3、Llama 3 等大型语言模型(LLM)无疑是最引人注目的潮头。这些模型通过在海量数据上的预训练,学习到了丰富的语言知识和模式,展现了惊人的能力。在支撑这些大型语言模型应用落地方面,文本向量化模型(Embedding Model)的重要性也不言而喻。
近期,国产自研文本向量化模型 acge_text_embedding(以下简称'acge 模型')已经在业界权威的中文语义向量评测基准 C-MTEB(Chinese Massive Text Embedding Benchmark)中获得了第一名。本文将围绕以下问题,为大家带来 acge_text_embedding 模型解读以及应用思考:
文本向量化模型是自然语言处理(NLP)中的一项核心技术,它可以将单词、句子或图像特征等高维的离散数据转换为低维的连续向量,从而将文本数据转换为计算机能够处理的数值型向量形式。文本向量化模型通过将文本信息表示成能够表达文本语义的向量,使得机器能够理解人类语言的内在含义。
当文本信息被转换为向量形式后,输出的结果能够进一步地为多种后续任务提供有力支持,如:
而 acge 模型则是文本向量化模型的一种创新实现。
在主体框架上,acge_text_embedding 模型主要运用了俄罗斯套娃表征学习(Matryoshka Representation Learning,以下简称 MRL)这一灵活的表示学习框架。
类似于俄罗斯套娃结构,MRL 产生的嵌入向量也是一个嵌套结构,其旨在创建一个嵌套的、多粒度的表示向量,每个较小的向量都是较大向量的一部分,并且可以独立用于不同的任务。在训练时,MRL 根据指定维度 [64, 128, ..., 2048, 3072] 的向量来计算多个 loss。使得用户在推理时,可以根据自己的实际需求,输入维度参数,来得到指定维度的向量。
MRL 的优化问题可以表示为:
$$ \min_{{W(m)}{m \in M}, \theta_F} \frac{1}{N} \sum{i \in [N]} \sum_{m \in M} c_m \cdot L(W(m) \cdot F(x_i; \theta_F)_{1:m}; y_i) $$
其中,$L: \mathbb{R}^{L \times [L]} \rightarrow \mathbb{R}^+$ 是多类 softmax 交叉熵损失函数,而 $F(\cdot; \theta_F): X \rightarrow \mathbb{R}^d$ 是由参数 $\theta_F$ 参数化的深度神经网络,$N$ 是数据点的数量,$L$ 是类别的数量。
这种方法的核心思想是学习不同粒度的信息,允许一个嵌入向量在保持准确性和丰富性的同时,适应不同计算资源的需求,并可以无缝地适应大多数表示学习框架,并且可以扩展到多种标准计算机视觉和自然语言处理任务。
运用 MRL 技术,实现一次训练,获取不同维度的表征,acge 模型实现了从粗到细的层次化表示,从而提供了一种在推理和部署时不需要额外成本的灵活表示。另外,具体实践上,为做好不同任务的针对性学习,acge 模型使用策略学习训练方式,显著提升了检索、聚类、排序等任务上的性能;引入持续学习训练方式,克服了神经网络存在灾难性遗忘的问题,使模型训练迭代能够达到相对优秀的收敛空间。
下面我们对 acge 模型进行结果复现,acge 模型提供了预训练好的模型供试用与性能复现,首先安装 sentence_transformers 依赖:
!pip install --upgrade sentence_transformers
安装完成后,我们可以将源文本 source_text 设置为'家常菜烹饪指南',将想要计算相似度的目标文本 target_text 设置为 ['西红柿炒鸡蛋做法', '农家小炒肉做法', '上海本帮菜肴传统烹饪技艺', '汽车维修指南——检测、维修、拆装与保养'] 进行测试:
from sentence_transformers import SentenceTransformer
# 若无法访问 huggingface,可以在先离线下载模型到本地
model = SentenceTransformer('acge_text_embedding')
source_text = ["家常菜烹饪指南"]
target_text = ["西红柿炒鸡蛋做法", "农家小炒肉做法", "上海本帮菜肴传统烹饪技艺", "汽车维修指南——检测、维修、拆装与保养"]
embs1 = model.encode(source_text, normalize_embeddings=True)
embs2 = model.encode(target_text, normalize_embeddings=True)
similarity = embs1 @ embs2.T
print(similarity)
最终计算结果如下:
西红柿炒鸡蛋做法:0.495 农家小炒肉做法:0.618 上海本帮菜肴传统烹饪技艺:0.581 汽车维修指南——检测、维修、拆装与保养:0.277
其中,数值代表了表示源文本与目标文本之间的语义相关性,相似度值越接近于 1,文本之间的语义相关性越强,在这个例子中,我们可以看到不同领域的文本与源文本'家常菜烹饪指南'之间的相似度评估结果。
对于与烹饪相关的文本(如'西红柿炒鸡蛋做法'、'农家小炒肉做法'、'上海本帮菜肴传统烹饪技艺'),文本向量化模型表现出了较高的相似度值,这说明了该模型在捕捉烹饪领域文本之间的语义关联性方面的有效性。这种模型对于具有相似主题或语义的文本能够提供准确的相似度评估,这对于文本分类、推荐系统等任务具有重要意义。然而,对于与汽车维修相关的文本,相似度值较低,这是因为该文本与源文本的语义相关性较低。这突显了该模型的另一个优势,即其能够根据文本内容捕捉不同领域的语义特征,从而对文本进行有效的区分。
这说明 acge 模型能够有效地从文本中提取语义特征,并将其转化为向量表示,并且能够对文本之间的语义相关性进行准确的度量。
C-MTEB 是一个全面评估中文向量化模型通用性的基准,其收集 35 个公开可用的数据集,涵盖了六大类任务,包括分类、聚类、检索、排序、文本相似度、STS 等多种任务类型,为中文向量化模型的研究提供了统一的评估标准和有力的支持。
下面复现 acge 模型在 C-MTEB 的效果,首先使用 pip 安装 C_MTEB 依赖:
pip install -U C_MTEB
然后输入以下代码对 acge_text_embedding 进行评估:
import torch
import argparse
import functools
from C_MTEB.tasks import *
from typing import List, Dict
from sentence_transformers import SentenceTransformer
from mteb import MTEB, DRESModel
class RetrievalModel(DRESModel):
def __init__(self, encoder, **kwargs):
self.encoder = encoder
def encode_queries(self, queries: List[str], **kwargs) -> np.ndarray:
input_texts = ['{}'.format(q) for q in queries]
return self._do_encode(input_texts)
def encode_corpus(self, corpus: List[Dict[str, str]], **kwargs) -> np.ndarray:
input_texts = ['{} {}'.format(doc.get('title', ''), doc['text']).strip() for doc in corpus]
input_texts = ['{}'.format(t) for t in input_texts]
return self._do_encode(input_texts)
() -> np.ndarray:
.encoder.encode(
sentences=input_texts,
batch_size=,
normalize_embeddings=,
convert_to_numpy=
)
():
parser = argparse.ArgumentParser()
parser.add_argument(, default=, =)
parser.add_argument(, default=, =)
parser.add_argument(, default=, =)
parser.add_argument(, default=,
=, =)
parser.add_argument(, default=, =, =)
parser.parse_args()
__name__ == :
args = get_args()
encoder = SentenceTransformer(args.model_name_or_path).half()
encoder.encode = functools.partial(encoder.encode, normalize_embeddings=)
encoder.max_seq_length = (args.max_len)
task_names = [t.description[] t MTEB(task_types=args.task_type,
task_langs=[, ]).tasks]
TASKS_WITH_PROMPTS = [, , , , ,
, , ]
task task_names:
evaluation = MTEB(tasks=[task], task_langs=[, ])
task TASKS_WITH_PROMPTS:
evaluation.run(RetrievalModel(encoder), output_folder=args.output_dir, overwrite_results=)
:
evaluation.run(encoder, output_folder=args.output_dir, overwrite_results=)
在 Hugging Face 的榜单上可以看到,acge 模型已经在目前业界最全面、最权威的中文语义向量评测基准 C-MTEB 的榜单中获得了第一名的成绩。
由上表可以看到,acge_text_embedding 模型在'Classification Average (9 datasets)'这一列中,acge_text_embedding 取得了 72.75 的分数,显示出在文本分类任务上的优秀性能,在'Average (35 datasets)'这一列中取得了 69.07 的最高分数,表明在多个数据集上的综合出色表现,另外其相对适中的模型大小和内存大小,在模型规模和计算效率方面达到了良好的平衡。
与 Baichuan-text-embedding 相比,它在性能上更为出色,同时在处理多样化任务时具有更高的灵活性。而与阿里云的 OpenSearch-text-hybrid 相比,acge_text_embedding 的通用性更强,能够适用于多种文本处理任务。
除此之外,据合合信息开发团队成员介绍,相比于传统的预训练或微调垂直领域模型,acge 模型支持在不同场景下构建通用分类模型、提升长文档信息抽取精度,且应用成本相对较低,可帮助大模型在多个行业中快速创造价值,为构建新质生产力提供强有力的技术支持。
截至今天,以 GPT4、Claude3、Llama 3 等大型语言模型在各种任务上已经表现得越来越为出色,然而,在应用当中仍然存在一定局限性:
为了应对这类应用场景,检索增强生成模型 RAG(Retrieval-Augmented Generation)应运而生。RAG 模型的核心思想是在生成阶段引入检索机制,从预定义的知识库中检索相关信息,并将其合并到生成的文本中。这种方式能够弥补 LLM 在特定领域或最新知识方面的不足,从而提高了生成文本的准确性和相关性。
在 RAG 流程中,向量化模型负责将文档集合中的信息编码成向量表示,并且在用户查询时帮助检索出最相关的文档片段,这些文档片段的内容被并入用户输入中,并指导大语言模型基于这些文档片段生成回应。
用户可能会提出类似于'西红柿炒鸡蛋需要放糖吗?放多少合适?'这样的问题。在这种情况下,向量化模型可以把各种食材、烹饪技巧、口味偏好等关键特征翻译成机器能够理解的'语言',然后捕捉并理解它们之间的关系,比如它们常常一起出现在哪些菜谱中,这些菜谱又有着怎样的口味特点。这样,通过构建相关领域核心概念间的关联关系,RAG 就能轻松地在海量的烹饪数据中检索到相关的信息,从而有更大的机会检索到与用户查询匹配的最相关文档片段。最终生成的答案就更准确、权威,并且更能满足用户的需求。
acge 模型正是这样一种向量化模型,其具备良好的文本理解能力和表示学习能力,能够将文档的语义信息转化为高质量的向量表示,有效地捕捉文档的语义和内容信息,从而帮助模型准确地检索到与查询相关的文档片段。
随着 acge 模型在文本向量化任务上的提升,可以预见的是,幻觉和时效性的问题将得到进一步解决,大模型的可用性也将得到了有效提升,从而更好为诸如金融、咨询、教育等行业的智能客服、知识问答、合规风控、营销顾问等场景提供加持。
可以说,合合信息在深研智能文档处理领域之后,再次突破了文本向量化领域,达到了文本向量化模型的新高度。acge 模型作为其技术沉淀的结晶,为企业实现数字化转型和自动化管理提供了更强大的底层能力支持。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online