说明文档
<br><br>
<p align="center"> <img src="https://huggingface.co/datasets/jinaai/documentation-images/resolve/main/logo.webp" alt="Jina AI: 您的搜索基础,超强加持!" width="150px"> </p>
<p align="center"> <b>由 <a href="https://jina.ai/"><b>Jina AI</b></a> 训练。</b> </p>
jina-reranker-v2-base-multilingual
预期用途与模型信息
Jina Reranker v2 (jina-reranker-v2-base-multilingual) 是一个基于 Transformer 的模型,经过微调用于文本重排序任务,这是许多信息检索系统中的关键组件。它是一个交叉编码器模型,将一个查询和一个文档对作为输入,输出一个表示文档与查询相关性的分数。该模型在大量的查询-文档对数据集上训练,能够以高准确率对多种语言的文档进行重排序。
与最先进的重排序模型(包括之前发布的 jina-reranker-v1-base-en)相比,Jina Reranker v2 模型在一系列基准测试中表现出色,涵盖文本检索、多语言能力、函数调用感知和文本到SQL感知的重排序以及代码检索任务。
jina-reranker-v2-base-multilingual 模型能够处理最长 1024 个 token 的长文本,能够处理大量输入。为了使模型能够处理超过 1024 个 token 的长文本,该模型使用滑动窗口方法将输入文本分成较小的片段,然后分别对每个片段进行重排序。
该模型还配备了 Flash Attention 机制,显著提升了模型的性能。
使用方法
此模型仓库根据 CC-BY-NC-4.0 许可证授权用于研究和评估目的。如需商业使用,请参阅 Jina AI 的 API、AWS Sagemaker 或 Azure Marketplace 产品。如需任何进一步说明,请 联系我们。
- 使用
jina-reranker-v2-base-multilingual最简单的方法是调用 Jina AI 的 Reranker API。
curl https://api.jina.ai/v1/rerank \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "jina-reranker-v2-base-multilingual",
"query": "Organic skincare products for sensitive skin",
"documents": [
"Organic skincare for sensitive skin with aloe vera and chamomile.",
"New makeup trends focus on bold colors and innovative techniques",
"Bio-Hautpflege für empfindliche Haut mit Aloe Vera und Kamille",
"Neue Make-up-Trends setzen auf kräftige Farben und innovative Techniken",
"Cuidado de la piel orgánico para piel sensible con aloe vera y manzanilla",
"Las nuevas tendencias de maquillaje se centran en colores vivos y técnicas innovadoras",
"针对敏感肌专门设计的天然有机护肤产品",
"新的化妆趋势注重鲜艳的颜色和创新的技巧",
"敏感肌のために特別に設計された天然有機スキンケア製品",
"新しいメイクのトレンドは鮮やかな色と革新的な技術に焦点を当てています"
],
"top_n": 3
}'
- 您也可以使用
transformers库以编程方式与模型交互。
在开始之前,请安装 transformers 和 einops 库:
pip install transformers einops
然后:
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
'jinaai/jina-reranker-v2-base-multilingual',
torch_dtype="auto",
trust_remote_code=True,
)
model.to('cuda') # or 'cpu' if no GPU is available
model.eval()
# 示例查询和文档
query = "Organic skincare products for sensitive skin"
documents = [
"Organic skincare for sensitive skin with aloe vera and chamomile.",
"New makeup trends focus on bold colors and innovative techniques",
"Bio-Hautpflege für empfindliche Haut mit Aloe Vera und Kamille",
"Neue Make-up-Trends setzen auf kräftige Farben und innovative Techniken",
"Cuidado de la piel orgánico para piel sensible con aloe vera y manzanilla",
"Las nuevas tendencias de maquillaje se centran en colores vivos y técnicas innovadoras",
"针对敏感肌专门设计的天然有机护肤产品",
"新的化妆趋势注重鲜艳的颜色和创新的技巧",
"敏感肌のために特別に設計された天然有機スキンケア製品",
"新しいメイクのトレンドは鮮やかな色と革新的な技術に焦点を当てています",
]
# 构建句子对
sentence_pairs = [[query, doc] for doc in documents]
scores = model.compute_score(sentence_pairs, max_length=1024)
分数将是一个浮点数列表,每个浮点数表示相应文档与查询的相关性分数。分数越高表示相关性越强。 例如,返回的分数如下:
[0.8311430811882019, 0.09401018172502518,
0.6334102749824524, 0.08269733935594559,
0.7620701193809509, 0.09947021305561066,
0.9263036847114563, 0.05834583938121796,
0.8418256044387817, 0.11124119907617569]
该模型会对与查询最相关的文档给出高相关性分数,无论文档使用何种语言。
请注意,默认情况下,jina-reranker-v2-base-multilingual 模型使用 Flash Attention,这需要特定类型的 GPU 硬件才能运行。
如果遇到任何问题,您可以尝试使用 use_flash_attn=False 调用 AutoModelForSequenceClassification.from_pretrained()。
这将使用标准注意力机制而不是 Flash Attention。
如果您想使用 Flash Attention 进行快速推理,需要安装以下包:
pip install ninja # required for flash attention
pip install flash-attn --no-build-isolation
享受 Flash Attention 带来的 3-6 倍加速吧!⚡️⚡️⚡️
- 您还可以使用
transformers.js库直接在 JavaScript 中运行模型(浏览器、Node.js、Deno 等)!
如果还没有安装,可以使用以下命令安装 Transformers.js JavaScript 库(v3):
npm i xenova/transformers.js#v3
然后,您可以使用以下代码与模型交互:
import { AutoTokenizer, XLMRobertaModel } from '@xenova/transformers';
const model_id = 'jinaai/jina-reranker-v2-base-multilingual';
const model = await XLMRobertaModel.from_pretrained(model_id, { dtype: 'fp32' });
const tokenizer = await AutoTokenizer.from_pretrained(model_id);
/**
* 使用 CrossEncoder 对给定查询和文档执行排序。返回排序后的列表,包含文档索引和分数。
* @param {string} query 单个查询
* @param {string[]} documents 文档列表
* @param {Object} options 排序选项
* @param {number} [options.top_k=undefined] 返回前k个文档。如果未定义,则返回所有文档。
* @param {number} [options.return_documents=false] 如果为true,还返回文档。如果为false,则仅返回索引和分数。
*/
async function rank(query, documents, {
top_k = undefined,
return_documents = false,
} = {}) {
const inputs = tokenizer(
new Array(documents.length).fill(query),
{ text_pair: documents, padding: true, truncation: true }
)
const { logits } = await model(inputs);
return logits.sigmoid().tolist()
.map(([score], i) => ({
corpus_id: i,
score,
...(return_documents ? { text: documents[i] } : {})
})).sort((a, b) => b.score - a.score).slice(0, top_k);
}
// 示例用法:
const query = "Organic skincare products for sensitive skin"
const documents = [
"Organic skincare for sensitive skin with aloe vera and chamomile.",
"New makeup trends focus on bold colors and innovative techniques",
"Bio-Hautpflege für empfindliche Haut mit Aloe Vera und Kamille",
"Neue Make-up-Trends setzen auf kräftige Farben und innovative Techniken",
"Cuidado de la piel orgánico para piel sensible con aloe vera y manzanilla",
"Las nuevas tendencias de maquillaje se centran en colores vivos y técnicas innovadoras",
"针对敏感肌专门设计的天然有机护肤产品",
"新的化妆趋势注重鲜艳的颜色和创新的技巧",
"敏感肌のために特別に設計された天然有機スキンケア製品",
"新しいメイクのトレンドは鮮やかな色と革新的な技術に焦点を当てています",
]
const results = await rank(query, documents, { return_documents: true, top_k: 3 });
console.log(results);
这就是全部内容了!现在您可以在项目中使用 jina-reranker-v2-base-multilingual 模型了。
除了 compute_score() 函数之外,jina-reranker-v2-base-multilingual 模型还提供了 model.rerank() 函数,可用于根据查询对文档进行重排序。您可以如下使用:
result = model.rerank(
query,
documents,
max_query_length=512,
max_length=1024,
top_n=3
)
在 result 对象中,您将找到重排序后的文档及其分数。您可以使用这些信息根据需要进一步处理文档。
rerank() 函数会在输入文档超过模型最大输入长度时自动将输入文档分块为较小的片段。这使您可以重排序长文档而不会遇到内存问题。
具体来说,rerank() 函数会将文档分割成 max_length 大小的块,然后分别对每个块进行重排序。所有块的分数然后合并以产生最终的重排序结果。您可以通过设置 max_query_length 和 max_length 参数来控制每个块中的查询长度和文档长度。rerank() 函数还支持 overlap 参数(默认值为 80),用于确定相邻块之间的重叠程度。在重排序长文档时,这很有用,可以确保模型有足够的上下文来进行准确的预测。
- 此外,
jina-reranker-v2-base-multilingual已集成到sentence-transformers库的CrossEncoder中。
在开始之前,请安装 sentence-transformers 库:
pip install sentence-transformers
CrossEncoder 类支持 predict 方法来获取查询-文档相关性分数,以及 rank 方法来根据您的查询对所有文档进行排序。
from sentence_transformers import CrossEncoder
model = CrossEncoder(
"jinaai/jina-reranker-v2-base-multilingual",
automodel_args={"torch_dtype": "auto"},
trust_remote_code=True,
)
# 示例查询和文档
query = "Organic skincare products for sensitive skin"
documents = [
"Organic skincare for sensitive skin with aloe vera and chamomile.",
"New makeup trends focus on bold colors and innovative techniques",
"Bio-Hautpflege für empfindliche Haut mit Aloe Vera und Kamille",
"Neue Make-up-Trends setzen auf kräftige Farben und innovative Techniken",
"Cuidado de la piel orgánico para piel sensible con aloe vera y manzanilla",
"Las nuevas tendencias de maquillaje se centran en colores vivos y técnicas innovadoras",
"针对敏感肌专门设计的天然有机护肤产品",
"新的化妆趋势注重鲜艳的颜色和创新的技巧",
"敏感肌のために特別に設計された天然有機スキンケア製品",
"新しいメイクのトレンドは鮮やかな色と革新的な技術に焦点を当てています",
]
# 构建句子对
sentence_pairs = [[query, doc] for doc in documents]
scores = model.predict(sentence_pairs, convert_to_tensor=True).tolist()
"""
[0.828125, 0.0927734375, 0.6328125, 0.08251953125, 0.76171875, 0.099609375, 0.92578125, 0.058349609375, 0.84375, 0.111328125]
"""
rankings = model.rank(query, documents, return_documents=True, convert_to_tensor=True)
print(f"Query: {query}")
for ranking in rankings:
print(f"ID: {ranking['corpus_id']}, Score: {ranking['score']:.4f}, Text: {ranking['text']}")
"""
Query: Organic skincare products for sensitive skin
ID: 6, Score: 0.9258, Text: 针对敏感肌专门设计的天然有机护肤产品
ID: 8, Score: 0.8438, Text: 敏感肌のために特別に設計された天然有機スキンケア製品
ID: 0, Score: 0.8281, Text: Organic skincare for sensitive skin with aloe vera and chamomile.
ID: 4, Score: 0.7617, Text: Cuidado de la piel orgánico para piel sensible con aloe vera y manzanilla
ID: 2, Score: 0.6328, Text: Bio-Hautpflege für empfindliche Haut mit Aloe Vera und Kamille
ID: 9, Score: 0.1113, Text: 新しいメイクのトレンドは鮮やかな色と革新的な技術に焦点を当てています
ID: 5, Score: 0.0996, Text: Las nuevas tendencias de maquillaje se centran en colores vivos y técnicas innovadoras
ID: 1, Score: 0.0928, Text: New makeup trends focus on bold colors and innovative techniques
ID: 3, Score: 0.0825, Text: Neue Make-up-Trends setzen auf kräftige Farben und innovative Techniken
ID: 7, Score: 0.0583, Text: 新的化妆趋势注重鲜艳的颜色和创新的技巧
"""
评估
我们在多个基准测试上评估了 Jina Reranker v2,以确保顶级的性能和搜索相关性。
| 模型名称 | 模型大小 | MKQA(nDCG@10, 26种语言) | BEIR(nDCG@10, 17个数据集) | MLDR(recall@10, 13种语言) | CodeSearchNet (MRR@10, 3个任务) | AirBench (nDCG@10, 中英文) | ToolBench (recall@3, 3个任务) | TableSearch (recall@3) |
|---|---|---|---|---|---|---|---|---|
| jina-reranker-v2-multilingual | 278M | 54.83 | 53.17 | 68.95 | 71.36 | 61.33 | 77.75 | 93.31 |
| bge-reranker-v2-m3 | 568M | 54.17 | 53.65 | 59.73 | 62.86 | 61.28 | 78.46 | 74.86 |
| mmarco-mMiniLMv2-L12-H384-v1 | 118M | 53.37 | 45.40 | 28.91 | 51.78 | 56.46 | 58.39 | 53.60 |
| jina-reranker-v1-base-en | 137M | - | 52.45 | - | - | - | 74.13 | 72.89 |
注意:
- NDCG@10 和 MRR@10 衡量排序质量,分数越高表示搜索结果越好
- recall@3 衡量检索到的相关文档的比例,分数越高表示搜索结果越好
jinaai/jina-reranker-v2-base-multilingual
作者 jinaai
创建时间: 2024-06-19 09:37:19+00:00
更新时间: 2025-10-21 05:59:46+00:00
在 Hugging Face 上查看