Jina Reranker v3:用于 SOTA 多语言 检索 的 0.6B 列表式 重排序器

作者:来自 Elastic JINA

新的 0.6B - parameter 的 listwise reranker ,在单个 context window 中同时考虑 query 和所有 candidate documents 。

我们很高兴发布 jina-reranker-v3 ,这是我们最新一代的 reranker ,在多语言检索基准上提供最先进的性能。这个 0.6B - parameter 的 document reranker 引入了一种新的 last but not late interaction(最后但不迟的交互) ,与现有方法采取了根本不同的方式。 jina-reranker-v3 以 listwise 方式工作:它在单个 context window 内对 query 和所有 candidate documents 应用 causal attention ,在从每个 document 的 final token 提取 contextual embeddings 之前,实现丰富的跨 document 交互。我们的新模型在 BEIR 上达到了 61.94 nDCG@10 ,性能超过 Qwen3-Reranker-4B ,同时模型体积小 6× 。

Model Size BEIR MIRACL MKQA CoIR
jina-reranker-v3 0.6B 61.94 66.83 67.92 70.64
jina-reranker-v2 0.3B 57.06 63.65 67.90 56.14
jina-reranker-m0 2.4B 58.95 66.75 68.19 63.55
bge-reranker-v2-m3 0.6B 56.51 69.32 67.88 36.28
mxbai-rerank-base-v2 0.5B 58.40 55.32 64.24 65.71
mxbai-rerank-large-v2 1.5B 61.44 57.94 67.06 70.87
Qwen3-Reranker-0.6B 0.6B 56.28 57.70 65.34 65.18
Qwen3-Reranker-4B 4.0B 61.16 67.52 67.52 73.91
jina-code-embeddings-0.5b 0.5B - - - 73.94

模型架构

jina-reranker-v3 构建在 Qwen3-0.6B backbone 上,这是一个仅 decoder 的 transformer 模型,带有 causal self-attention。该模型同时处理多个 documents 和 query,在指定的 token 位置提取 contextual embeddings,以实现高效的相似度计算。

Parameter Value
Total Parameters 0.6B
Non-Embedding Parameters 0.44B
Hidden Size 1,024
Number of Layers 28
Attention Heads (Q/KV) 16/8 (GQA)
Context Length 131,072
MLP Projector 1024→512→256
Final Embedding Size 256

给定一个 query 和一组 candidate documents ,jina-reranker-v3 使用一个专门的 prompt template 处理 reranking 任务,该模板在单次 forward pass 中实现跨 document 交互。输入构建遵循特定格式:

bash 复制代码
`

1.  <|im_start|>system
2.  You are a search relevance expert who can determine
3.  a ranking of passages based on their relevance to the query.
4.  <|im_end|>

6.  <|im_start|>user
7.  I will provide you with k passages, each indicated by a numerical identifier.
8.  Rank the passages based on their relevance to query: [QUERY]

10.  <passage id="1">
11.  [DOCUMENT_1]<|doc_emb|>
12.  </passage>
13.  <passage id="2">
14.  [DOCUMENT_2]<|doc_emb|>
15.  </passage>
16.  ...
17.  <passage id="k">
18.  [DOCUMENT_k]<|doc_emb|>
19.  </passage>

21.  <query>
22.  [QUERY]<|query_emb|>
23.  </query>
24.  <|im_end|>

26.  <|im_start|>assistant
27.  <think></think>

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

在输入结构中,query 出现两次 ------ 一次在开头用于任务指令,一次在末尾用于最终 attention 处理。这种双重位置使得最终的 query 位置可以通过 causal attention 关注所有前面的 documents。两个关键的特殊 token 标记了 embedding 提取位置:<|doc_emb|> token 放在每个 document 之后,用于标记 document embedding 的提取点,而 <|query_emb|> token 放在最终的 query 之后,用于标记 query embedding 的提取点。这些 embeddings 通过共享的 causal self-attention 机制捕捉了局部 document 语义和全局跨 document 上下文。

我们称这种 query-document 交互为 "last but not late"。之所以叫 "last",是因为 <|doc_emb|> 放在每个 document 的最后一个 token。之所以叫 "not late",是因为与 ColBERT 等 late interaction 模型不同,那些模型在多向量匹配前会单独编码 documents,而我们在 forward pass 中在同一个 context window 内实现了 query-document 和 document-document 交互。

最后,一个带 ReLU 激活的两层 MLP projector 将 1024 维的 hidden states 映射到 256 维的 ranking space。相关性评分通过投影后的 query embedding 与每个投影后的 document embedding 之间的 cosine similarity 计算,从而为输入集合中的每个 document 生成相关性分数。

入门

通过 API

使用 jina-reranker-v3 最简单的方法是通过我们的 Search Foundation API 。我们可以参考之前的文章 "Jina-VLM:小型多语言视觉语言模型" 来获取一个 API key。然后,我们使用如下的命令来定义一个环境变量:

ini 复制代码
`export JINA_API_KEY=<Your JIAN API KEY>`AI写代码
arduino 复制代码
`

1.  curl -X POST \
2.    https://api.jina.ai/v1/rerank \
3.    -H "Content-Type: application/json" \
4.    -H "Authorization: Bearer JINA_API_KEY" \
5.    -d '{
6.    "model": "jina-reranker-v3",
7.    "query": "slm markdown",
8.    "documents": [
9.      ...
10.    ],
11.    "return_documents": false
12.  }'

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

比如:

json 复制代码
`

1.  curl -X POST \
2.    https://api.jina.ai/v1/rerank \
3.    -H "Content-Type: application/json" \
4.    -H "Authorization: Bearer $JINA_API_KEY" \
5.    -d '{
6.    "model": "jina-reranker-v3",
7.    "query": "阿里巴巴(中国)有限公司是哪一年成立的?",
8.    "documents": [
9.        "阿里巴巴是全球领先的B2B电子商务网上贸易平台",
10.       "阿里巴巴(中国)有限公司成立于2007年03月26日,法定代表人蒋芳"
11.    ],
12.    "return_documents": false
13.  }' | jq .

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)
json 复制代码
`

1.  $ curl -X POST \
2.  >   https://api.jina.ai/v1/rerank \
3.  >   -H "Content-Type: application/json" \
4.  >   -H "Authorization: Bearer $JINA_API_KEY" \
5.  >   -d '{
6.  >   "model": "jina-reranker-v3",
7.  >   "query": "阿里巴巴(中国)有限公司是哪一年成立的?",
8.  >   "documents": [
9.  >       "阿里巴巴是全球领先的B2B电子商务网上贸易平台",
10.  >      "阿里巴巴(中国)有限公司成立于2007年03月26日,法定代表人蒋芳"
11.  >   ],
12.  >   "return_documents": false
13.  > }' | jq .
14.    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
15.                                   Dload  Upload   Total   Spent    Left  Speed
16.  100   494  100   168  100   326    194    377 --:--:-- --:--:-- --:--:--   571
17.  {
18.    "model": "jina-reranker-v3",
19.    "object": "list",
20.    "usage": {
21.      "total_tokens": 218
22.    },
23.    "results": [
24.      {
25.        "index": 1,
26.        "relevance_score": 0.55301309
27.      },
28.      {
29.        "index": 0,
30.        "relevance_score": -0.05146404
31.      }
32.    ]
33.  }

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

很显然,文档 index 为 1 的文档和 "阿里巴巴(中国)有限公司是哪一年成立的?" 更为贴近。

通过 transformers

ini 复制代码
`

1.  from transformers import AutoModel

3.  model = AutoModel.from_pretrained(
4.      'jinaai/jina-reranker-v3',
5.      dtype="auto",
6.      trust_remote_code=True,
7.  )
8.  model.eval()

`AI写代码

现在你可以使用模型的 rerank 函数来计算 query 和一组 documents 的相关性分数:

ini 复制代码
`

1.  query = "What are the health benefits of green tea?"
2.  documents = [
3.      "Green tea contains antioxidants called catechins that may help reduce inflammation and protect cells from damage.",
4.      "El precio del café ha aumentado un 20% este año debido a problemas en la cadena de suministro.",
5.      "Studies show that drinking green tea regularly can improve brain function and boost metabolism.",
6.      "Basketball is one of the most popular sports in the United States.",
7.      "绿茶富含儿茶素等抗氧化剂,可以降低心脏病风险,还有助于控制体重。",
8.      "Le thé vert est riche en antioxydants et peut améliorer la fonction cérébrale.",
9.  ]

11.  # Rerank documents
12.  results = model.rerank(query, documents)

14.  # Results are sorted by relevance score (highest first)
15.  for result in results:
16.      print(f"Score: {result['relevance_score']:.4f}")
17.      print(f"Document: {result['document'][:100]}...")
18.      print()

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

完整的代码:

transformer.py

yaml 复制代码
`

1.  $ python transformer.py 
2.  modeling.py: 10.4kB [00:00, 11.6MB/s]
3.  A new version of the following files was downloaded from https://huggingface.co/jinaai/jina-reranker-v3:
4.  - modeling.py
5.  . Make sure to double-check they do not contain any added malicious code. To avoid downloading new versions of the code file, you can pin a revision.
6.  model.safetensors: 100%|█████████████████████████████████████████████████████████| 1.19G/1.19G [00:54<00:00, 21.8MB/s]
7.  generation_config.json: 100%|████████████████████████████████████████████████████████| 202/202 [00:00<00:00, 1.46MB/s]
8.  tokenizer_config.json: 10.7kB [00:00, 17.9MB/s]
9.  tokenizer.json: 100%|████████████████████████████████████████████████████████████| 11.4M/11.4M [00:04<00:00, 2.41MB/s]
10.  added_tokens.json: 100%|█████████████████████████████████████████████████████████████| 795/795 [00:00<00:00, 6.74MB/s]
11.  special_tokens_map.json: 100%|███████████████████████████████████████████████████████| 777/777 [00:00<00:00, 2.29MB/s]
12.  Score: 0.2966
13.  Document: Green tea contains antioxidants called catechins that may help reduce inflammation and protect cells...

15.  Score: 0.2262
16.  Document: 绿茶富含儿茶素等抗氧化剂,可以降低心脏病风险,还有助于控制体重。...

18.  Score: 0.1911
19.  Document: Studies show that drinking green tea regularly can improve brain function and boost metabolism....

21.  Score: 0.1645
22.  Document: Le thé vert est riche en antioxydants et peut améliorer la fonction cérébrale....

24.  Score: -0.1602
25.  Document: El precio del café ha aumentado un 20% este año debido a problemas en la cadena de suministro....

27.  Score: -0.1699
28.  Document: Basketball is one of the most popular sports in the United States....

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

结论

jina-reranker-v3 是一个新的 0.6B parameter 多语言 listwise reranker,引入了 last but not late interaction,以实现高效的 document reranking。Documents 在编码过程中可以互相关注,建立交互,从而影响最终排序。

一个主要关注点是这种交互是否对输入顺序的变化具有鲁棒性------也就是说,如果我们打乱输入顺序,排名是否保持不变?我们用一个 query 对 110 个 candidate documents 进行了随机排列测试,并在下图中绘制了每个排名位置的方差。

关键发现是,排名靠前的位置表现出极好的稳定性。排名 1-10 的方差最小,最相关的 documents 无论输入顺序如何,都能稳定排在顶部。这对于 nDCG@10 和类似的 top-k 指标至关重要。无关的 documents 一直排在底部,清晰区分了相关内容和无关内容。

中间部分显示了明显的位置交换,这是预期且可接受的。模型使用 causal self-attention,并根据序列中前面的内容编码不同的上下文信息。

在实际应用中,我们关心的是最顶部的结果,这种行为完全可以接受。我们的评估显示 jina-reranker-v3 的性能优于早期版本,包括 jina-reranker-v2-base-multilingualjina-colbert-v2,以及更大的替代模型如 Qwen3-Reranker-4B 和 jina-reranker-m0 ,进一步证实了这一点。

原文:jina.ai/news/jina-r...

相关推荐
神秘代码行者9 小时前
Git Restore 命令教程
大数据·git·elasticsearch
Elastic 中国社区官方博客11 小时前
Jina Reranker v3:用于 SOTA 多语言检索 的 0.6B 列表式重排序器
大数据·人工智能·elasticsearch·搜索引擎·ai·jina
Dxy123931021613 小时前
ES的DSL编写规则规则讲解
大数据·elasticsearch·搜索引擎
啃火龙果的兔子13 小时前
在已有项目目录下添加远程仓库
大数据·elasticsearch·搜索引擎
2501_9418824814 小时前
高并发缓存队列数据库组合优化在互联网系统中的实践分享
elasticsearch·memcache
Elasticsearch14 小时前
使用 LangGraph 和 Elasticsearch 构建人机交互 Agents
elasticsearch
编程大师哥14 小时前
分享一些 Git 常用命令的快捷方式
大数据·git·elasticsearch
哈库纳14 小时前
dbVisitor 使用 MyBatis 方式操作 ElasticSearch
elasticsearch·orm
GeminiJM14 小时前
大索引 Dump 失败问题的完整解决方案
elasticsearch
提笔忘字的帝国16 小时前
Elasticsearch 生产环境参数调优指南
大数据·elasticsearch·搜索引擎