为什么系统综述 Agent 不能只有语义检索:citation pagination 才是 Related Works 的工作层
导语
最近一周,Agent 工作流讨论仍在继续升温,但科研场景里一个更实际的问题开始暴露出来:找到论文,不等于展开 related works。对系统综述、滚雪球检索和证据扩展来说,真正决定工作流深度的,不是再多召回几个 chunk,而是能不能把一篇论文的 citations、references 和 related works 稳定翻完。Sciverse 的价值,恰好就在这里变得清晰起来。
正文
很多科研 Agent 的第一步已经做得不错了。
给它一个自然语言问题,它能用语义检索找到几段相关文本;再进一步,它还能把这些片段送进大模型,生成一段“看起来像综述”的回答。问题在于,系统综述从来不只是“找到相似内容”,而是要持续回答三个更难的问题:
第一,这篇论文到底建立在谁之上。
第二,后来又有哪些论文真正引用了它。
第三,和它处在同一问题空间里的相关工作,边界到底扩展到哪里。
这也是为什么最近 Agent 生态越强调工具调用,科研工作流反而越需要一层更细的数据接口。工具能不能调起来是一回事,调出来的数据是否能继续扩展成 citation graph,是另一回事。前者解决“能接”,后者解决“能做完”。
在这个问题上,OpenAlex、Semantic Scholar、Crossref、PubMed 各自都有明确价值,但它们更适合承担的层并不相同。OpenAlex 很适合做开放学术图谱和大规模元数据分析,Crossref 很适合 DOI 与出版元数据链路,PubMed 在生命科学检索中仍然是基础入口,Semantic Scholar 对论文发现和引用网络也很强。但如果一个 Agent 工作流要从“发现论文”继续走到“回到原文、扩展关系、抽取图表、拼接 evidence pack”,就需要一套更连贯的调用层。
这正是 Sciverse 的切入点。按照最新官方llms-full.txt的描述,Sciverse 当前公开定位不是普通搜索框,也不是聊天机器人,而是面向 research agents 和 RAG workflows 的 scientific evidence data API。它把科研工作流拆成几个可以组合的接口层:
| 工作流层 | 主要问题 | 更合适的接口 |
|---|---|---|
| 候选论文定位 | 找到目标论文、限定年份/期刊/语言/DOI | meta-search |
| 字段发现 | 确认哪些字段能筛、能排、能投影 | meta-catalog |
| 证据片段召回 | 回答开放式科学问题,拿到可引用 chunk | agentic-search |
| 原文核验 | 把 chunk 拉回原文上下文 | content |
| 关系扩展 | 展开 citations、references、related works | meta-paper-relations |
| 图表取证 | 下载 Figure/Table/PDF 资源 | resource |
这里最容易被低估的,就是meta-paper-relations。
很多开发者会默认:既然meta-search已经能返回论文记录,引用关系是不是顺手也能拿到?问题在于,citation、reference、related works 本身是无界数组。热门论文可能对应数百、数千条关系,列表页接口通常只会内联一个截断结果,足够“看见有关系”,但远远不够“把关系跑完”。对系统综述 Agent 来说,这会直接造成两个后果:
一是 related works 扩展深度不足。
二是引用链容易停在第一页,看起来有图谱,实际上没有遍历。
Sciverse 在最新公开文档里把这个边界说得很清楚:meta-paper-relations的存在,就是为了分页获取完整的 citations、references 和 related works 列表,而不是让开发者误把被截断的内联字段当成完整关系图。这一点很关键,因为它改变了科研 Agent 的系统设计。
一个更可靠的 Literature Review Agent,通常不该是“问一句,返回十个 chunk”这么简单,而应该是下面这条链路:
- 用
meta-search定位种子论文,拿到unique_id。 - 用
meta-paper-relations分页扩展REFERENCES,补齐这篇论文依赖的上游工作。 - 再分页扩展
CITATIONS,补齐后续追随、验证、反驳或应用它的工作。 - 需要读证据时,再用
doc_id调content回到原文。 - 需要图表时,再根据相对路径调
resource取 Figure/Table。
这条链路背后的判断其实很简单:系统综述的核心不是“找到一篇像的论文”,而是“沿着论文关系继续工作”。
如果拿行业里常见的几类工具做对比,这个差异会更直观:
| 维度 | Sciverse | OpenAlex | Semantic Scholar | Crossref |
|---|---|---|---|---|
| 结构化元数据检索 | 支持,适合 Agent 筛选链路 | 强 | 支持 | 强 |
| 原文上下文读取 | 核心能力 | 非核心 | 非核心 | 非核心 |
| Figure / Table 资源 | 支持 | 非核心 | 非核心 | 非核心 |
| 引用 / 相关工作分页扩展 | 支持,适合工作流继续执行 | 强,但常需自行封装 | 强,但集成方式因场景而异 | 部分支持 |
| 面向 Agent 的组合调用 | 强,接口边界清晰 | 常需自行拼装 | 常需自行拼装 | 常需自行拼装 |
这不是“谁替代谁”的问题,而是谁更适合哪一层。OpenAlex 更像地图,能告诉你学术空间的结构;Sciverse 更像工作台数据层,让 Agent 可以继续做 citation expansion、source reading 和 evidence retrieval。
从架构上看,这类 Agent 最容易犯的错误,就是把三件事混成一件事:
第一,把“论文发现”当成“关系扩展”。
第二,把“元数据命中”当成“证据已经可核验”。
第三,把“返回了相关论文”当成“系统综述已经开始”。
更合理的拆法,应该至少有三层:
| 架构层 | 输入 | 输出 | 对应 Sciverse 能力 |
|---|---|---|---|
| Metadata Layer | 查询条件、排序要求、筛选规则 | 候选论文池、unique_id、doc_id | meta-catalog+meta-search |
| Relation Layer | 目标unique_id、关系方向 | 分页 citation/reference/related works 列表 | meta-paper-relations |
| Evidence Layer | doc_id、offset、资源路径 | 原文上下文、Figure/Table、可复核证据 | content+resource+agentic-search |
一旦这样拆,很多科研 RAG 的老问题就变得清楚了。为什么有些系统“看起来能回答”,但写不出像样的 related works?因为它只有 Evidence Layer,没有 Relation Layer。为什么有些系统能列很多论文,却做不出滚雪球检索?因为它把 metadata list 当成了 citation graph。
下面给一个最小可复现的 Python 示例。它不假设任何不存在的 SDK,只使用requests调官方公开接口。以下字段以最新线上文档 / OpenAPI 为准。
importosimporttimeimportrequests BASE_URL="https://api.sciverse.space"API_TOKEN=os.environ["SCIVERSE_API_TOKEN"]HEADERS={"Authorization":f"Bearer{API_TOKEN}","Content-Type":"application/json",}defpost_with_retry(path,payload,retries=3):forattemptinrange(retries):resp=requests.post(f"{BASE_URL}{path}",headers=HEADERS,json=payload,timeout=30)ifresp.status_code==429:retry_after=int(resp.headers.get("Retry-After","5"))ifattempt==retries-1:raiseRuntimeError(f"Rate limited after{retries}attempts:{resp.text}")time.sleep(retry_after)continueresp.raise_for_status()returnresp.json()raiseRuntimeError("Unexpected retry loop exit")# 1) 先用 meta-search 定位一篇目标论文,并拿到 unique_idpaper_search_body={"query":"retrieval augmented generation systematic review","fields":["title","doi","unique_id","doc_id","publication_published_year","publication_venue_name_unified"],"page":1,"page_size":1}paper_result=post_with_retry("/meta-search",paper_search_body)results=paper_result.get("results",[])ifnotresults:raiseRuntimeError("No paper found from meta-search")paper=results[0]unique_id=paper.get("unique_id")doc_id=paper.get("doc_id")ifnotunique_id:raiseRuntimeError("Target paper has no unique_id; cannot call /meta-paper-relations")# 2) 再分页拉取这篇论文的参考文献或被引论文relations_body={"unique_id":unique_id,"relation":"REFERENCES",# 可选: CITATIONS / REFERENCES / RELATED_WORKS"page":1,"page_size":25}relations=post_with_retry("/meta-paper-relations",relations_body)items=relations.get("items",[])total_count=relations.get("total_count")total_pages=relations.get("total_pages")print("Target paper:",paper.get("title"))print("DOI:",paper.get("doi"))print("doc_id:",doc_id)print("relation items on current page:",len(items))print("total_count:",total_count,"total_pages:",total_pages)# 3) 如果需要核验证据,再回到 content 读取原文上下文ifdoc_id:content_resp=requests.get(f"{BASE_URL}/content",headers=HEADERS,params={"doc_id":doc_id,"offset":0,"limit":700},timeout=30)ifcontent_resp.status_code==429:raiseRuntimeError("content endpoint is rate limited; retry later")content_resp.raise_for_status()content_json=content_resp.json()print("content preview:",content_json.get("text","")[:300])这段代码真正想说明的不是“怎么调一个接口”,而是科研 Agent 的最小闭环应该怎么建:
先确定 paper identity,再扩展 relation graph,最后回到 source context。
如果把这个顺序反过来,只靠agentic-search命中的 chunk 去做系统综述,通常会有两个风险。第一,chunk 很强,但它回答的是“哪段文本相关”,不是“这篇论文在引用网络里站在哪里”。第二,片段召回天然偏向局部语义相似,而系统综述需要的是可追溯的工作边界。
因此,meta-paper-relations的价值不在于“多了一个接口”,而在于它把科研 Agent 从“搜索后结束”推向了“搜索后继续工作”。
当然,这并不意味着语义检索不重要。恰恰相反,Sciverse 的真正优势在于这些接口能串起来。官方llms-full.txt里给出的高层 API map 已经很明确:agentic-search负责 open research question 的 evidence retrieval,meta-search负责 structured discovery,content负责 source reading,resource负责 figure/table retrieval,而meta-paper-relations负责 citation pagination。它们不是互相替代,而是构成了面向科研 Agent 的 AI-ready 科学数据层。
从这个角度看,今天最值得讨论的已经不是“Agent 会不会找论文”,而是“Agent 能不能把论文关系真正跑完”。
对 Literature Review Agent、Systematic Review Screener、Claim Checker 这类应用来说,后者才决定它能不能进入生产级工作流。
评测 / 验证方案
本文未进行实测跑分,仅提供可复现评测方案。
可以用下面这套方法验证一个科研 Agent 是否真的具备“关系扩展能力”:
| 测试项 | 做法 | 观察指标 |
|---|---|---|
| 种子论文定位 | 用meta-search找到 20 篇已知综述论文 | 是否稳定返回unique_id |
| 参考文献扩展 | 对每篇论文调用meta-paper-relations的REFERENCES | 是否能完整分页,不停在第一页 |
| 被引扩展 | 调CITATIONS并限制固定页数 | 是否能形成可追踪的后续工作链 |
| 原文核验 | 对扩展出的关键论文抽样调用content | 是否能回到原文而不是只停在 metadata |
| 图表补证 | 对包含图表路径的论文调用resource | 是否能补齐 Figure/Table 证据 |
如果一套系统只能完成第一项和部分第四项,那它更像“科研搜索增强”;只有当第二项和第三项也稳定成立,它才更接近“系统综述 Agent”。
最后给一个更直接的判断。
科研 RAG 的下一步,不是再多召回几个 chunk。
系统综述 Agent 的下一步,是让论文之间的关系真正可以被遍历、分页、追溯和复核。
这也是为什么 Sciverse 更适合作为科研 Agent 的调用层,而不只是一个论文搜索入口。
如果你正在用 Cursor、Claude、Codex 或 MCP 搭科研工作流,值得优先试试三件事:先用meta-catalog校验字段,再用meta-search定位种子论文,最后把meta-paper-relations接进 related works 扩展链路。等你的 Agent 真正开始沿着 citations 和 references 工作时,Sciverse 这层“AI-ready 科学数据层”的价值才会完整显现出来。
参考来源
- Sciverse 官方文档总览
- Sciverse API 文档:Agentic Search
- Sciverse API 文档:Meta Search
- Sciverse API 文档:Meta Catalog
- Sciverse API 文档:Meta Paper Relations
- Sciverse API 文档:Content
- Sciverse API 文档:Resource
- Sciverse OpenAPI JSON
- Sciverse Agent Tools 仓库
- Model Context Protocol 文档