paper-search 是一个命令行研究论文检索工具,同时搜索 OpenAlex 和 arXiv,并按论文相对于自身领域和年龄的影响力进行排序,而不是使用原始引用数。原始引用数总是偏向老论文,并埋没上个月发表的工作。该工具无需 API 密钥,无需认证。
用途
paper-search 用于文献检索、查找近期或取代性工作,以及为 AI/ML/系统等方向寻找证据。它特别关注在快速发展的领域中,如何同时看到已被广泛引用的经典工作和刚刚出现、尚未积累引用但可能重要的新工作。
主要能力
- 同时查询 OpenAlex 与 arXiv。
- 按领域和年龄调整后的影响力排序,使用 FWCI(领域加权引用影响力)。FWCI 为 1.0 表示恰好是该领域和该年份的平均水平,因此一篇 90 次引用的系统论文可以正确排在 300 次引用的 LLM 论文之前。
- 将论文分桶,最佳优先。分桶是核心设计:时效性和质量是独立维度,合并成单一分数会掩盖快速变化领域中最关键的权衡。
- 支持按主题搜索、限定起始时间、获取最近若干天的 arXiv 新论文、查找某篇论文的后续工作、指定领域和结果数量。
- 支持 JSON 机器可读输出。
- 提供离线自检模式,无需网络。
分桶含义
- LANDMARK:引用速度快且远高于领域水平,应优先阅读。
- STRONG:经过同行评审,明显高于领域平均水平。
- RISING:较新且正在被快速引用。
- FRESH+:太新而尚未被引用,但发表 venue 或作者可信。
- OK:真实存在,但表现平平。
- FRESH?:太新而未被引用且未经审查,需要自行验证。
- THIN:未被引用的预印本,作者无过往记录,通常可跳过。
每行输出显示日期(年龄)、引用数(速度)、FWCI、[层级] venue、作者 h=<最大 h 指数>。[TOP] 表示顶级 venue(NeurIPS/ICML/ACL/OSDI/SOSP/VLDB 等)。
使用方式
基本命令示例:
scripts/paper_search.py "lost in the middle long context" # 主题搜索 scripts/paper_search.py "kv cache compression" --since 2025-06 # 仅近期工作 scripts/paper_search.py "agent memory" --fresh 60 # 加上 arXiv,最近 60 天 scripts/paper_search.py --after arXiv:2307.03172 --about "position bias" # 基于该论文的后续工作 scripts/paper_search.py "raft consensus" --field any --limit 25 # 非 CS 领域,或更宽范围 scripts/paper_search.py --selftest # 离线;无网络
--after 接受 arXiv:ID、DOI:x 或 OpenAlex Wxxx。--json 用于机器输出;--help 查看所有标志。设置 OPENALEX_MAILTO=<你的邮箱> 可使用 OpenAlex 的礼貌池。
适用场景
- 快速了解一个主题的经典工作和已确立结果。
- 查找某篇重要论文之后的新工作,避免引用已被取代的结果。
- 查看最近几周出现的新论文,这是按引用排序的列表在结构上无法看到的。
- 在非计算机科学领域进行文献检索,需使用 --field any。
限制与注意事项
- 引用数是滞后指标。在 AI/基础设施领域,重要的论文可能只有 6 周大且零引用。不要从按引用排序的列表得出“不存在任何工作”的结论;在说一个主题未被探索之前,先运行 --fresh 60。
- FWCI 在约 18 个月以下噪声很大:预期引用分母接近零,因此 7 次引用可能得到 FWCI 108。脚本在该年龄以下会忽略 FWCI;不要通过读取年轻论文的原始数字重新引入它。
- 预印本日期不等于发表日期。一篇 2024 年 TACL 论文可能是 2023 年 arXiv 论文;想法在 venue 日期前 8 个月就已出现,在快速领域这一领先就是关键。输出在两者不同时会显示预印本 YYYY-MM;引用更早的日期以主张优先权。
- 作者可信度是这里最弱的信号,不要依赖它。OpenAlex 会混淆常见姓名(“Kevin Lin”:h=75,跨 825 项工作,多个人),且 h= 是作者中的最大值,姓名混淆会抬高该值。优先看旁边的 @ Stanford、Berkeley 等机构信息。在 --fresh 的 arXiv 结果中,两者都按设计缺失:arXiv 不暴露机构,姓名查找比无用更糟(“Feng Wang” → 4,865 位作者,因此会附上陌生人的 h 指数)。这就是 FRESH? 的含义——打开 PDF 自行判断。
- 一篇 landmark 会被所有领域引用。对著名论文使用 --after 也会返回医学和法律应用;传入 --about "<关键词>" 以保持前沿主题相关。
- --field cs 是默认值。其他领域请传 --field any,否则结果会莫名其妙地空。venue 元数据无论如何都不完美——一篇发表在 EMNLP 的论文可能仍显示 [PREPRINT] arXiv,因此信任引用数字而非层级标签。
快速变化主题的工作流
- paper_search.py "<topic>" — 找到 LANDMARK 和已确立的内容。
- paper_search.py --after <landmark-id> --about "<topic>" --since <约12个月前> — 此后基于它构建的工作,按影响力排序。这是避免引用已被取代结果的方法。
- paper_search.py "<topic>" --fresh 45 — 最近几周出现的内容,步骤 1 在结构上无法看到。
- 阅读摘要,然后阅读真正值得的两三篇论文。