科研 Agent 先别急着搜:为什么 schema discovery 才是工作流的第一步
导语
过去一周,Agent 讨论的重点已经不只是“模型更强了”,而是“模型开始跨任务工作了”。但科研工作流里,真正先卡住 Agent 的,往往不是搜不到论文,而是它根本不知道有哪些字段能筛、哪些算子能用、哪些排序合法。对科研 Agent 来说,先知道自己能筛什么,比多搜几篇更重要。
正文
最近这波 Agent 热点有一个很清楚的信号:AI 系统开始从单点问答走向跨步骤执行。问题也随之变化。以前我们问“模型能不能回答”,现在更常见的问题是“模型能不能自己决定该先查什么、怎么筛、怎么验证”。放到科研场景里,这个问题会更尖锐,因为科研检索从来不是一个单一动作。
很多团队做科研 RAG 时,默认把问题压成一句自然语言检索,然后期待系统直接返回“相关论文”。这一步当然有价值,但它解决的只是召回,不是筛选。一个研究助手在真实工作流里,往往还要区分英文还是中文、限定年份、检查期刊或会议、按 DOI 精确命中、过滤开放获取状态,甚至先确认某个字段今天是否真的可用。如果这些信息都写死在 prompt 里,Agent 看起来像会用工具,实际上还是在猜接口。
这也是为什么科研 Agent 不能只依赖 metadata,也不能只依赖 chunk。前者容易停留在“论文列表”,后者容易停留在“命中片段”。真正可执行的工作流,中间还缺一层 schema discovery: 先知道当前数据层暴露了哪些字段、每个字段支持什么算子、哪些字段可排序、哪些字段默认返回,然后再构造结构化筛选。Sciverse 的价值,恰恰就在这里开始显形。它的定位不是普通搜索框,而是面向科研 Agent 的 AI-ready 科学数据层,把自然语言检索、结构化元数据、原文上下文、引用关系和资源读取拆成可组合接口。
如果把它和常见学术数据系统放在一起看,差异会更清楚:
| 维度 | Sciverse | OpenAlex | Semantic Scholar | Crossref |
|---|---|---|---|---|
| 结构化元数据检索 | 支持,且适合 Agent 链式调用 | 强 | 支持 | 强 |
| 自然语言证据片段检索 | 支持agentic-search | 非核心 | 非核心 | 非核心 |
| 运行期字段发现 | 支持meta-catalog | 通常需自行查文档/封装 | 通常需自行封装 | 通常需自行封装 |
| 原文上下文回读 | 支持content | 非核心 | 非核心 | 非核心 |
| 面向 Agent 工作流 | 明确面向 RAG / MCP / Agent | 偏学术图谱 | 偏发现与引用网络 | 偏 DOI/出版元数据 |
这不是“谁更强”的问题,而是定位不同。OpenAlex 很适合做学术图谱底座,Crossref 很适合 DOI 与出版元数据基础设施,Semantic Scholar 很适合发现与引用网络入口。Sciverse 更像是科研 Agent 的调用层,它关心的不是“给你一堆记录”,而是“Agent 下一步还能不能继续工作”。
从接口链路看,这个思路非常直接:
| 步骤 | 接口 | 作用 |
|---|---|---|
| 1 | meta-catalog | 让 Agent 先发现有哪些字段、算子、排序能力 |
| 2 | meta-search | 按合法字段构造候选论文池 |
| 3 | agentic-search | 对开放性问题做证据级召回 |
| 4 | content | 用doc_id回到原文上下文核验 |
| 5 | resource/meta-paper-relations | 继续拿图表、参考文献、相关工作扩展链路 |
这条链路里,meta-catalog很容易被低估。但它恰好决定了 Agent 是“真会用工具”,还是“把接口说明背成 prompt”。一旦没有 schema discovery,团队通常会出现三种问题:第一,字段名硬编码,文档一变就失效;第二,搜索和筛选混在一起,query、sort、filters互相打架;第三,模型以为自己在做结构化检索,实际上只是换了一种方式写关键词搜索。
Sciverse 在这里切入得很实用。根据最新公开llms.txt/llms-full.txt与文档,当前公开工作流重点围绕六类接口展开:agentic-search、meta-search、meta-catalog、meta-paper-relations、content、resource。这意味着一个科研 Agent 完全可以先用meta-catalog探测字段,再用meta-search形成候选池,最后才进入证据回读与引用扩展。换句话说,搜索不是第一步,知道“能怎么搜”才是第一步。
下面给一个最小可复现示例。以下字段以最新线上文档 / OpenAPI 为准。
importosimportrequestsimporttime BASE="https://api.sciverse.space"TOKEN=os.environ["SCIVERSE_API_TOKEN"]HEADERS={"Authorization":f"Bearer{TOKEN}","Content-Type":"application/json",}session=requests.Session()defrequest_with_backoff(method,url,**kwargs):forattemptinrange(3):resp=session.request(method,url,timeout=30,**kwargs)ifresp.status_code==429:ifattempt==2:raiseRuntimeError("Rate limited by Sciverse after 3 attempts")time.sleep(2**attempt+1)continueresp.raise_for_status()returnrespraiseRuntimeError("Unexpected retry state")# 1) 先发现 schema,而不是直接猜字段catalog=request_with_backoff("GET",f"{BASE}/meta-catalog",headers=HEADERS,params={"include_sample_values":"true"},).json()field_names={f["name"]forfincatalog.get("fields",[])}year_field="publication_published_year"if"publication_published_year"infield_nameselseNone# 2) 再构造合法的结构化检索filters=[{"field":"language","operator":"FILTER_OP_EQ","value":"en"}]ifyear_field:filters.append({"field":year_field,"operator":"FILTER_OP_GTE","value":2024})search_body={"filters":filters,"fields":["title","doi","doc_id","publication_published_year"],"page":1,"page_size":5}papers=request_with_backoff("POST",f"{BASE}/meta-search",headers=HEADERS,json=search_body,).json()forpaperinpapers.get("results",[]):print(paper.get("title"),paper.get("doi"),paper.get("doc_id"),paper.get("publication_published_year"),)这段代码的重点不在于“搜到了 5 篇论文”,而在于 Agent 先做了一件更重要的事:确认今天哪些字段真的存在、哪些字段真的可用。这样一来,后面不管你是接 Cursor、Claude、Codex 还是 MCP,都不用把字段约束硬塞进 prompt 里。
进一步说,科研 Agent 的架构也应该按这个思路拆层,而不是把所有能力混成一个“超级搜索”:
metadata layer
负责字段发现、结构化筛选、候选池构建。evidence layer
负责agentic-search召回片段,再用content回到原文。relation/resource layer
负责引用网络、相关工作、Figure/Table 等扩展证据面。
这比“一个搜索接口包打天下”更接近真实科研流程。因为研究者从来不是先要答案,而是先要确定范围、再缩小范围、再核验证据、最后组织判断。Agent 也一样。
评测 / 验证
本文未进行实测跑分,仅提供可复现评测方案。
可以按下面的方法验证一个科研 Agent 是否真的具备“schema-aware”能力,而不是只会写关键词:
| 评测项 | 做法 | 观察点 |
|---|---|---|
| 字段自发现 | 先调meta-catalog再生成查询 | 是否避免硬编码字段名 |
| 结构化筛选 | 同时限制语言、年份、期刊或 DOI | 是否正确使用filters与fields |
| 检索分层 | 先筛选候选,再做证据召回 | 是否区分meta-search与agentic-search |
| 证据核验 | 用doc_id调content回读 | 是否把片段带回原文上下文 |
| 错误处理 | 人为触发 429 或字段错误 | 是否回退、重试、提示字段不支持 |
如果一套系统跳过第一步 schema discovery,后面的“智能检索”通常只是运气更好的字符串匹配。
最后,Sciverse 值得关注的地方,不是它又多了一个搜索接口,而是它把科研 Agent 需要的数据动作拆成了可组合层。对今天的 Agent 来说,找到论文已经不够了;它还得知道自己能怎么筛、筛完之后如何回到原文、如何继续沿着引用和资源走下去。这才是“AI-ready 科学数据层”真正解决的问题。
如果你正在做科研 RAG、文献综述 Agent、Evidence Pack 或 MCP 工具链,现在最值得补的一课,不是再加一个模型,而是给 Agent 一层真正可发现、可验证、可回读的科研数据接口。
查看 Sciverse 文档,接入 Sciverse Agent Tools,或者直接在 Cursor、Claude、Codex、MCP 工作流里把meta-catalog → meta-search → content这条链路先跑起来,再谈“科研 Agent 是否真的会工作”。
参考来源
- Sciverse Docs Overview
- Sciverse Docs API
- Sciverse Docs FAQ
- Sciverse llms.txt
- Sciverse llms-full.txt
- Sciverse API canonical docs index
- Sciverse Agent Tools
- OpenAI, How AI is expanding what people do at work, 2026-07-27
