【免费下载链接】daily-paper-reader
开源的每日 arXiv / OpenReview 论文推荐与 AI 阅读平台,支持 GitHub Actions 自动更新、GitHub Pages 部署与论文问答。
Daily Paper Reader 是一个开源的每日 arXiv / OpenReview 论文推荐与 AI 阅读平台,其每日推荐质量的核心之一就是rerank 重排体系:召回阶段筛出大量候选论文后,由 Qwen3-Reranker 模型对候选池做精排打分,再交给 LLM 精炼出最终日报。本文将完整讲清重排的本地 / 远端三选一部署方式,以及动态预算策略如何决定候选池规模,帮助你快速选对配置、跑出更准的论文推荐。
重排体系的位置:为什么 Step 3 决定推荐质量
Daily Paper Reader 的每日流水线共 7 步:抓取 → BM25 关键词召回 → 向量语义召回 → RRF 融合 →Rerank 重排(Step 3)→ LLM 精炼打分(Step 4)→ 生成日报(Step 6)。
重排的价值在于:BM25 和向量召回擅长"广撒网",但各路分数量纲不同、噪声也各有侧重。Step 3 会把所有召回 lane 合并成一个统一候选池,再由 Qwen3-Reranker 逐条判断"这篇论文的标题+摘要是否满足你的研究意图",输出相关性得分。可以说,Step 4 的 LLM 精分、Step 5 的精读/速读分区,全部建立在重排给出的星级门槛之上。
整个后端链路中,Rerank 紧跟在 Retrieval(BM25/Embedding/RRF)之后、LLM Refine 之前,重排结果写入archive/<date>/rank/,供后续步骤消费。
Qwen3-Reranker 三选一:本地、公益与 SiliconFlow 部署对比
重排脚本 src/3.rank_papers.py 内置了三个 rerank profile(预设配置),同一套代码,只需换一个名字即可切换部署方式:
| Profile | 运行位置 | 默认模型 | 鉴权 | 特点 |
|---|---|---|---|---|
local-qwen3-0.6b | 本地 CPU/GPU | Qwen/Qwen3-Reranker-0.6B | 无 | 零调用成本,离线可跑;需安装重依赖 |
public-zwwen-rerank | 远端公益服务(zwwen.online) | Qwen/Qwen3-Reranker-0.6B | 内置公益 Key,免配置 | 默认选项,Fork 即用 |
siliconflow-qwen3-0.6b | SiliconFlow 远端 API | Qwen3-Reranker-0.6B/8B | SILICONFLOW_API_KEY | 可选 8B 大模型,自带限速重试与成本统计 |
选项一:local-qwen3-0.6b —— 本地运行,零调用成本
本地实现见 src/3.rank_papers.py 的LocalQwenReranker。它的打分原理很巧妙:不取模型输出文本,而是直接读 tokenizer 中yes/no两个 token 的 logits,做 softmax 后取P(yes)作为相关性分数,分数越高表示论文越符合你的检索意图。
- 需要
torch+transformers,安装可选依赖 requirements-local-models.txt(CPU 版 torch); - 无 GPU 时自动用 CPU + float32 运行,可用
--rerank-device、--rerank-batch-size调优; - ⚠️ 云端模式下(
DPR_MODELS_REMOTE_ONLY=1)禁止加载本地模型,旧的本地配置会自动改走public-zwwen-rerank。
选项二:public-zwwen-rerank —— 默认公益重排服务
这是工作流的默认 profile。公益服务地址与模型名都写在 src/3.rank_papers.py 的RERANK_PROFILE_CONFIGS中,Key 内置兜底,普通用户 Fork 仓库后不配任何环境变量也能直接跑通重排,是"五分钟上线"体验的关键。
选项三:siliconflow-qwen3-0.6b —— SiliconFlow 远端 API
远端客户端实现在 src/reranker_api.py,专为离线实验与生产切换设计:
- 支持 src/reranker_api.py 中的
Qwen3-Reranker-0.6B与Qwen3-Reranker-8B两个尺寸,并可随请求下发学术论文场景专用的instruction; - 限速自愈:遇到 429 / rate limit 自动等待 65 秒重试(默认 2 次),还可用
SILICONFLOW_RERANK_MIN_INTERVAL_SECONDS设置请求间隔(GitHub Actions 默认 8 秒); - 成本透明:内置 单价表(0.6B 约 $0.01/百万 token,8B 约 $0.04/百万 token),运行结束自动输出 API 调用次数、延迟 P95 与估算费用;
- 远端每次最多 64 篇(
RERANK_MAX_DOCUMENTS_PER_REQUEST),脚本会自动把本地 100 的 batch 压缩到远端上限。
重排模式选择指南:环境变量、命令行与面板三种配置方式
选定 profile 后,有三种方式告诉系统使用它:
- 环境变量:设置
RERANK_PROFILE(还支持local、zwwen、sf-0.6b等别名自动归一),配合RERANK_PROVIDER/RERANK_MODEL/RERANK_API_BASE_URL微调; - 命令行参数:
--rerank-profile、--rerank-provider、--rerank-model,见 参数定义; - 工作流面板:在 daily workflow 的 dispatch 输入中直接选择
reranker_profile,见 .github/workflows/daily-paper-reader.yml。
前端触发时同样会读取你在密钥配置里选的 reranker profile(app/workflows.runner.js);如果选的是本地模式但当前运行在云端,会自动回落到public-zwwen-rerank,避免 Actions 环境下载模型失败。
# 例:一次性用 SiliconFlow 8B 跑一次本地实验 export RERANK_PROFILE=siliconflow-qwen3-0.6b export RERANK_MODEL=Qwen/Qwen3-Reranker-8B export SILICONFLOW_API_KEY=sk-xxxx python src/3.rank_papers.py --input archive/20260306/filtered/arxiv_papers_20260306.json动态预算策略:候选池规模如何自动计算
重排不是"把所有论文都打分"——调用量必须受控。resolve_global_pool_budget 会根据论文总量与意图查询(intent query)数量动态计算三个预算:
| 参数 | 计算规则 | 含义 |
|---|---|---|
lane_top_k | min(30 + 10 × ⌊(总数−1)/1000⌋, 120) | 每条召回 lane 最多带多少候选进池 |
guaranteed_per_lane | lane_top_k 的 25%,限制在 [5, 20] | 每条 lane保底进池的候选数 |
global_pool_limit | lane_top_k × 意图查询数,限制在 [60, 300] | 全局 RRF 融合后的候选池上限 |
以 4 个意图查询为例(数值来自 tests/test_rank_global_pool.py 的断言):
| 论文总量 | lane_top_k | 保底/lane | 全局池上限 |
|---|---|---|---|
| 1,000 篇 | 30 | 8 | 120 |
| 3,000 篇 | 50 | 12 | 200 |
| 10,000 篇 | 120(封顶) | 20(封顶) | 300(封顶) |
组池逻辑见 build_global_candidate_ids:每条 lane 的保底论文固定保留(防止冷门方向被挤掉),其余名额由全局 RRF(1/(60+rank))排序补齐,去重后交给 reranker。
💡 注意预算只按intent query 数量放大,而关键词召回(keyword lane)不参与打分。也就是说,你在订阅面板里写的"意图 Query(用于意图召回与最终打分)"越多,候选池越大、推荐越贴合语义,但调用量也越高:
如果预算不够用或想压缩成本,可用环境变量手动覆盖:DPR_RERANK_GLOBAL_POOL_LIMIT(如 80 加速)、DPR_RERANK_GUARANTEED_PER_LANE(如 1 提速)、DPR_RERANK_LANE_TOP_K。GitHub Actions 工作流当前固定为120 / 2(workflow 配置)。
从重排星级到日报:分数如何串联下游
重排得分会先做 min-max 归一化,再按阈值映射成星级(score_to_stars):
| 归一化得分 | 星级 | 后续去向 |
|---|---|---|
| ≥ 0.9 | ⭐⭐⭐⭐⭐ | Step 4 重点精分,高分可进精读区 |
| ≥ 0.5 | ⭐⭐⭐⭐ | 进入 Step 4 LLM 精炼(4★ 是默认门槛) |
| ≥ 0.1 | ⭐⭐⭐ | 直接过滤 |
| < 0.1 | 1-2★ | 直接过滤 |
也就是说,4★ 门槛就是重排与 LLM 之间的过滤器——重排预算给得越准,进入 DeepSeek 精分的候选越少越精,Token 成本和日报质量同时受益。最终你在日报里看到的每篇论文星级,正是这条链路的产物:
离线实验工具:验证你的重排预算与模型尺寸
项目内置了两套"裁判式"离线实验工具,都用Step 4 DeepSeek 精分结果作为评判标准(而不是看重排本身的分数),并按top20_score_sum、score_ge_8等指标自动给出recommended推荐项:
- src/rerank_budget_experiment.py:动态预算策略对比。内置
tiny=40:1、fast=80:1、balanced=120:2三档 profile,对比不同候选池规模下的重排耗时、LLM 耗时与最终质量; - src/rerank_model_size_experiment.py:模型尺寸对比。默认横评 SiliconFlow 的 0.6B 与 8B,额外输出两模型 Top20 重合度(
top20_overlap)与 API 成本估算,回答"大模型值不值"。
两者都固定随机种子(--seed 20260503)保证分批顺序一致、可复现,支持--skip-existing断点续跑。
重排体系速查清单:如何三选一
- ✅默认/云端运行:保持
public-zwwen-rerank不动,零配置,Fork 即用; - ✅想完全离线或长期大量跑:装 requirements-local-models.txt,选
local-qwen3-0.6b,CPU 也能跑; - ✅追求极致排序质量、可接受小额费用:选
siliconflow-qwen3-0.6b并把RERANK_MODEL切到 8B,先跑一轮rerank_model_size_experiment.py验证收益再上线; - ✅觉得日报候选不够/太多:先调
DPR_RERANK_GLOBAL_POOL_LIMIT(60–300)与DPR_RERANK_GUARANTEED_PER_LANE,而不是改代码; - ✅改完配置:跑一次预算实验,用 DeepSeek 精分结果对比
top20_score_sum,数据说话。
重排体系是 Daily Paper Reader 推荐链路中"投入产出比"最高的调节旋钮:选对部署方式省心,调好动态预算省钱,理解星级门槛才能理解每一篇推荐论文为什么出现在你的日报里。
【免费下载链接】daily-paper-reader
开源的每日 arXiv / OpenReview 论文推荐与 AI 阅读平台,支持 GitHub Actions 自动更新、GitHub Pages 部署与论文问答。
相关推荐
Millennium性能优化技巧:让你的Steam客户端运行更流畅
Millennium性能优化技巧:让你的Steam客户端运行更流畅 Millennium是一款开源低代码 modding 框架,专为桌面版 Steam 客户端打
NeuralRecon代码实现原理:从理论到实践的全链路分析
NeuralRecon代码实现原理:从理论到实践的全链路分析 NeuralRecon是一个基于深度学习的实时单目视频三维重建系统,能够从普通视频序列中高效构建连
计算机视觉深度学习人工智能科研EmojiPackage表情包主题深度解析:程序员篇 - 120个经典表情包带你走进程序员的内心世界
EmojiPackage表情包主题深度解析:程序员篇 120个经典表情包带你走进程序员的内心世界 EmojiPackage表情包资源合集是程序员日常沟通的神器,
即时通讯
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考