RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配

Embedding评估榜单MTEB MTEB——海量文本嵌入基准测试(MassiveTextEmbeddingBenchmark)中文榜单(截至 2024/10/30)提供了一组人工编写和机器生成的摘要。目的是给机器生成的摘要进行打分,对每个机器生成的摘要嵌入,计算与所有人类摘要嵌入的距离。最接近的分数被保留并用作单个机器生成摘要的模型分数。 阅读详情

Text Embedding 榜单:MTEB、C-MTEB
《MTEB: Massive Text Embedding Benchmark(海量文本嵌入基准)》
判断哪些文本嵌入模型效果较好,通常需要一个评估指标来进行比较,《MTEB: Massive Text Embedding Benchmark(海量文本嵌入基准)》就是一个海量文本嵌入模型的评估基准

  • 论文地址:https://arxiv.org/abs/2210.07316
    MTEB 包含 8 个语义向量任务,涵盖 58 个数据集和 112 种语言。通过在 MTEB 上对 33 个模型进行基准测试,建立了迄今为止最全面的文本嵌入基准。我们发现没有特定的文本嵌入方法在所有任务中都占主导地位。这表明该领域尚未集中在一个通用的文本嵌入方法上,并将其扩展到足以在所有嵌入任务上提供最先进的结果
  • github 地址:https://github.com/embeddings-benchmark/mteb#leaderboard

img

img

  • github:https://github.com/FlagOpen/FlagEmbedding/blob/master/README.md

语义向量模型(Embedding Model)是语言模型生态体系中的重要组成部分,这一技术被广泛应用于搜索(Search)、问答(QA)、大语言模型检索增强(RAG)等应用场景之中。智源 BGE(BAAI General Embedding)模型自去年 8 月发布后广受好评,被开源爱好者集成至 LangChain、Llama_index 等项目,全球下载量已达 713 万次。

近日,智源发布了 BGE 家族新成员——通用语义向量模型 BGE-M3,支持超过 100 种语言,具备领先的多语言、跨语言检索能力,全面且高质量地支撑 “句子”、“段落”、“篇章”、“文档” 等不同粒度的输入文本,最大输入长度为 8192,并且一站式集成了稠密检索、稀疏检索、多向量检索三种检索功能,在多个评测基准中达到最优水平。

BGE-M3 是首个集多语言(Multi-Linguality)、多粒度(Multi-Granularity)、多功能(Multi-Functionality)三大技术特征于一体的语义向量模型,极大提升了语义向量模型在现实世界的可用性。目前,BGE-M3 已向社区全面开源并支持免费商用许可

img

img

  • 论文:https://arxiv.org/abs/2402.03216 M3-Embedding: Multi-Linguality, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation

本文介绍了一种名为 M3-Embedding 的新嵌入模型,该模型在多语言性、多功能性和多粒度方面具有独特优势。它为超过 100 种工作语言的语义检索提供了统一支持。它可以同时完成三种常见的检索功能:密集检索、多向量检索和稀疏检索。此外,它还能处理不同粒度的输入,从短句到长达 8,192 个标记的长文档。M3-Embedding 的有效训练提出了一系列技术贡献。值得注意的是,我们提出了一种新颖的自知识蒸馏方法,其中不同检索功能的相关性分数可以作为教师信号整合,以增强训练质量。我们还优化了批处理策略,实现了大批量和高训练吞吐量,以提高嵌入的判别性。M3-Embedding 在我们的实验中表现出卓越的性能,在多语言、跨语言和长文档检索基准测试中取得了新的最先进成果

img
检索流程的建议:建议使用 “混合检索 + 重排序” 的方式进行检索。

混合检索 (Hybrid Retrieval) 利用多种方法的优势,提升检索准确率和泛化能力。经典的混合检索方案包括结合嵌入检索与 BM25 算法,现在你可以使用支持密集与稀疏检索的 BGE-M3,在生成密集嵌入的同时获得类似 BM25 的词元权重。可以参考 Vespa 和 Milvus 实现混合检索。

重排序 (Re-Ranking) 模型通过交叉编码器的方式,比双编码器模型具有更高的准确率。例如,在检索后使用 bge-reranker 或 bge-reranker-v2 进一步筛选文本。

  • 技术规格
模型名维度序列长度介绍
BAAI/bge-m310248192多语言,基于统一的微调(密集、稀疏、ColBERT)
BAAI/bge-m3-unsupervised10248192对比学习训练,来自 bge-m3-retromae
BAAI/bge-large-en-v1.51024512英文模型
BAAI/bge-base-en-v1.5768512英文模型
BAAI/bge-small-en-v1.5384512英文模型
  • 不同检索方法的介绍
  1. 密集检索: 通过将文本映射到单一嵌入向量进行检索,例如 DPR、BGE-v1.5。
  2. 稀疏检索(词汇匹配): 通过计算文本中出现的词元权重,常用模型如 BM25、unicoil、splade。
  3. 多向量检索: 使用多个向量来表示文本,例如 ColBERT。
  • 对于嵌入检索,可以按照 BGE 的用法使用 BGE-M3,只是 BGE-M3 不再需要为查询添加指令。
  • 对于混合检索,可以使用 Vespa 和 Milvus。
  • BGE-M3 使用教程
  1. 安装:
git clone https://github.com/FlagOpen/FlagEmbedding.git
cd FlagEmbedding
pip install -e .

或直接安装:

   pip install -U FlagEmbedding
  1. 生成密集嵌入:
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
sentences = ["What is BGE M3?", "Definition of BM25"]
embeddings = model.encode(sentences, batch_size=12, max_length=8192)['dense_vecs']
  1. 生成稀疏嵌入:
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
output = model.encode(sentences, return_dense=True, return_sparse=True)
lexical_weights = output['lexical_weights']
print(model.convert_id_to_token(lexical_weights))
  1. 生成多向量嵌入:
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
output = model.encode(sentences, return_dense=True, return_sparse=True, return_colbert_vecs=True)
print(model.colbert_score(output['colbert_vecs'][0], output['colbert_vecs'][1]))
  1. 文本对评分:
sentence_pairs = [[i,j] for i in sentences_1 for j in sentences_2]
scores = model.compute_score(sentence_pairs, max_passage_length=128, weights_for_different_modes=[0.4, 0.2, 0.4])

BGE-M3 提供了高效的多功能、多语言、多粒度文本嵌入解决方案,适用于多种复杂的检索任务。
在基于 Milvus 的工程化应用中,使用 BGE-M3 模型进行混合语义搜索可以极大提升搜索的准确性和效果。下面将介绍如何在 Milvus 环境中应用 BGE-M3 模型进行密集与稀疏向量的混合搜索,并使用 BGE CrossEncoder 模型对搜索结果进行重新排序。

  • 环境准备
  1. 安装依赖
    需要安装 pymilvus 作为客户端连接 Milvus 服务器,并安装 pymilvus[model] 以支持 BGE-M3 模型嵌入功能:
pip install pymilvus
pip install pymilvus[model]
  1. 设置 Milvus 环境
    Milvus 支持在 2.4.0 及以上版本中进行稀疏向量搜索,因此需要确保本地 Milvus 环境版本符合要求。可以通过 Docker 安装最新版本的 Milvus:
   docker run -d --name milvus-standalone -p 19530:19530 -p 9091:9091 milvusdb/milvus:v2.4.0
  • 应用场景示例

在这个示例中,我们使用 BGE-M3 模型对文本进行密集和稀疏向量的嵌入,并将结果插入到 Milvus 数据库中进行搜索和排序。你可以选择随机生成向量,或使用 BGE-M3 模型生成高质量的密集和稀疏向量表示。

  • 实现步骤
  1. 嵌入文本为密集和稀疏向量
    使用 BGE-M3 模型将文档和查询转换为向量表示:
from pymilvus.model.hybrid import BGEM3EmbeddingFunction
ef = BGEM3EmbeddingFunction(use_fp16=False, device="cpu")
dense_dim = ef.dim["dense"]

docs_embeddings = ef(docs)
query_embeddings = ef([query])
  1. 创建 Milvus 集合
    定义包含文本、密集向量和稀疏向量的集合:
fields = [
    FieldSchema(, dtype=DataType.VARCHAR, is_primary=True, auto_id=True, max_length=100),
    FieldSchema(, dtype=DataType.VARCHAR, max_length=512),
    FieldSchema(, dtype=DataType.SPARSE_FLOAT_VECTOR),
    FieldSchema(, dtype=DataType.FLOAT_VECTOR, dim=dense_dim),
]
schema = CollectionSchema(fields, "")
col = Collection("hybrid_demo", schema, consistency_level="Strong")
  1. 插入数据并创建索引
    将生成的稀疏和密集向量插入集合并创建索引:
entities = [docs, docs_embeddings["sparse"], docs_embeddings["dense"]]
col.insert(entities)
col.create_index("sparse_vector", {"index_type": "SPARSE_INVERTED_INDEX", "metric_type": "IP"})
col.create_index("dense_vector", {"index_type": "FLAT", "metric_type": "IP"})
col.load()

  1. 进行混合搜索
    使用稀疏和密集向量进行搜索,并结合 BGE CrossEncoder 模型对结果重新排序:
   res = col.hybrid_search([sparse_req, dense_req], rerank=RRFRanker(), limit=k, output_fields=['text'])
  1. 结果展示
    如果使用 BGE CrossEncoder 模型对结果进行排序,可以看到查询相关性更高的结果。

2.GTE - 阿里 [★]

GTE 模型,也称为 General Text Embeddings,是阿里巴巴达摩院推出的文本 Embedding 技术。

此前,通义实验室推出了 GTE(General Text Embedding)系列文本向量模型,涵盖了基于 BERT 架构的模型及基于 Qwen LLM 系列训练的 LLM embedding 模型,如 gte-Qwen2-1.5B-instruct 与 gte-Qwen2-7B-instruct。目前,基于双向注意力的 Encoder-only 结构的模型在同一规模下相较于 Decoder-only 模型在召回和排序效果上明显更优。然而,当前基于 Encoder-only 的 Embedding 和 Ranking 模型仍面临一些来自 BERT 时代的遗留问题,例如最长上下文长度仅为 512,以及预训练阶段使用的语料明显不足。为解决这些问题,GTE 模型开发团队从零开始训练了一种能支持长上下文和多语言的 Encoder-only 基础模型,并在此基础上推出了最新版本的 GTE-MultiLingual 系列模型(简称 mGTE 模型)。该系列模型具备以下显著特点:

  • 高性能:在多个数据集上与同规模开源模型的对比中,对比效果领先。
  • 长文档支持:Embedding 和 Reranker 均可处理 8k token 文本长度,且支持通过 ntk-rope 等方法扩展到更长的上下文。
  • 多语言支持:模型支持 75 种语言,涵盖当前主要大模型所支持的所有语种。
  • 弹性向量表示(Elastic Embedding):模型支持输出 128-768 维度之间的任意向量表示,以便在性能和存储成本之间取得最佳平衡。在 128 维的情况下,与 768 维相比,召回性能损失小于 2%,同时节省 6 倍的存储空间。
  • 稀疏向量表示(Sparse Embedding):模型可以输出句子中每个单词的词权重作为稀疏表示,适用于需要精确匹配的场景。

img

                                                         图 1 文本表征和文本排序模型架构示意图

mGTE 系列模型构建流程如图 2 所示,首先,训练了支持长下文的多语言 Encoder-only 底座模型 GTE-base-multilinguish。并在底座基础上继续训练文本表示模型 gte-multilingual-base 和排序模型 gte-multilingual-base。

img

                                                              图 2 模型训练过程示意图

  • 模型结构

    为了提升模型多语言以及长文本领域相关的能力,该系列模型参考了目前 Decode-Only 架构大语言模型训练过程中一些常见的技巧,对原始的 BERT 架构做了以下几点改动,具体模型结构如图 3 所示

    • 位置编码: 将 BERT 模型中采用的绝对位置 embedding 方式改为了旋转位置编码 RoPE [1],以便能更好的支持长上下文的训练,同时保持上下文长度扩展的可能性。
    • 激活函数: 将 BERT 模型中线性层(FFN)部分改为了 GLU(gated linear unit,[2]),这也是在 LLM 训练过程中已经经过充分验证能有效提升模型训练稳定性的技巧。

此外,为了满足多语言和长文本处理能力的需求,模型使用了 XLM-Roberta[3] 系列的词表。

img

                                        图 3 GTE 底座模型结构示意图

效果评测

1. 检索效果评测

为了评测文本表征模型的检索效果,尤其是模型的多语言和长文本处理能力,mGTE 模型主要在以下几个数据集进行评测

  • MLDR[9]: 多语言长文档检索评测集, 包括 13 个语种数据。
  • MIRACL[10]: 多语言检索评测集合, 包含 18 个语种数据。
  • MKQA[11]: 跨语言检索评测集,包含 25 个不同的语种。
  • BEIR[12]: 英文多领域检索评测集合。
  • LoCo[13]:英文长文档检索评测集合。

表 3 展示了在这 5 个数据集上 mGTE 模型和同规模模型的效果对比:

  • 受益于原生的长文本底座训练,mGTE 表征模型在长文本检索效果上明显优于其它模型。
  • 在短文本检索场景, mGTE 对比同规模的模型效果大幅度领先,对比更大规模的模型效果也很接近。
  • Sparse 向量检索效果在大部分场景优于 BM25,特别在长文档场景对比现有 Dense 向量检索有明显效果优势。

img

2. 多任务文本表征效果评测

MTEB[14] 是一个涵盖多任务文本表示的通用评测数据集,英语、法语和波兰语这四种不同语言上对 mGTE 模型与其他模型的性能进行了对比。类似于检索任务,mGTE 模型在与开源社区中同规模的 Encoder-only 系列模型进行比较时表现出非常好的效果。当然,与更大型的基于 LLM 的模型相比,mGTE 仍存在明显差距。然而,考虑到 mGTE 小模型在推理性能方面的优势,其在实际应用场景中应具备更大的发挥空间。

img

3. 排序效果评测

类似地,mGTE-reranker 对 MLDR、MIRACL、MKQA 和 BEIR 数据集上的排序结果进行了评估。所有的排序模型都基于 mGTE-TRM-base 模型生成的向量召回的结果 top100 进行重新排序。具体结果如下:

img

                                                                                         图 5 排序模型结果对比图

  • 各个排序模型相比召回模型均表现出更佳的性能,证明了在检索链路中引入排序模型的必要性。
  • 与同尺寸甚至更大尺寸的模型相比,mGTE-reranker-base 模型在各个数据集上均取得了相当甚至更好的效果,尤其是在多语言长文档的检索场景中。

模型的使用方法可以参考 Huggingface 上的样例:

  • Embedding 模型:
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer

input_texts = [
    "what is the capital of China?",
    "how to implement quick sort in python?",
    "北京",
    "快排算法介绍"
]

model_path = 'Alibaba-NLP/gte-multilingual-base'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True)


batch_dict = tokenizer(input_texts, max_length=8192, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)

dimension=768 
embeddings = outputs.last_hidden_state[:, 0][:dimension]

embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())


  • Ranking 模型:
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('Alibaba-NLP/gte-multilingual-reranker-base')
model = AutoModelForSequenceClassification.from_pretrained('Alibaba-NLP/gte-multilingual-reranker-base', trust_remote_code=True)
model.eval()

pairs = [["中国的首都在哪儿","北京"], ["what is the capital of China?", "北京"], ["how to implement quick sort in python?","Introduction of quick sort"]]
with torch.no_grad():
    inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
    scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
    print(scores)

  • ModelScope

    • GTE 文本向量 - 中文 - 通用领域 - large
    • GTE 文本向量 - 中文 - 通用领域 - base
    • GTE 文本向量 - 英文 - 通用领域 - large
    • GTE 文本向量 - 中文 - 通用领域 - base
    • GTE 文本向量 - Qwen2-1.5B
    • GTE 文本向量 - Qwen2-7B
    • GTE 文本向量 - 多语言 - base
    • GTE - 文本排序 - 多语言 - base
  • Huggingface

    • gte-large-zh
    • gte-base-zh
    • gte-large-en
    • gte-base-en
    • GTE-Qwen2-7B-instruct
    • GTE-Qwen2-1.5B-instruct
    • gte-multilingual-base
    • gte-multilingual-reranker-base

3.E5 Embedding - 微软

E5-embedding 是由 intfloat 团队研发的一款先进的 Embedding 模型。E5 的设计初衷是为各种需要单一向量表示的任务提供高效且即用的文本 Embedding,与其他 Embedding 模型相比,E5 在需要高质量、多功能和高效的文本 Embedding 的场景中表现尤为出色。

以下是 E5-embedding 的一些特点:

  1. 新的训练方法:E5 采用了 “EmbEddings from bidirEctional Encoder rEpresentations” 这一创新方法进行训练,这意味着它不仅仅依赖传统的有标记数据,也不依赖低质量的合成文本对。
  2. 高质量的文本表示:E5 能为文本提供高质量的向量表示,这使得它在多种任务上都能表现出色,尤其是在需要句子或段落级别表示的任务中。
  3. 多场景:无论是在 Zero-shot 场景还是微调应用中,E5 都能提供强大的现成文本 Embedding,这使得它在多种 NLP 任务中都有很好的应用前景。
  • 论文:
    Multilingual E5 Text Embeddings: A Technical Report. Liang Wang, Nan Yang, Xiaolong Huang, Linjun Yang, Rangan Majumder, Furu Wei, arXiv 2024

    Improving Text Embeddings with Large Language Models. Liang Wang, Nan Yang, Xiaolong Huang, Linjun Yang, Rangan Majumder, Furu Wei, arXiv 2024

    Text Embeddings by Weakly-Supervised Contrastive Pre-training. Liang Wang, Nan Yang, Xiaolong Huang, Binxing Jiao, Linjun Yang, Daxin Jiang, Rangan Majumder, Furu Wei, arXiv 2022

  • English Pre-trained Models

BEIR# of layersembedding dimensionHuggingface
E5-small-v249.012384intfloat/e5-small-v2
E5-base-v250.312768intfloat/e5-base-v2
E5-large-v250.6241024intfloat/e5-large-v2
E5-small46.012384intfloat/e5-small
E5-base48.812768intfloat/e5-base
E5-large50.0241024intfloat/e5-large
E5-small-unsupervised40.812384intfloat/e5-small-unsupervised
E5-base-unsupervised42.912768intfloat/e5-base-unsupervised
E5-large-unsupervised44.2241024intfloat/e5-large-unsupervised

The models with -unsupervised suffix only pre-trains on unlabeled datasets.

  • Multilingual Pre-trained Models
BEIR# of layersembedding dimensionHuggingface
multilingual-e5-small46.612384intfloat/multilingual-e5-small
multilingual-e5-base48.912768intfloat/multilingual-e5-base
multilingual-e5-large51.4241024intfloat/multilingual-e5-large
multilingual-e5-large-instruct52.5241024intfloat/multilingual-e5-large-instruct

4.Jina Embedding V3 [★]

github:https://github.com/jina-ai/serve

huggingface:https://huggingface.co/jinaai/jina-embeddings-v3

img

jina-embeddings-v3 是一个前沿的多语言文本嵌入模型,具有 570M 个参数和 8192 个令牌长度,优于 OpenAI 和 Cohere 在 MTEB 上的最新专有嵌入。

Jina Embeddings V3 来了,这款 5.7 亿参数的顶级文本向量模型,在多语言和长文本检索任务上达到当前最佳水平 SOTA。内置多种 LoRA 适配器,可以根据你的需求,针对 检索、聚类、分类和匹配 的不同场景进行定制,获得更精准的向量化效果。

  • 多语言支持: 支持 89 种语言,全面超越 multilingual-e5-large-instruct

支持的语言:
虽然基础模型支持 100 种语言,将调整工作重点放在以下 30 种语言上:阿拉伯语、孟加拉语、中文、丹麦语、荷兰语、英语、芬兰语、法语、格鲁吉亚语、德语、希腊语、印地语、印尼语、意大利语、日语、韩语、拉脱维亚语、挪威语、波兰语、葡萄牙语、罗马尼亚语、俄语、斯洛伐克语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语、乌尔都语和越南语。

  • 长文本处理: 支持 8192 token 的输入长度,在 LongEmbed 基准测试中表现出色

  • 任务定制更精准: 内置多种 LoRA 适配器,针对检索、聚类、分类和匹配等任务,生成定制化向量,效果更精准。

    retrieval.query:用于非对称检索任务中的查询嵌入
    retrieval.passage:用于非对称检索任务中的段落嵌入
    separation:用于聚类和重新排序应用程序中的嵌入
    classification:用于分类任务中的嵌入
    text-matching:用于量化两个文本之间的相似度的任务中的嵌入,例如 STS 或对称检索任务

  • 输出维度可定制: 默认输出维度为 1024,但你完全可以根据需要把它缩减到 32,性能几乎不受影响,这都归功于俄罗斯套娃表示学习技术的加持。

  • 论文连接:https://arxiv.org/abs/2409.10173

  • Model Architecture 模型架构

img

img
java -embeddings-v3 的关键创新是使用了 LoRA 适配器。介绍了五个特定于任务的 LoRA 适配器,以优化四个任务的嵌入。模型的输入由两部分组成: 文本 (要嵌入的长文档) 和任务。jina-embeddings-v3 支持 4 个任务并实现 5 个适配器供您选择: 用于非对称检索任务中的查询和通道嵌入的 retrievalquery 和 retrievalpassage,用于聚类任务的分离,用于分类任务的分类,以及用于涉及语义相似性的任务的文本匹配,例如 STS 或对称检索。LoRA 适配器占总参数的比例不到 3%,因此给计算增加的开销非常小。

为了进一步提高性能和减少内存消耗,我们集成了 FlashAttention 2,支持激活检查点,并使用 DeepSpeed 框架进行高效的分布式训练。
img

jina-embeddings-v3 的性能已在多种多语言和跨语言 MTEB 任务中进行评估

img

jina-embeddings-v3 在 LongEmbed 基准测试的六个长文档检索任务上的表现,相较于其他模型有显著提升。得分是 nDCG@10;得分越高越好。这表明基于 RoPE 的位置嵌入的有效性,它优于 baai-bge-m3 使用的固定位置嵌入和 jina-embeddings-v2 中使用的基于 ALiBi 的方法。

img

img
img

Scaling law of embedding models. The average MTEB performance on English tasks is plotted against the number of model parameters. Each dot represents an embedding model. The trendline, representing all models, is highlighted, with multilingual models emphasized in cyan. One can see that jina-embeddings-v3 demonstrates superior performance compared to models of similar size, also showing a superlinear improvement over its predecessor, jina-embeddings-v2. This graph was created by selecting top-100 embedding models from the MTEB leaderboard , excluding those without size information, typically closed-source or proprietary models. Submissions identified as obvious trolling were also filtered out

5.Cohere

  • 官网网址:https://cohere.com/

  • cohere-python:https://github.com/cohere-ai/cohere-python
    Cohere 为各种阅读和写作任务训练大型语言模型 (LLMs),例如摘要、内容创建和情感分析。其语言模型针对三个主要用例进行了优化:检索文本(retrieving text)、生成文本(generating text)和分类文本(classifying text)

  • 检索文本(Retrieving Text)
    Cohere 产品中提供了三个主要 API 端点,这些端点专注于检索文本以进行搜索、聚类和推荐。

    • Embed(嵌入):该端点提供英语和 100 多种语言的准确嵌入,使用户能够发现趋势、比较语言并根据数据构建自己的文本分析应用程序。
    • Semantic Search(语义搜索):为用户提供语义搜索功能,可根据含义(而不仅仅是关键字)查找文本、文档和文章。它允许开发人员为任何语言构建更好的搜索系统。
    • Rerank(重排):重新排名提高了关键字或矢量搜索系统的搜索质量。它可以帮助系统更好地理解上下文以及问题和查询的含义,同时承诺对现有系统进行最小程度的修改。
# python -m pip install cohere --upgrade

import cohere

co = cohere.ClientV2("<<apiKey>>")
response = co.chat(
    model="command-r-plus", 
    messages=[{"role": "user", "content": "hello world!"}]
)

print(response)

6.Instructor - 港大

  • code:https://github.com/xlang-ai/instructor-embedding
  • paper:One Embedder, Any Task: Instruction-Finetuned Text Embeddings

Instructor 是由香港大学自然语言处理实验室团队推出的一种指导微调的文本 Embedding 模型。该模型可以生成针对任何任务(例如分类、检索、聚类、文本评估等)和领域(例如科学、金融等)的文本 Embedding,只需提供任务指导,无需任何微调。Instructor 在 70 个不同的 Embedding 任务(MTEB 排行榜)上都达到了最先进的性能。该模型可以轻松地与定制的 sentence-transformer 库一起使用。

Instructor 模型主要特点如下:

  • 多任务适应性:只需提供任务指导,即可生成针对任何任务的文本 Embedding。
  • 高性能:在 MTEB 排行榜上的 70 个不同的 Embedding 任务上都达到了最先进的性能。
  • 易于使用:与定制的 sentence-transformer 库结合使用,使得模型的使用变得非常简单。

此外,模型还提供了其他使用案例,如计算句子相似性、信息检索和聚类等。

7.XLM-Roberta-Facebook

XLM-Roberta(简称 XLM-R)是 Facebook AI 推出的一种多语言版本的 Roberta 模型。它是在大量的多语言数据上进行预训练的,目的是为了提供一个能够处理多种语言的强大的文本表示模型。XLM-Roberta 模型在多种跨语言自然语言处理任务上都表现出色,包括机器翻译、文本分类和命名实体识别等。

模型主要特点如下:

  • 多语言支持:XLM-Roberta 支持多种语言,可以处理来自不同语言的文本数据。
  • 高性能:在多种跨语言自然语言处理任务上,XLM-Roberta 都表现出了最先进的性能。
  • 预训练模型:XLM-Roberta 是在大量的多语言数据上进行预训练的,这使得它能够捕获跨语言的文本表示。

8.text-embedding-ada-002 --OpenAI

官网:https://platform.openai.com/docs/guides/embeddings/use-cases

text-embedding-ada-002 是一个由 Xenova 团队开发的文本 Embedding 模型。该模型提供了一个与 Hugging Face 库兼容的版本的 text-embedding-ada-002 分词器,该分词器是从 openai/tiktoken 适应而来的。这意味着它可以与 Hugging Face 的各种库一起使用,包括 Transformers、Tokenizers 和 Transformers.js。

模型主要特点如下:

  • 兼容性:该模型与 Hugging Face 的各种库兼容,包括 Transformers、Tokenizers 和 Transformers.js。
  • 基于 openai/tiktoken:该模型的分词器是从 openai/tiktoken 适应而来的。
  1. 精排模型推荐

专业级语义搜索优化:利用 Cohere AI、BGE Re-Ranker 及 Jina Reranker 实现精准结果重排

参考文章:https://blog.youkuaiyun.com/sinat_39620217/article/details/141850425

文本嵌入技术 Text Embedding 模型详解:text2vec、OpenAI ada-002 到 M3E 及 BGE-M3 的演变

相关榜单:

img

https://huggingface.co/spaces/mteb/leaderboard

10 xinference 推理

文章参考:Xinference 实战指南:全面解析 LLM 大模型部署流程

Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。通过 Xorbits Inference,可以轻松地一键部署你自己的模型或内置的前沿开源模型

img

img

  • 参考链接:

    1. https://jina.ai/news/jina-embeddings-v3-a-frontier-multilingual-embedding-model/#parameter-dimensions
    2. BGE-M3 一个多功能、多语言、多粒度的语言向量模型
    3. 阿里 GTE 模型

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

Text embedding 模型总结 目前,随着的火热,除了层出不穷的大模型外,因为检索的能力会很大程度影响最终的问答效果,文本的嵌入模型也是大家比较关注的。本文主要介绍效果较好的几种文本嵌入模型。 阅读详情

相关推荐

【AIGC】大模型面试高频考点02-RAG中Embedding模型选型

AIGC面试高频考点

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 5116

MTEB - Embedding 模型排行榜

中文榜单(2024-05-03)伊织 2024-05-03(五)

AI工程化、开源分享、文档翻译、代码笔记 1万+

RAG系统高效检索提升秘籍:如何精准选择BGE智源、GTE阿里与Jina等的嵌入与精排模型的完美搭配

RAG系统高效检索提升秘籍:如何精准选择BGE智源、GTE阿里与Jina等的嵌入与精排模型的完美搭配

丨汀、的博客 395

合合信息Embedding模型获得MTEB中文榜单第一

最近几年,可以说大语言模型汇聚了所有的光彩,大语言模型的飞速发展更是吸引着社会各界的目光,这些模型的强大能力源自于Embedding技术的支撑,这种技术将语言转化为机器可理解的数值向量。随着大型语言模型的不断突破,Embedding模型的关键性日益凸显,成为推动人工智能领域向前发展的核心动力。在这个充满无限可能的领域中,每一次技术的飞跃都预示着新的变革和机遇。

陈橘又青的博客 2万+

【论文阅读1】机理引导的残差学习用于电池全生命周期状态监测 | Nature Communications

本文提出了一种机理引导的残差学习框架,用于提升电池全生命周期内荷电状态(SOC)和健康状态(SOH)的监测精度。该方法融合等效电路模型的先验知识与机器学习,设计了修正模型和补偿模型两种通用框架。实验验证表明,该方法在三种不同类型电池数据集上均表现出色,SOC和SOH估计误差较传统方法降低50%以上,且在未见工况下仍保持良好外推能力。模型具有强鲁棒性,在减少训练数据量和降低采样频率时性能稳定,并兼具物理可解释性。该框架无需离线测试和运行中校准,为电池安全监测提供了有效解决方案。

qq_21843433的博客 615

从仿真到实机:四足机器人控制算法的全流程验证框架

本文系统阐述了四足机器人从仿真到实机的全流程验证框架。针对仿真与实机环境的巨大差异,文章详细介绍了在MuJoCo等高保真仿真环境中的建模、算法迭代与压力测试方法,并重点解析了通过硬件抽象层和中间件搭建通往实机的关键桥梁。最后,提供了实机部署的安全清单与调试策略,旨在帮助开发者构建可重复、风险可控的算法验证闭环,提升算法在真实世界中的鲁棒性与可靠性。

lilh34434的博客 383

RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配...

RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配 Text Embedding 榜单:MTEB、C-MTEB 《MTEB: Massive Text Embedding Benchmark(海量文本嵌入基准)》 判断哪些文本嵌入模型效果较好,通常需要一个评估指标来进行比较,《MTEB: Massive Text Embedding ...

weixin_42462007的博客 711

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7431

RAG系统高效检索优化指南:精准搭配BGE智源、GTE阿里与Jina等嵌入与精排模型

RAG技术通过引入检索模块,增强了大型语言模型在生成信息时的准确性和可靠性。RAG系统的工作流程通常包括查询分类、检索、重排、重组和摘要等多个步骤。其中,嵌入与精排模型的选择对于检索效果和效率至关重要。

欢迎你来到我的博客 1220

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

华中科技大学计算机组成原理-单总线CPU设计(全部通关)

【计算机组成原理】 单总线CPU实验 华中科技大学-计算机组成原理 实验三 单总线CPU设计 第1关 MIPS指令译码器设计 第2关 单总线CPU微程序入口查找逻辑 第3关 单总线CPU微程序条件判别测试逻辑 第4关 单总线CPU微程序控制器设计 第5关 采用微程序的单总线CPU设计 第6关 现代时序硬布线控制器状态机设计 第7关 现代时序硬布线控制器设计

紫荆鱼的博客 4万+

通用知识库搭建与知识图谱构建全指南(RAG + GraphRAG 实战)

微软 2024 年开源了 microsoft/graphrag,是目前 GraphRAG 事实上的标准实现。构建阶段(Indexing)切片:与 RAG 类似,把文档切成片段;LLM 建图:用 LLM 从每个片段中抽取实体和关系,写入知识图谱;社区检测(Community Detection):用图算法(如 Leiden)把图谱划分成"社区"(联系紧密的节点簇);社区摘要(Community Summaries):用 LLM 为每个社区生成一段摘要——相当于给"关系网"写"部门简介"。

ITOfDragon的博客 1244

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2100

文本向量评测MTEB和C-MTEB

文本向量评测MTEB和C-MTEB介绍,MTEB(Massive Text Embedding Benchmark)是目前评测文本向量很重要的一个参考,其榜单也是各大文本向量模型用来展示与其他向量模型强弱的一个竞技台。C-MTEB则是专门针对中文文本向量的评测基准。

beingstrong的博客 9797

PyCharm 接入 OpenAI Codex CLI 的 4 步配置与调试实录

揭示 Codex CLI 在 PyCharm 中上下文失稳的四大根源:CLI 启动模式与 IDE 进程模型冲突、stdin/stdout 流式处理不兼容、环境变量污染、AST 注释缺失,并给出基于 Shell 脚本桥接与结构化上下文注入的稳定接入方案。

weixin_42627902的博客 374

LPDDR4 JEDEC标准测试实例解析--写操作

LPDDR4的JEDEC标准一致性测试项详解以及实例分享,满满干货!感兴趣的小伙伴可以持续关注!!

一只豌豆象的博客 7774

AI大语言模型LLM学习-语义检索(RAG前导篇)

大语言模型中存在的过时、不准确、幻觉、一本正经的胡说八道、基于互联网数据训练这些缺点,因此,直接使用大语言模型生成的内容在商业场景中,特别是涉及到一些专业领域以及私有数据的场景,是无法提供准确或有价值的信息的。因此,大模型的应用通常需要与搜索技术相结合。所谓语义检索(也称基于向量的检索),是指检索系统不再拘泥于用户字面本身,而是能精准捕捉到用户的真正意图并以此来搜索,从而更准确地向用户返回最符合的结果。

fengqiuhuang123的专栏 3344

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NLP之Leaderboard之MTEB:MTEB(评估和比较不同文本嵌入模型性能的基准测试平台)的简介、界面概述、使用方法、排行榜解读之详细攻略

​ LLMs之Leaderboard之MTEB:MTEB(评估和比较不同文本嵌入模型性能的基准测试平台)的简介、使用方法、案例应用之详细攻略 目录 相关论文 MTEB的简介 MTEB的使用方法 MTEB Leaderboard 排行榜的内容概览 相关论文 《MTEB: Massive Text Embedding Benchmark》的翻译与解读 地址 论文地址:https://arxiv.o

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 6433

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

玩转RAG应用:如何选对Embedding模型?

MTEB 是一个包含广泛文本嵌入(Text Embedding)的基准测试,它提供了多种语言的数十个数据集,用于各种 NLP 任务,例如文本分类、聚类、检索和文本相似性。MTEB 提供了一个公共排行榜,允许研究人员提交他们的结果并跟踪他们的进展。MTEB 还提供了一个简单的 API,允许研究人员轻松地将他们的模型与基准测试进行比较。下面我们以旧版本为例(其中有中文等语言的筛选),看下榜单怎么快速筛序我们想要的模型。

weixin_51702416的博客 1335

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

私有化文本嵌入(Embedding) + Weaviate

本文重点讨论通过本地模型文件(词嵌入模型gte-large-zh)来构建自定义Transformers模型镜像,通过与weaviate模块集成赋予weaviate文本嵌入功能。同时weaviate也可以与Transformers库无缝集成,允许用户直接在Weaviate数据库中利用兼容的模型。设置ENABLE_CUDA= '1',表示启用GPU,如果要启用GPU需要提供对gpu支持的容器。weavaite向量库可以集成第三方托管的模型,这使得开发体验得到了增强,例如。# nvidia GPU支持配置。

qianyuanruqu的博客 968

浪潮信息“源”Embedding模型登顶MTEB榜单第一名

近期,浪潮信息开源了Yuan系列Embedding模型(Yuan-Embedding-1.0),该模型在中文语义向量评测基准——C-MTEB(Chinese Massive Text Embedding Benchmark)的Retrieval任务中荣获第一名,为用户加速基于大模型的智能应用创新提供了有力支持。

2401_82700030的博客 2121

MTEB大模型排行榜完整指南:22种主流文本嵌入模型详解+大模型学习资源,收藏必备!

文章详细介绍了MTEB文本嵌入模型排行榜,包含英文和中文共22个主流模型的简介、特点和适用场景,涵盖从400M到70亿参数的不同规模模型。同时提供了系统化的大模型学习资源,包括实战项目案例、学习路线图、行业报告和面试题等,帮助开发者从零入门到精通大模型技术。 ---

2401_85373691的博客 3601

MTEB评估基准使用指北

MTEB评估基准使用指北

夏小悠的博客 4968

MTEB指标(Massive Text Embedding Benchmark):一堆衡量文本嵌入模型(Bert模型)的评估指标合集【对应的中文评估指标是 C-MTEB】

最后,向大家推荐一下再C-MTEB是效果拔群的一个开源模型,其名称是BGE(BAAI General Embedding)模型,大家可以再huggingface上下载到,指标如下:BGE模型的指标,来自C-Pack论文大规模语料的预训练通用意图的微调(对比学习的方式)任务特定的微调(使用有标签的数据)BGE模型的训练方法,来自C-Pack论文。

u013250861的博客 1936

大语言模型-文本向量模型评估基准 MTEB

MTEB(Massive Text Embedding Benchmark) 涵盖112种语言的58个数据集,包含如下`8种任务`。

weixin_42045968的博客 2475
上一篇: 打造自己的RAG解析大模型:表格数据标注的三条黄金规则
下一篇: 大模型书籍 | 从入门到精通大模型就看一这一本《掌握Transformer:从零开始构建SOTA模型》(附PDF)
AI大模型_学习君
博客等级 码龄3年 6137粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值