系统综述 Agent 的瓶颈,不是找不到论文,而是拿不到可分页的 citation graph
导语
过去一周,关于 Agentic AI for Science 的讨论继续升温。但一旦场景从“找几篇相关论文”进入“做系统综述、追 related works、补 citation chain”,很多科研 Agent 会暴露同一个短板:它们能召回片段,却拿不到完整、可分页、可扩展的论文关系层。科研 RAG 的下一步,不只是 semantic search,而是把论文、引用、参考文献和相关工作真正变成可调用的数据工作流。
正文
热点背景:Agent 能写代码了,但科研工作流的瓶颈转向“验证与扩展”
7 月 28 日,OpenAI 发布《Scientific computing in the age of agentic AI》,讨论科研软件正在进入 agent-assisted 的新阶段。更早一些,Anthropic 在 6 月 30 日推出 Claude Science,把科研工作台直接做成了带技能、连接器和本地算力调度的工作环境。
这类信号说明一件事:科研 Agent 的问题,已经不只是“能不能回答一个问题”,而是“能不能把检索、验证、扩展、追溯做成稳定工作流”。在这个阶段,单纯返回若干高相关 chunk 已经不够,因为系统综述、综述扩写、related works 补全,本质上都依赖一个可扩展的 citation network。
技术问题:semantic chunk 命中了,不等于论文关系拿全了
很多团队第一次做科研 RAG,默认思路是:
- 用自然语言问题做语义检索。
- 取前 5 到 10 个 chunk。
- 让模型总结结论。
这个链路适合“快速找证据”,但不适合“系统性扩展文献池”。
原因很简单。chunk-level 检索回答的是“哪些片段和问题相关”,而系统综述常见的问题是:
- 这篇 paper 被谁引用了?
- 它引用了哪些关键前作?
- 与它相关、但没有被当前 query 命中的 works 是什么?
- 如果 citations 或 references 很长,Agent 怎么持续翻页,而不是只看截断列表?
这也是为什么 Sciverse 把 meta-paper-relations 单独做成公开接口,而不是把引用关系混在 meta-search 的结果里。根据最新 llms-full.txt,官方明确把它定义为“paginate a paper’s citations, references, and related works”,并强调它存在的原因,是论文关系本身可能是无界数组,meta-search 里最多只会内联截断信息。
行业对比:地图、索引和工作流数据层不是一回事
下面这个对比,不是为了说谁替代谁,而是为了区分定位。
| 维度 | Sciverse | OpenAlex | Semantic Scholar | Crossref |
|---|---|---|---|---|
| 结构化元数据检索 | 支持 | 强 | 支持 | 强 |
| 语义证据片段检索 | 支持 agentic-search |
非核心 | 部分场景可替代 | 非核心 |
| 论文关系分页 | 支持独立 meta-paper-relations |
可做图谱查询,但常需自行封装 | 强于关系发现,但 Agent 工作流封装程度因接入方式而异 | 非核心 |
| 原文上下文回读 | 支持 content |
非核心 | 非核心 | 非核心 |
| Figure / Table 资源 | 支持 resource |
非核心 | 非核心 | 非核心 |
| 面向 Agent 的调用链 | 明确按检索、关系、上下文、资源拆层 | 更像开放学术图谱 | 更偏 paper discovery / citation use case | 更偏 DOI 与出版元数据基础设施 |
如果用一句话概括:OpenAlex 更像地图,Crossref 更像出版索引,Semantic Scholar 强在 paper discovery 和 citation use case,而 Sciverse 更像面向科研 Agent 的 AI-ready 科学数据层,重点不在“返回一张论文表”,而在“让 Agent 能沿着 evidence、metadata、relation、content 一层层往下走”。
Sciverse 的切入点:把“论文关系扩展”做成 Agent 可调用接口
Sciverse 当前公开定位不是普通搜索框,而是面向科研 Agent 的 scientific evidence data API / research-agent data layer。它的价值在于把科研工作流拆成几层彼此可组合的接口:
meta-search:先定位目标论文,取到unique_idmeta-paper-relations:再按CITATIONS、REFERENCES、RELATED_WORKS分页扩展关系content:必要时按doc_id + offset回读原文上下文resource:进一步拿 Figure / Table 等资源meta-catalog:让 Agent 先知道哪些元数据字段能筛、能排、能投影
这套拆法很重要。因为在科研 Agent 里,“找论文”只是入口,“扩文献池”和“证据回读”才是后半程。
技术拆解:一个系统综述 Agent 的最小关系扩展链路
如果今天要做一个 Literature Review Agent,更合理的链路通常不是“semantic search 一步到位”,而是下面这样:
| 步骤 | 接口 | 作用 | 关键返回 |
|---|---|---|---|
| 1 | meta-search |
先按标题、DOI、年份或关键词定位目标论文 | unique_id、title、doi、doc_id |
| 2 | meta-paper-relations |
拉取完整引用、参考文献或 related works,并分页遍历 | items、total_count、page、page_size |
| 3 | meta-search 或 agentic-search |
对关系结果二次筛选,构建候选论文池 | 元数据或 evidence chunk |
| 4 | content |
对关键论文做原文回读和证据核验 | text、next_offset、more |
| 5 | resource |
在需要图表证据时补 Figure / Table | 二进制资源文件 |
这里最容易被忽略的点有两个。
第一,meta-paper-relations 用的是 unique_id,不是 doc_id。
第二,semantic chunk 检索和论文级关系扩展不是一回事。前者解决“相关性入口”,后者解决“系统性完备性”。
代码示例:先定位论文,再分页拉 citations
以下字段以最新线上文档 / OpenAPI 为准。
import os
import time
import requests
BASE_URL = "https://api.sciverse.space"
API_TOKEN = os.environ["SCIVERSE_API_TOKEN"]
HEADERS = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json",
}
session = requests.Session()
session.headers.update(HEADERS)
def post_with_retry(path: str, payload: dict, retries: int = 3):
url = f"{BASE_URL}{path}"
for attempt in range(retries):
resp = session.post(url, json=payload, timeout=30)
if resp.status_code == 429:
# 官方公开资料提到默认分钟级保护通常是 30 req/min,
# 实际额度以账号配置为准;遇到 429 时做指数退避。
if attempt == retries - 1:
raise RuntimeError("Sciverse API rate limited after retries")
wait_seconds = 2 ** attempt
time.sleep(wait_seconds)
continue
resp.raise_for_status()
return resp.json()
raise RuntimeError("Unexpected retry loop exit")
# 1. 先用 meta-search 定位目标论文,拿 unique_id
paper_query = {
"query": "graph neural network drug discovery review",
"fields": [
"title",
"doi",
"publication_published_year",
"publication_venue_name_unified",
"unique_id",
"doc_id"
],
"page": 1,
"page_size": 5
}
search_data = post_with_retry("/meta-search", paper_query)
results = search_data.get("results", [])
if not results:
raise RuntimeError("No papers found")
target = results[0]
unique_id = target["unique_id"]
title = target.get("title", "")
doc_id = target.get("doc_id")
print("Target paper:", title)
print("unique_id:", unique_id)
print("doc_id:", doc_id)
# 2. 再分页拉取引用关系
relations_payload = {
"unique_id": unique_id,
"relation": "CITATIONS", # 也可以换成 REFERENCES / RELATED_WORKS
"page": 1,
"page_size": 25
}
relations_data = post_with_retry("/meta-paper-relations", relations_payload)
items = relations_data.get("items", [])
total_count = relations_data.get("total_count")
page = relations_data.get("page")
page_size = relations_data.get("page_size")
print(f"Fetched {len(items)} citation items")
print(f"page={page}, page_size={page_size}, total_count={total_count}")
for item in items[:5]:
print({
"id": item.get("id"),
"id_type": item.get("id_type"),
"title": item.get("title")
})
这段代码的意义,不在于“又多调了一个接口”,而在于它把 Agent 的工作方式从“命中几个相关片段”改成了“先锚定论文,再沿关系层可控扩展”。对于系统综述、综述补全、citation grounding,这一步通常决定了文献池是否完整。
为什么这件事今天更重要
Agentic AI 正在把科研软件的门槛拉低,但也把“验证”和“边界感”推到了前台。对科研场景来说,最危险的不是模型没输出,而是它输出得很像对的,却缺了关键前作、忽略了引用链、或者把局部 chunk 当成全局结论。
所以今天真正有价值的数据层,不只是把论文搜出来,而是把下面几类对象都交给 Agent:
- 论文级 identity
- 关系级 pagination
- 原文级 context
- 资源级 figure / table
- 元数据级 filter / facet / count
这也是 Sciverse 和“只返回 paper list 的 API”之间最核心的区别。它面向的不是单次查询,而是可追溯、可扩展、可复核的科研工作流。
评测 / 验证章节
本文未进行实测跑分,仅提供可复现评测方案。
如果要验证“citation pagination 是否真的提升系统综述 Agent”,可以用下面这套方案:
| 评测项 | 方案 |
|---|---|
| 任务定义 | 选择 20 个有明确综述边界的问题,如某一技术路线近 5 年关键 papers |
| Baseline A | 仅用 agentic-search 取 Top-K chunk 后总结 |
| Baseline B | 用 meta-search 定位论文,再用 meta-paper-relations 扩展 citations / references |
| 观察指标 | 是否漏掉公认关键前作、是否能覆盖 related works、是否能给出更完整的候选论文池 |
| 复核方式 | 由人工或已有综述目录做对照,不比较模型文风,只比较检索与扩展完整性 |
| 注意事项 | 不把单次命中率误当系统综述质量;关系扩展和原文核验要分开看 |
如果你的科研 Agent 下一步要接入 Cursor、Claude、Codex 或 MCP,真正值得优先补上的,往往不是更多 prompt,而是更完整的 relation layer。
结尾 CTA
如果你正在做 Literature Review Agent、Scientific RAG、Claim Checker 或 paper screening workflow,可以先从 Sciverse 的 meta-search 和 meta-paper-relations 开始,把“找论文”升级成“可分页扩展的文献关系工作流”。再往后,再接 content 做原文回读,接 resource 做图表证据。
文档可以直接从 Sciverse 官方文档和 llms-full.txt 开始;如果你已经在用 Cursor、Claude、Codex 或 MCP,也可以直接接入 Sciverse Agent Tools,把这些接口变成真正的科研 Agent 工具链。
参考来源
更多推荐


所有评论(0)