rank_llm

GitHub
586 87 中等 1 次阅读 2天前Apache-2.0语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

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
GPU
  • 可选但推荐用于本地模型(vLLM, SGLang, TensorRT-LLM)
  • 需 NVIDIA GPU,具体显存取决于模型大小(如 7B 模型通常需 16GB+),支持 CUDA 12.1 (cu121)
内存

未说明

依赖
notes1. 官方推荐使用 'uv' 进行环境管理和安装,Conda/Pip 为备选方案。 2. 若使用检索或评估功能 (pyserini),必须安装 Java 21 (不支持 JDK 11)。 3. 使用 SGLang 后端需单独安装 'flashinfer',使用 TensorRT-LLM 或训练需单独安装 'flash-attn'。 4. 支持多种安装组合(extras),如 'local' (本地模型), 'cloud' (云端 API), 'vllm', 'sglang' 等,可按需安装。
python3.11
torch
transformers
vllm
sglang
tensorrt-llm
fastapi
flask
uvicorn
pyserini
openai
rank_llm hero image

快速开始

RankLLM

PyPI Downloads Downloads Generic badge LICENSE

新闻

  • [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 为重点的列表式模型,这些模型与 vLLMSGLangTensorRT-LLM 兼容。我们还支持 RankGPT 和 RankGemini 变体,它们是专有的列表式重排序器。此外,我们还支持仅使用第一个 token 的 logits 进行重排序,以提高推理效率。本仓库中的部分代码借鉴自 RankGPTPyGaggleLiT5

RankLLM Overview

发布版本

current_version = "0.25.7"

内容

  1. 安装
  2. 快速入门
  3. 端到端运行与 2CR
  4. 模型库
  5. 训练
  6. 社区贡献
  7. 参考文献与引用
  8. 致谢

📟 安装

uv 是本仓库的标准贡献工作流。现有的 condapip 路径仍然可用作备用。

安装 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-dotenvtiktoken
托管的 Gemini 重排序器 genai gemini 是别名
所有托管提供商的重排序器 cloud 安装 openaigenai
本地的 Hugging Face 和 PyTorch 重排序器 local 安装 torchtransformers,用于 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 apimcp 扩展的集合
微调和训练脚本 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 V1MS 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上):

vLLMSGLangTensorRT-LLM后端仅支持RankZephyrRankVicuna模型。

模型名称 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 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架