rank_llm
RankLLM 是一款专为信息检索研究打造的 Python 工具包,核心致力于利用重排序模型(Rerankers)提升搜索结果的准确性,尤其擅长处理“列表式重排序”任务。在搜索引擎或问答系统中,初步检索往往返回大量相关但顺序不够理想的文档,RankLLM 通过引入先进的语言模型对这些结果进行二次精细排序,有效解决了传统方法难以捕捉复杂语义关联、导致关键信息排名靠后的痛点。
这款工具非常适合人工智能研究人员、数据科学家以及需要构建高精度检索系统的开发者使用。它提供了一个丰富的模型库,不仅支持 MonoT5、DuoT5 等经典点对点与成对模型,更重点优化了基于 vLLM、SGLang 等框架的开源大语言模型,同时也兼容 RankGPT 等专有模型。其独特的技术亮点在于支持自定义提示词模板(YAML 配置),让用户能轻松集成自有模型;同时提供仅基于首个令牌逻辑推理的高效模式,显著降低了计算成本。凭借可复现的研究流程和灵活的命令行接口,RankLLM 帮助用户以更低的门槛实现业界领先的检索重排序效果。
使用场景
某电商平台的搜索团队正在优化内部商品检索系统,试图从海量候选结果中精准筛选出最符合用户意图的前 10 个商品。
没有 rank_llm 时
- 重排序效果瓶颈:仅依赖传统的 BM25 或双塔模型进行初步检索,导致大量语义相关但关键词不匹配的商品被排在后面,准确率难以提升。
- 大模型集成困难:想要引入 LLM 进行列表级(Listwise)重排序以理解复杂语境,但缺乏统一接口,需手动编写繁琐的 Prompt 工程代码来适配不同模型。
- 推理效率低下:直接调用私有 API 成本高且延迟大,而本地部署开源大模型时,无法利用 vLLM 或 TensorRT-LLM 等加速框架,导致线上响应超时。
- 实验复现成本高:每次尝试新的重排序策略(如从 Pointwise 切换到 Listwise),都需要重构大量数据处理逻辑,难以快速对比 MonoT5、DuoT5 等模型效果。
使用 rank_llm 后
- 显著提升排序质量:通过内置的 Listwise 重排序器(如 RankGPT 或基于 Llama 的变体),让模型一次性审视整个候选列表,大幅提升了长尾查询的语义匹配度。
- 无缝集成多种后端:只需几行配置即可切换底层推理引擎,轻松对接 vLLM、SGLang 或 OpenRouter API,既保留了开源模型的灵活性,又支持私有模型的快速接入。
- 高效推理与自定义:利用“仅首 token logits"等优化技术加速推断,同时支持通过 YAML 文件自定义 Prompt 模板,灵活适配特定业务场景而不必修改核心代码。
- 标准化科研流程:内置完整的评估流水线,团队成员可快速复现 SIGIR 论文中的基准测试,在统一框架下高效对比不同重排序模型的性能差异。
rank_llm 将复杂的重排序研究转化为标准化的工程实践,帮助团队以最低成本实现了搜索相关性的质的飞跃。
运行环境要求
- Linux
- macOS
- 可选但推荐用于本地模型(vLLM, SGLang, TensorRT-LLM)
- 需 NVIDIA GPU,具体显存取决于模型大小(如 7B 模型通常需 16GB+),支持 CUDA 12.1 (cu121)
未说明

快速开始
RankLLM
新闻
- [2026.03.26] RankLLM 现在支持新的
rank-llm命令行界面 (CLI)。 - [2025.08.25] 添加了对 OpenRouter API 的支持 - 发布 v0.25.7
- [2025.07.23] 添加了使用 YAML 文件自定义提示模板的支持 - 发布 v0.25.0。现在只需几行代码即可集成您自己的提示和语言模型。请查看 Reasonrank 集成 作为示例。
- [2025.05.25] 我们的 RankLLM 资源论文已被 SIGIR 2025 接受!🎉🎉🎉
概述
我们提供一系列重排序器——包括单点模型如 MonoT5、成对模型如 DuoT5,以及以开源 LLM 为重点的列表式模型,这些模型与 vLLM、SGLang 或 TensorRT-LLM 兼容。我们还支持 RankGPT 和 RankGemini 变体,它们是专有的列表式重排序器。此外,我们还支持仅使用第一个 token 的 logits 进行重排序,以提高推理效率。本仓库中的部分代码借鉴自 RankGPT、PyGaggle 和 LiT5!
发布版本
current_version = "0.25.7"
内容
📟 安装
uv 是本仓库的标准贡献工作流。现有的 conda 和 pip 路径仍然可用作备用。
安装 uv
使用 Astral 的官方安装程序安装 uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
先决条件
- 仅当您计划通过
rank-llm[pyserini]使用检索或评估流程时,才需要安装 Java 21。不支持 JDK 11。 - 如果您希望获得比默认 Python 包解析更优的 GPU 优化构建版本,则需单独安装 CUDA 特定的 PyTorch wheel。
开发环境安装
对于开发或获取最新功能,请创建一个仓库本地的虚拟环境:
git clone https://github.com/castorini/rank_llm.git
cd rank_llm
uv python install 3.11
uv venv --python 3.11
source .venv/bin/activate
uv sync --group dev
如果您不想激活虚拟环境,可以通过 uv run 来执行命令,例如 uv run python -m unittest discover test。
可选扩展
仅安装您需要的堆栈:
uv sync --group dev --extra <extra>
将 <extra> 替换为下方功能矩阵中的其中一个扩展。您可以重复使用 --extra 来在一个环境中组合多个堆栈。
功能矩阵
| 工作流程 | 扩展 | 备注 |
|---|---|---|
| 托管的 OpenAI 或 OpenRouter 重排序器 | openai |
包含 python-dotenv 和 tiktoken |
| 托管的 Gemini 重排序器 | genai |
gemini 是别名 |
| 所有托管提供商的重排序器 | cloud |
安装 openai 和 genai |
| 本地的 Hugging Face 和 PyTorch 重排序器 | local |
安装 torch 和 transformers,用于 MonoT5、DuoT5、MonoELECTRA 及相关本地路径 |
| Pyserini 检索和评估 | pyserini |
需要 Java 21 |
| 轻量级 HTTP API 依赖 | api |
安装 FastAPI、Flask 和 Uvicorn,而不包含较重的检索或推理堆栈 |
| MCP 服务器依赖 | mcp |
引入打包好的 serve mcp 依赖集,包括 Pyserini 和模型服务后端 |
| 使用 vLLM 的开源模型进行列表式重排序 | vllm |
基于 local 并添加 vLLM 后端 |
| 批量 SGLang 推理 | sglang |
必要时需单独安装 flashinfer |
| 批量 TensorRT-LLM 推理 | tensorrt-llm |
必要时需单独安装 flash-attn |
| 完整的 HTTP 和 MCP 服务器捆绑包 | server |
api 和 mcp 扩展的集合 |
| 微调和训练脚本 | training |
将仅用于训练的依赖项排除在基础安装之外 |
| 全部 | all |
所有扩展的集合 |
PyPI 安装
创建一个隔离的虚拟环境并安装已发布的包:
uv venv --python 3.11
source .venv/bin/activate
uv pip install rank-llm
备用 conda / pip 流程
如果您想继续使用 conda:
conda create -n rankllm python=3.11 -c conda-forge -y
conda activate rankllm
pip install -e .
然后安装您需要的可选堆栈,例如:
pip install -e ".[<extra>]"
将 <extra> 替换为下方功能矩阵中的其中一个扩展。您可以根据需要组合多个扩展,例如 pip install -e ".[openai,api]"。
请记住,当这些堆栈需要时,务必为 sglang 后端安装 flashinfer,为优化的 TensorRT-LLM 或训练流程安装 flash-attn。
pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/
pip install flash-attn --no-build-isolation
⏳ 快速入门
打包好的 rank-llm 命令是本仓库的标准命令行界面。
src/rank_llm/scripts/ 目录下的旧版脚本仍然可用,但现在它们只是对同一命令行界面的兼容性封装。
rank-llm rerank --model-path castorini/rank_zephyr_7b_v1_full --dataset dl20 \
--retrieval-method bm25 --top-k-candidates 100
rank-llm prompt list
rank-llm view demo_outputs/rerank_results.jsonl
rank-llm evaluate --model-name castorini/rank_zephyr_7b_v1_full
rank-llm serve http --model-path castorini/rank_zephyr_7b_v1_full --port 8082
rank-llm serve mcp --transport stdio
以下代码片段是对从 DL19 查询中检索、重排序、评估以及对前100篇检索文档进行调用分析的最小化演示。在该示例中,使用 BM25 作为检索器,RankZephyr 作为重排序器。更多示例片段可在 src/rank_llm/demo 目录下运行。
from pathlib import Path
from rank_llm.analysis.response_analysis import ResponseAnalyzer
from rank_llm.data import DataWriter
from rank_llm.evaluation.trec_eval import EvalFunction
from rank_llm.rerank import Reranker, get_openai_api_key
from rank_llm.rerank.listwise import (
SafeOpenai,
VicunaReranker,
ZephyrReranker,
)
from rank_llm.retrieve.retriever import RetrievalMethod, Retriever
from rank_llm.retrieve.topics_dict import TOPICS
# -------- 检索 --------
# 默认使用 BM25 检索前100个候选文档。
dataset_name = "dl19"
retrieved_results = Retriever.from_dataset_with_prebuilt_index(dataset_name)
# 用户可以指定其他检索方法和检索的候选文档数量。
# retrieved_results = Retriever.from_dataset_with_prebuilt_index(
# dataset_name, RetrievalMethod.SPLADE_P_P_ENSEMBLE_DISTIL, k=50
# )
# ---------------------------
# --------- 重排序 ----------
# Rank Zephyr 模型
reranker = ZephyrReranker()
# Rank Vicuna 模型
# reranker = VicunaReranker()
# RankGPT
# model_coordinator = SafeOpenai("gpt-4o-mini", 4096, keys=get_openai_api_key())
# reranker = Reranker(model_coordinator)
kwargs = {"populate_invocations_history": True}
rerank_results = reranker.rerank_batch(requests=retrieved_results, **kwargs)
# ---------------------------
# ------- 评估 --------
# 评估检索结果。
topics = TOPICS[dataset_name]
ndcg_10_retrieved = EvalFunction.from_results(retrieved_results, topics)
print(ndcg_10_retrieved)
# 评估重排序结果。
ndcg_10_rerank = EvalFunction.from_results(rerank_results, topics)
print(ndcg_10_rerank)
# 默认评估指标为 ndcg@10,也可以指定其他值:
# eval_args = ["-c", "-m", "map_cut.100", "-l2"]
# map_100_rerank = EvalFunction.from_results(rerank_results, topics, eval_args)
# print(map_100_rerank)
# eval_args = ["-c", "-m", "recall.20"]
# recall_20_rerank = EvalFunction.from_results(rerank_results, topics, eval_args)
# print(recall_20_rerank)
# ---------------------------
# --- 分析调用情况 ---
analyzer = ResponseAnalyzer.from_inline_results(rerank_results)
error_counts = analyzer.count_errors(verbose=True)
print(error_counts)
# ---------------------------
# ------ 保存结果 -------
writer = DataWriter(rerank_results)
Path(f"demo_outputs/").mkdir(parents=True, exist_ok=True)
writer.write_in_jsonl_format(f"demo_outputs/rerank_results.jsonl")
writer.write_in_trec_eval_format(f"demo_outputs/rerank_results.txt")
writer.write_inference_invocations_history(
f"demo_outputs/inference_invocations_history.json"
)
# ---------------------------
端到端运行与2CR
如果您有兴趣端到端地运行检索和重排序,或复现【参考文献】中的结果,rank-llm rerank 是标准命令。run_rank_llm.py 仍作为旧版自动化工具的兼容性封装而保留。
我们两步即可复现的完整命令列表,分别在 MS MARCO V1 和 MS MARCO V2 页面上提供,对应 DL19、DL20 和 DL21-23 数据集。未来,我们计划在 2CR 页面上覆盖更多数据集和检索器。本节剩余内容将提供一些端到端运行的示例。
RankZephyr
我们可以使用以下命令运行 RankZephyr 模型:
rank-llm rerank --model-path castorini/rank_zephyr_7b_v1_full --top-k-candidates 100 --dataset dl20 \
--retrieval-method SPLADE++_EnsembleDistil_ONNX --prompt-template-path src/rank_llm/rerank/prompt_templates/rank_zephyr_template.yaml --context-size 4096 --variable-passages
加入 --sglang_batched 标志后,您就可以使用 SGLang 库以批处理模式运行模型。
加入 --tensorrt_batched 标志后,您就可以使用 TensorRT-LLM 库以批处理模式运行模型。
如果您希望多次运行模型,可以使用 --num_passes 标志。
RankGPT4-o
我们可以使用以下命令运行 RankGPT4-o 模型:
rank-llm rerank --model-path gpt-4o --top-k-candidates 100 --dataset dl20 \
--retrieval-method bm25 --prompt-template-path src/rank_llm/rerank/prompt_templates/rank_gpt_apeer_template.yaml --context-size 4096 --use-azure-openai
请注意,--prompt_template_path 已设置为 rank_gpt_apeer,以使用来自 APEER 的 LLM 优化提示。此路径也可更改为 rank_GPT 以使用原始提示。
LiT5
我们可以使用以下命令运行 LiT5-Distill V2 模型(该模型可以在一次运行中对100篇文档进行重排序):
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/LiT5-Distill-large-v2 --top_k_candidates=100 --dataset=dl19 \
--retrieval_method=bm25 --prompt_template_path=src/rank_llm/rerank/prompt_templates/rank_fid_template.yaml --context_size=150 --batch_size=4 \
--variable_passages --window_size=100
我们可以使用以下命令运行 LiT5-Distill 原始模型(该模型的工作窗口大小为20):
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/LiT5-Distill-large --top_k_candidates=100 --dataset=dl19 \
--retrieval_method=bm25 --prompt_template_path=src/rank_llm/rerank/prompt_templates/rank_fid_template.yaml --context_size=150 --batch_size=32 \
--variable_passages
我们还可以使用以下命令运行 LiT5-Score 模型:
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/LiT5-Score-large --top_k_candidates=100 --dataset=dl19 \
--retrieval_method=bm25 --prompt_template_path=src/rank_llm/rerank/prompt_templates/rank_fid_score_template.yaml --context_size=150 --batch_size=8 \
--window_size=100 --variable_passages
MonoT5
以下命令运行经过1万步训练的MonoT5 3B版本:
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/monot5-3b-msmarco-10k --top_k_candidates=1000 --dataset=dl19 \
--retrieval_method=bm25 --prompt_template_path=src/rank_llm/rerank/prompt_templates/monot5_template.yaml --context_size=512
请注意,我们通常使用MonoT5对1000个候选结果进行重排序。
MonoELECTRA
以下命令运行MonoELECTRA模型:
python src/rank_llm/scripts/run_rank_llm.py --model_path=monoelectra --top_k_candidates=1000 --dataset=dl19 \
--retrieval_method=bm25 --context_size=512
或者使用完整的模型路径:
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/monoelectra-base --top_k_candidates=1000 --dataset=dl19 \
--retrieval_method=bm25 --context_size=512
与MonoT5类似,我们通常使用MonoELECTRA对1000个候选结果进行重排序。
DuoT5
以下命令运行经过1万步训练的DuoT5 #B版本:
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/duot5-3b-msmarco-10k --top_k_candidates=50 --dataset=dl19 \
--retrieval_method=bm25 --prompt_template_path=src/rank_llm/rerank/prompt_templates/duot5_template.yaml
由于Duo的成对比较具有$O(n^2)$的时间复杂度,我们建议使用DuoT5模型对前50名候选结果进行重排序。
FirstMistral
我们可以使用以下命令运行FirstMistral模型,并仅使用第一个token的logits进行重排序:
python src/rank_llm/scripts/run_rank_llm.py --model_path=castorini/first_mistral --top_k_candidates=100 --dataset=dl20 --retrieval_method=SPLADE++_EnsembleDistil_ONNX --prompt_template_path=src/rank_llm/rerank/prompt_templates/rank_zephyr_template.yaml --context_size=4096 --variable_passages --use_logits --use_alpha --num_gpus 1
如果您希望执行传统的列表式重排序,请省略--use_logits。
Gemini Flash 2.0
首先安装Gemini提供者的额外依赖:
uv sync --group dev --extra genai
# 或:pip install -e ".[genai]"
然后运行以下命令:
python src/rank_llm/scripts/run_rank_llm.py --model_path=gemini-2.0-flash-001 --top_k_candidates=100 --dataset=dl20 \
--retrieval_method=SPLADE++_EnsembleDistil_ONNX --prompt_template_path=src/rank_llm/rerank/prompt_templates/rank_gpt_apeer_template.yaml --context_size=4096
🦙🐧 模型库
以下是本仓库主要支持的列表式模型表格(模型托管在Hugging Face上):
vLLM、SGLang和TensorRT-LLM后端仅支持RankZephyr和RankVicuna模型。
| 模型名称 | Hugging Face 标识符/链接 |
|---|---|
| RankZephyr 7B V1 - Full - BF16 | castorini/rank_zephyr_7b_v1_full |
| RankVicuna 7B - V1 | castorini/rank_vicuna_7b_v1 |
| RankVicuna 7B - V1 - 无数据增强 | castorini/rank_vicuna_7b_v1_noda |
| RankVicuna 7B - V1 - FP16 | castorini/rank_vicuna_7b_v1_fp16 |
| RankVicuna 7B - V1 - 无数据增强 - FP16 | castorini/rank_vicuna_7b_v1_noda_fp16 |
我们还正式支持由我们团队构建的以下重排序器:
LiT5 系列
以下是专门针对我们LiT5系列模型的表格,这些模型托管在Hugging Face上:
| 模型名称 | 🤗 Hugging Face 标识符/链接 |
|---|---|
| LiT5 Distill base | castorini/LiT5-Distill-base |
| LiT5 Distill large | castorini/LiT5-Distill-large |
| LiT5 Distill xl | castorini/LiT5-Distill-xl |
| LiT5 Distill base v2 | castorini/LiT5-Distill-base-v2 |
| LiT5 Distill large v2 | castorini/LiT5-Distill-large-v2 |
| LiT5 Distill xl v2 | castorini/LiT5-Distill-xl-v2 |
| LiT5 Score base | castorini/LiT5-Score-base |
| LiT5 Score large | castorini/LiT5-Score-large |
| LiT5 Score xl | castorini/LiT5-Score-xl |
现在您可以使用v2版本的模型在单次通过中高效地完成前100名的重排序!
MonoT5 系列 - 点式重排序器
以下是专门针对我们monoT5系列模型的表格,这些模型托管在Hugging Face上:
| 模型名称 | 🤗 Hugging Face 标识符/链接 |
|---|---|
| monoT5 Small MSMARCO 10K | castorini/monot5-small-msmarco-10k |
| monoT5 Small MSMARCO 100K | castorini/monot5-small-msmarco-100k |
| monoT5 Base MSMARCO | castorini/monot5-base-msmarco |
| monoT5 Base MSMARCO 10K | castorini/monot5-base-msmarco-10k |
| monoT5 Large MSMARCO 10K | castorini/monot5-large-msmarco-10k |
| monoT5 Large MSMARCO | castorini/monot5-large-msmarco |
| monoT5 3B MSMARCO 10K | castorini/monot5-3b-msmarco-10k |
| monoT5 3B MSMARCO | castorini/monot5-3b-msmarco |
| monoT5 Base Med MSMARCO | castorini/monot5-base-med-msmarco |
| monoT5 3B Med MSMARCO | castorini/monot5-3b-med-msmarco |
我们建议在生物医学检索任务中使用Med系列模型。我们同时提供1万步(通常在OOD场景下效果更好)和10万步(在域内表现更佳)的检查点。
训练
请查看 training 目录,了解如何微调开源的列表式重排序模型。
外部集成
RankLLM 已被集成到许多流行的工具包中,如 LlamaIndex、rerankers 和 LangChain。有关在这些工具包中使用 RankLLM 的方法及示例,请参阅外部集成 README。
社区贡献
如果您希望为该项目做出贡献,请参阅 贡献指南。
📜️ 发布历史
✨ 参考文献
如果您使用 RankLLM,请引用以下相关论文:
[2505.19284] RankLLM:用于基于 LLM 进行重排序的 Python 包
@inproceedings{sharifymoghaddam2025rankllm,
author = {Sharifymoghaddam, Sahel and Pradeep, Ronak and Slavescu, Andre and Nguyen, Ryan and Xu, Andrew and Chen, Zijian and Zhang, Yilin and Chen, Yidi and Xian, Jasper and Lin, Jimmy},
title = {{RankLLM}: A Python Package for Reranking with LLMs},
year = {2025},
isbn = {9798400715921},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
booktitle = {Proceedings of the 48th International ACM SIGIR Conference on Research and Development in Information Retrieval},
pages = {3681–3690},
numpages = {10},
keywords = {information retrieval, large language models, python, reranking},
location = {Padua, Italy},
series = {SIGIR '25}
}
[2309.15088] RankVicuna:使用开源大型语言模型进行零样本列表式文档重排序
@ARTICLE{pradeep2023rankvicuna,
title = {{RankVicuna}: Zero-Shot Listwise Document Reranking with Open-Source Large Language Models},
author = {Ronak Pradeep and Sahel Sharifymoghaddam and Jimmy Lin},
year = {2023},
journal = {arXiv:2309.15088}
}
[2312.02724] RankZephyr:高效且稳健的零样本列表式重排序轻而易举!
@ARTICLE{pradeep2023rankzephyr,
title = {{RankZephyr}: Effective and Robust Zero-Shot Listwise Reranking is a Breeze!},
author = {Ronak Pradeep and Sahel Sharifymoghaddam and Jimmy Lin},
year = {2023},
journal = {arXiv:2312.02724}
}
如果您使用 LiT5 模型之一,请引用以下相关论文:
[2312.16098] 缩小规模,提升性能:使用序列到序列编码器-解码器模型实现高效的零样本列表式重排序
@ARTICLE{tamber2023scaling,
title = {Scaling Down, LiTting Up: Efficient Zero-Shot Listwise Reranking with Seq2seq Encoder-Decoder Models},
author = {Manveer Singh Tamber and Ronak Pradeep and Jimmy Lin},
year = {2023},
journal = {arXiv:2312.16098}
}
如果您使用 monoT5 模型之一,请引用以下相关论文:
[2101.05667] 面向文本排名的预训练序列到序列模型的 Expando-Mono-Duo 设计模式
@ARTICLE{pradeep2021emd,
title = {The Expando-Mono-Duo Design Pattern for Text Ranking with Pretrained Sequence-to-Sequence Models},
author = {Ronak Pradeep and Rodrigo Nogueira and Jimmy Lin},
year = {2021},
journal = {arXiv:2101.05667},
}
如果您使用 monoELECTRA 模型,请考虑引用:
从石头中挤出水来:进一步提升交叉编码器重排序效果的一系列技巧
@inproceedings{pradeep2022monoelectra,
author = {Pradeep, Ronak and Liu, Yuqi and Zhang, Xinyu and Li, Yilin and Yates, Andrew and Lin, Jimmy},
title = {Squeezing Water from a Stone: A Bag of Tricks for Further Improving Cross-Encoder Effectiveness for Reranking},
year = {2022},
publisher = {Springer-Verlag},
address = {Berlin, Heidelberg},
booktitle = {Advances in Information Retrieval: 44th European Conference on IR Research, ECIR 2022, Stavanger, Norway, April 10–14, 2022, Proceedings, Part I},
pages = {655–670},
numpages = {16},
location = {Stavanger, Norway}
}
如果您使用 FirstMistral 模型,请考虑引用:
[2411.05508] 早期 FIRST 复现及单标记解码改进,用于快速列表式重排序
@ARTICLE{chen2024firstrepro,
title = title={An Early FIRST Reproduction and Improvements to Single-Token Decoding for Fast Listwise Reranking},
author = {Zijian Chen and Ronak Pradeep and Jimmy Lin},
year = {2024},
journal = {arXiv:2411.05508}
}
如果您想引用 FIRST 方法论,请考虑引用:
[2406.15657] FIRST:通过单标记解码实现更快更优的列表式重排序
@ARTICLE{reddy2024first,
title = {FIRST: Faster Improved Listwise Reranking with Single Token Decoding},
author = {Reddy, Revanth Gangi and Doo, JaeHyeok and Xu, Yifei and Sultan, Md Arafat and Swain, Deevya and Sil, Avirup and Ji, Heng},
year = {2024}
journal = {arXiv:2406.15657},
}
🙏 致谢
本研究部分得到了加拿大自然科学与工程研究委员会(NSERC)的支持。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

