这是 Sciverse 科学数据库实战系列第 1 篇。 这一篇先讲架构:我们如何把一个“论文搜索框”,升级成能做 RAG、AI做综述、deep-research、自动化科研 的 Agent 工作流。
依据来源:Sciverse Docs:https://sciverse.space/docs
背景:不要再从PDF搬砖开始做科研RAG
我们项目最初的目标很简单: 输入一个科研问题,自动检索论文,生成带引用的综述。
但真正开工后发现,难点不是 LLM。
难点是数据链路:
- PDF 下载慢;
- 公式、表格、图像容易解析丢失;
- 文献切片没有统一
doc_id; - 向量数据库里存了一堆低质量 chunk;
- 最后生成的引用无法回到原文。
Sciverse 的核心价值就在这里:它把科学文献变成了 Agent 可调用的数据基座。
根据已有资料,Sciverse 提供:
- 4500 万+ OA 文献;
- T+1 持续更新;
- MinerU 高保真解析;
- meta-search、agentic-search、deep-search 等检索能力;
- doc_id、chunk、正文片段、原文回溯能力。
架构设计:Sciverse做全局召回,本地只做任务缓存
我们没有把所有文献灌进自己的向量数据库。 原因很现实:成本高、更新慢、质量不可控。
最终架构是:
flowchart TD
A[用户输入科研问题] --> B[Query Planner]
B --> C[Sciverse meta-search]
B --> D[Sciverse agentic-search / deep-search]
C --> E[候选 doc_id]
D --> F[高相关 chunk]
E --> G[去重与证据聚合]
F --> G
G --> H[按 doc_id 读取正文片段]
H --> I[本地缓存 / 向量数据库]
I --> J[LLM 生成综述]
J --> K[带引用 AI 文献研究报告]
核心原则:
- Sciverse:负责科学文献检索、正文切片、原文回溯;
- 本地向量数据库:只缓存当前任务相关 chunk;
- LLM:负责问题拆解、证据组织、综述生成。
关键代码:统一封装检索入口
# sciverse_client.py
import os
import httpx
class SciverseClient:
def __init__(self):
self.base_url = os.getenv("SCIVERSE_BASE_URL", "https://sciverse.space")
self.api_key = os.environ["SCIVERSE_API_KEY"]
self.client = httpx.Client(
timeout=30,
headers={"Authorization": f"Bearer {self.api_key}"}
)
def agentic_search(self, query: str, top_k: int = 20):
return self.client.post(
f"{self.base_url}/api/sciverse/agentic-search",
json={"query": query, "top_k": top_k}
).json()
def read_content(self, doc_id: str, offset: int = 0, length: int = 6000):
return self.client.post(
f"{self.base_url}/api/sciverse/content",
json={"doc_id": doc_id, "offset": offset, "length": length}
).json()
性能对比:整篇读取 vs 按需切片
我们压测了两种方案:
# 方案A:整篇读取
hey -n 200 -c 10 "http://localhost:8000/research/full"
# 方案B:Sciverse doc_id + offset + length 按需读取
hey -n 200 -c 10 "http://localhost:8000/research/slice"
| 方案 | 平均延迟 | P95延迟 | 单次上下文规模 | 适合场景 |
|---|---|---|---|---|
| 整篇读取 | 8.4s | 14.2s | 30K-80K tokens | 深读少量论文 |
| 按需切片 | 2.1s | 4.8s | 4K-8K tokens | deep-research 多轮检索 |
| 切片+缓存 | 0.9s | 1.7s | 4K-8K tokens | 高频选题追踪 |
结论: AI 文献研究不是“越多上下文越好”,而是“证据足够、引用可信、成本可控”。
我们踩过的坑
第一个坑:只用向量数据库做召回。 科研问题里大量实体非常关键,比如 DOI、基因名、材料体系、反应条件。纯向量召回会漏掉精确实体。
第二个坑:不保存 source location。 报告生成后看起来很完整,但无法证明每个结论来自哪篇论文的哪个片段。
第三个坑:一次性拉太多论文。 top_k=100 看起来很猛,实际会让 Agent 的分析质量下降。更推荐 top_k=20,深读 5-8 篇。
总结
如果你要做 RAG、AI做综述、auto-research 或 deep-research,Sciverse 更像一个科学数据操作系统,而不是普通文献搜索工具。