HuggingFace镜像/jina-embeddings-v2-small-en
模型介绍文件和版本分析
下载使用量0



由 Jina AI 训练的文本嵌入模型集。

快速开始

使用 jina-embeddings-v2-small-en 最简单的方法是使用 Jina AI 的 Embedding API。

预期用途与模型信息

jina-embeddings-v2-small-en 是一款英语单语嵌入模型,支持8192 序列长度。 它基于 BERT 架构(JinaBERT),支持 ALiBi 的对称双向变体,以实现更长的序列长度。 基础模型 jina-bert-v2-small-en 在 C4 数据集上进行了预训练。 该模型在 Jina AI 收集的超过 4 亿个句子对和难负样本上进一步训练。 这些句子对来自各个领域,并经过严格的清洗流程精心筛选。

嵌入模型在训练时使用 512 序列长度,但借助 ALiBi 可以外推至 8k 序列长度(甚至更长)。 这使得我们的模型适用于多种使用场景,尤其是在需要处理长文档时,包括长文档检索、语义文本相似度、文本重排序、推荐、RAG 以及基于 LLM 的生成式搜索等。

该模型拥有 3300 万参数,可实现闪电般快速且内存高效的推理,同时仍能提供令人印象深刻的性能。 此外,我们还提供以下嵌入模型:

数据与参数

Jina Embeddings V2 技术报告

使用方法

集成模型时请应用均值池化。

为何使用均值池化?

mean pooling 从模型输出中获取所有标记嵌入,并在句子/段落级别对它们进行平均。 事实证明,这是生成高质量句子嵌入最有效的方法。 我们提供了一个 encode 函数来处理此过程。

然而,如果您希望不使用默认的 encode 函数来实现:

# coding = utf-8
import os
import torch
import torch_npu

from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

import argparse
from openmind import pipeline, is_torch_npu_available
parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument("--model_name_or_path", type=str, default="./")
args = parser.parse_args()
model_path = args.model_name_or_path
device = None
if is_torch_npu_available():
    device = "npu:0"
else:
    device = "cpu"

sentences_1 = ['how is the weather today']
sentences_2 = [ 'What is the current weather like today?']

model = SentenceTransformer(model_path)
model = model.to(device)
embeddings_1 = model.encode(sentences_1)
embeddings_2 = model.encode(sentences_2)


cosine_scores = cos_sim(embeddings_1, embeddings_2)
print(f"cosine_scores: {cosine_scores}")

使用 Transformers 包的替代方案

  1. 托管 SaaS:在 Jina AI 的 Embedding API 上获取免费密钥即可开始使用。
  2. 私有高性能部署:从我们的模型套件中选择模型,并在 AWS Sagemaker 上部署以开始使用。

RAG 性能

根据 LLamaIndex 最新的博客文章,

总之,要在命中率和 MRR 上都达到峰值性能,OpenAI 或 JinaAI-Base 嵌入模型与 CohereRerank/bge-reranker-large 重排序器的组合表现突出。

计划

  1. 支持更多欧洲和亚洲语言的双语嵌入模型,包括西班牙语、法语、意大利语和日语。
  2. 多模态嵌入模型,支持多模态 RAG 应用。
  3. 高性能重排序器。

故障排除

模型代码加载失败

如果在调用 AutoModel.from_pretrained 或通过 SentenceTransformer 类初始化模型时忘记传递 trust_remote_code=True 标志,您将收到模型权重无法初始化的错误。 这是由于 transformers 回退到创建默认的 BERT 模型,而不是 jina-embedding 模型导致的:

Some weights of the model checkpoint at jinaai/jina-embeddings-v2-base-en were not used when initializing BertModel: ['encoder.layer.2.mlp.layernorm.weight', 'encoder.layer.3.mlp.layernorm.weight', 'encoder.layer.10.mlp.wo.bias', 'encoder.layer.5.mlp.wo.bias', 'encoder.layer.2.mlp.layernorm.bias', 'encoder.layer.1.mlp.gated_layers.weight', 'encoder.layer.5.mlp.gated_layers.weight', 'encoder.layer.8.mlp.layernorm.bias', ...

联系方式

加入我们的 Discord 社区,与其他社区成员交流想法。

引用

如果您在研究中发现 Jina Embeddings 有用,请引用以下论文:

@misc{günther2023jina,
      title={Jina Embeddings 2: 8192-Token General-Purpose Text Embeddings for Long Documents}, 
      author={Michael Günther and Jackmin Ong and Isabelle Mohr and Alaeddine Abdessalem and Tanguy Abel and Mohammad Kalim Akram and Susana Guzman and Georgios Mastrapas and Saba Sturua and Bo Wang and Maximilian Werk and Nan Wang and Han Xiao},
      year={2023},
      eprint={2310.19923},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}