|
摘要:在日常工作中,你是否遇到过这类情况:明明知识库里有相关内容,但检索结果却总是不尽如人意?用户提问一个问题,系统却返回了一些相关性较弱甚至完全不相关的文档?而且这个召回的分数还比较高,例如为1。如果你正在为这类问题困扰,那么问题的根源可能出在向量模型上。 向量模型作为检索系统的核心组成部分,直接决定了语义理解和匹配的准确度。如果模型本身能力不足或与应用场景不匹配,即使知识库内容再完善、系统架构再先进,也难以实现精准的检索效果。

为什么向量模型如此重要?
向量模型是构建知识库的基础,文档存储到知识库的第一步就是文档数据进行向量化,向量模型负责将文本转换为高维空间中的向量表示,理想的模型能够将语义相近的文本映射到彼此接近的向量空间位置。如果模型质量不高,就会出现:

如何选择向量模型
选择一个合适的向量模型需要考虑多个关键指标,而不仅仅是看模型大小或知名度。以下是需要重点考察的几个方面: 1. 语义理解准确度模型对文本语义的捕捉能力是核心指标,直接影响检索的相关性。 2. 多语言支持能力如果您的应用需要处理多种语言,模型的跨语言理解能力就尤为重要。 3. 领域适应性通用模型在特定领域(如医疗、法律、金融)可能表现不佳,需要考察模型在您所在领域的表现。 4. 推理速度与资源消耗在生产环境中,模型的推理速度和资源消耗直接影响用户体验和系统成本。
根据模型的技术路线与适用场景,当前主流的向量嵌入模型可分为以下四类,其在关键指标上各有侧重,适用于不同的业务需求:
| | | |
|---|
| 通用双塔模型 | bge-large-zh、text2vec-large-chinese | 训练规模大、泛化能力强,在多语言和跨领域场景中表现稳健 | | | 领域专用模型 | clinicalBERT、legal-bert、bio-clinical-embeddings | | | | 多模态模型 | | | | | 轻量化模型 | bge-small-en、MiniLM-L6-v2 | | |
我们常见的文档向量化一般都文字类型的,在选取向量模型的时候目前业界公认的标准是使用MTEB(Massive Text Embedding Benchmark)测试基准。 MTEB提供了全面的评估框架,包含多种任务类型(分类、聚类、检索、重排序等)来测试模型在不同场景下的表现。主要有三种测试类型: 您可以根据实际应用的语言环境选择合适的测试基准来评估模型。 地址为:https://huggingface.co/spaces/mteb/leaderboard 目前为止,千问的3款向量嵌入模型还是较好的模型,大家可以下载下来试一试。 MTEB 是一个综合性的基准测试,旨在全面评估文本向量模型在各种下游任务上的能力。它不仅仅测试我们最关心的“检索”能力,还从聚类、分类、重排序、配对分类、摘要检索等多个维度对模型进行考核,以此判断一个模型是否是“全方位高手”。 以下是 MTEB 包含的主要任务类别,每一类都代表了向量模型的一种典型应用场景: 1. 检索 (Retrieval)这是知识库应用中最核心、最受关注的任务。它模拟了一个真实场景:用户输入一个查询(query),模型需要从一个庞大的文档库(corpus)中找出最相关的文档。 测试内容:给定一系列查询和包含大量文档的语料库,计算每个查询与所有文档的相似度,并评估Top-k检索结果的准确性。 关键指标:nDCG@10(归一化折损累积增益,关注前10个结果的排名质量)、MAP@10(平均精度均值)、Recall@n(召回率) 等。 为什么重要:它直接决定了您的知识库系统能否准确找到用户问题对应的答案材料。如果一个模型在检索任务上得分低,那么它作为知识库的基石就不合格。 2. 重排序 (Reranking)在检索系统中,通常先用一个快速的模型(如BM25或轻量级向量模型)召回大量相关文档,再用一个更强大的模型对这批候选文档进行精细排序,这个步骤就是重排序。 测试内容:给定一个查询和一组候选文档(通常是检索系统初步召回的),模型需要为每个(查询,文档)对进行相关性打分,并输出更精确的排序。 关键指标:MAP(平均精度均值) 等。 为什么重要:它决定了最终呈现给用户的Top 1-3个结果是否是最优的。即使检索任务能找回相关文档,如果排序不对,用户最先看到的还是错误答案。 3. 聚类 (Clustering)此任务测试模型在没有标签的情况下,能否根据语义相似性将文本自动分组的能力。 测试内容:给定一组文本,模型为它们生成向量表示,然后使用聚类算法(如K-Means)进行分组,最后评估分组结果与真实类别标签的匹配度。 关键指标:V-Measure(一种对称的聚类评估指标,平衡了同质性和完整性)。 为什么重要:适用于数据探索、自动主题发现、文档归档等场景。 4. 分类 (Classification)此任务测试模型生成的向量是否包含足够丰富的语义信息,以供简单的分类器(如逻辑回归)进行准确分类。 测试内容:用模型为训练集和测试集文本生成向量表示,然后在向量之上训练一个简单的分类器,最后在测试集上评估分类准确度。 关键指标:Accuracy(准确率)、F1(F1分数) 等。 为什么重要:如果向量质量高,即使使用简单的线性分类器也能取得好效果。这证明了向量本身的可分辨性很强。 5. 配对分类 (Pair Classification)此任务测试模型判断两个文本是否属于同一类别或具有相同含义的能力。 测试内容:给定一对文本(如两个句子),模型生成它们的向量,并计算相似度分数,根据分数判断它们是否“相同”。 关键指标:AP(平均精度)、F1(F1分数) 等。 为什么重要:适用于重复问题检测、语义文本相似度(STS)、反抄袭等场景。 6. 文本摘要(Summarization)此任务专门评估模型在摘要相关任务上的表现,通常是判断摘要与原文的相关性,或不同摘要之间的相似性。 测试内容:例如,判断一个生成的摘要与参考摘要的语义相似度。 关键指标:CosSim(余弦相似度) 的相关系数等。 为什么重要:虽然不直接用于检索,但体现了模型对长文本核心语义的捕捉能力。 7. 其他任务 (STS, etc.)还包括像语义文本相似度 (Semantic Textual Similarity, STS)这样的经典任务,直接评估模型为两个句子生成向量的余弦相似度与人类评判的相似度得分之间的相关性。 根据以上测试任务。我们来看,对于向量嵌入模型,我们必须在检索和重排序任务上表现优秀,后面作为我们的知识库的时候效果才能好。 C-MTEB (MTEB 中文) | | | | | | | | | |
|---|
| multilingual-e5-large-instruct | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 85.98 | 72.86 | | 63.92 | | Qwen3-Embedding-0.6B | | | | | | | | | | | Qwen3-Embedding-4B | | | | | | | | | | | Qwen3-Embedding-8B | | 73.84 | 75.00 | 76.97 | 80.08 | | | 78.21 | |
以上是对中文测试任务的测试数据,大家可以关注一下综合任务,检索和重排任务的分值,则可以看到相关的各大模型的情况。希望这个数据对大家有所帮助。当然这些数据对于私有化部署大模型的小伙伴有用,线上阿里云或者火山引擎上的向量模型都是调优好的,效果都不会太差。 |