100% 在你的浏览器中运行

在线重排序 Demo

粘贴查询和候选段落。cross-encoder 对每一对打分;bi-encoder 代理(词元重叠)展示独立嵌入为何会排错序。可对比两个模型、分享链接,或开启 WebGPU 加速推理。

下载任何东西之前,先看看效果

这个例子不需要任何模型 —— 左列是本页其他地方也在用的词元重叠算法的真实输出。下方的交互式 Demo 会用真正的 cross-encoder 为你自己的文本打分。

查询:“我该如何在 RAG 流水线里加入重排序(rerank)这一步?”

重排前 —— bi-encoder 代理(词元重叠)
1
0.0500
Cohere Rerank、Jina Reranker 和 bge-reranker 都是重排序阶段常见的托管或开源选项。
2
0.0400
把 cross-encoder 接入 RAG 的做法:先用向量检索召回 50–100 个候选,再用 cross-encoder 重排序,最后只保留前 5 条放进 prompt。
3
0.0000
reranker 会把查询和每个召回的片段一起送入模型,输出一个精确的相关性分数,从而在交给大模型之前对 top-k 重新排序。
4
0.0000
bi-encoder 会分别对查询和文档做嵌入,这在第一阶段检索时很快,但在细粒度排序上较弱。
5
0.0000
把分块大小设为 200–400 个 token 并留一点重叠,通常比直接索引整篇文档检索效果更好。
6
0.0000
伦敦是英国的首都,也是欧洲人口最多的城市之一。
重排后 —— reranker 修正的结果
1
直接命中
把 cross-encoder 接入 RAG 的做法:先用向量检索召回 50–100 个候选,再用 cross-encoder 重排序,最后只保留前 5 条放进 prompt。
2
有支撑作用
reranker 会把查询和每个召回的片段一起送入模型,输出一个精确的相关性分数,从而在交给大模型之前对 top-k 重新排序。
3
有支撑作用
Cohere Rerank、Jina Reranker 和 bge-reranker 都是重排序阶段常见的托管或开源选项。
4
相关
把分块大小设为 200–400 个 token 并留一点重叠,通常比直接索引整篇文档检索效果更好。
5
相关
bi-encoder 会分别对查询和文档做嵌入,这在第一阶段检索时很快,但在细粒度排序上较弱。
6
跑题
伦敦是英国的首都,也是欧洲人口最多的城市之一。

左列此刻就在你的浏览器里真实运行 —— 零下载、确定性的词元重叠算法,和交互式 Demo 中间列用的是同一段代码。右列是一个正常工作的 cross-encoder 对这个查询「应该」给出的顺序,这是靠人工阅读核实的,并非在本页上运行模型截取的结果;在下方加载模型即可看到它对这个例子给出的真实分数。

加载真实模型(33 MB),试试你自己的文本 ↓

隐私与成本:一切通过 transformers.js 在 ONNX Runtime Web 上本地运行。查询和段落不离开浏览器,无 API 密钥、无按次计费 —— 本页因此可免费且防滥用。

Demo 工作原理

模型是 cross-encoder:不把查询与段落分别嵌入,而是将 (query, passage) 成对送入网络,输出单一相关性分数。中间列为 bi-encoder 代理(仅词元重叠),便于理解余弦式检索在重排前为何常排错。

  1. 查询与每条候选段落配对。
  2. 每对分词后送入 cross-encoder。
  3. 输出 logit 压缩为 0–1 相关性分数。
  4. 按分数排序;与 bi-encoder 代理列对比。

这与 RAG 流水线 第二阶段相同 —— 只不过在浏览器标签页完成,而非 API 背后。

提示:查询框 Enter 运行,段落框 Ctrl+EnterEsc 清空。复制分享链接发给同事。开启双模型对比可看 jina-tiny 与 mxbai-xsmall 在边界案例上的分歧。

阅读:什么是 reranker?→