多來源綜合搜尋
描述
目前公開且唯一的 generic literature search 入口是 unified_search。它會在 PubMed、OpenAlex、Semantic Scholar、Europe PMC 等 primary search adapters 之間分流,並在單次搜尋內整合與去重。Crossref 是以文章識別資料執行的 enrichment leg,不是接收原始查詢的 primary search source。
多來源搜尋是 bounded coverage expansion,不代表完整或 exhaustive coverage。回傳量受公開
limit、provider mode 與各來源能力限制;要做正式系統性回顧,使用options="systematic"的 bounded review-seed workflow,並另外保存後續補充檢索與篩選紀錄。
觸發條件
- 「跨資料庫搜尋」
- 「綜合搜尋」
- 「不要只看 PubMed」
- 提到 OpenAlex、Semantic Scholar、Europe PMC、preprint
- 需要跨來源擴充 coverage
核心原則
新 workflow 不再直接依賴多個來源別 MCP 工具。對大多數文獻搜尋情境,應優先使用
unified_search,而不是舊的來源別工具名稱。
跨來源 query 應使用 provider-neutral Boolean 語法。PubMed [Title/Abstract]、[MeSH Terms] 等 field tags 只能用於 sources="pubmed" 的獨立 leg。
核心工具
unified_search(
query="machine learning drug discovery",
sources="pubmed,openalex,semantic_scholar,europe_pmc",
limit=25,
ranking="balanced",
output_format="json"
)
sources 可選值
- Primary search:
pubmedopenalexsemantic_scholareurope_pmccorearxiv、medrxiv、biorxiv
- Licensed、default-off primary search:
scopus、web_of_science - Enrichment-only:
crossref;它以已找到文章的 DOI/標題補 metadata,不是獨立 query leg,也不能作為唯一 primary source
如果不指定,系統會依 query profile、來源能力與可用設定自動選擇。選到 Crossref 時,它只在 primary results 之後做 enrichment。
常見用法
1. 廣泛 coverage expansion
unified_search(
query="machine learning drug discovery",
limit=30,
ranking="balanced"
)
2. 只看生醫核心來源
unified_search(
query="sepsis biomarkers",
sources="pubmed,europe_pmc",
limit=25,
ranking="quality"
)
3. 納入預印本
unified_search(
query="COVID-19 vaccine efficacy",
sources="pubmed,europe_pmc,openalex",
options="preprints",
limit=30,
ranking="recency"
)
4. 看高影響力跨領域文獻
unified_search(
query="foundation models pathology",
sources="pubmed,openalex,semantic_scholar",
limit=30,
ranking="impact"
)
5. 程式化後處理
unified_search(
query="CRISPR gene therapy",
sources="pubmed,openalex,semantic_scholar,europe_pmc",
limit=20,
output_format="json"
)
建議工作流程
情境 1:跨來源做 bounded coverage expansion
unified_search(
query="remimazolam sedation",
sources="pubmed,europe_pmc,openalex,semantic_scholar",
limit=30,
ranking="balanced"
)
情境 2:先找文獻,再補全文
unified_search(
query="machine learning radiology",
limit=20,
output_format="json"
)
# 對選中的 PMID / DOI 進一步抓全文
get_fulltext(source={"kind":"pmid","value":"12345678"}, extended_sources=True)
情境 3:跨來源搜尋後做探索
unified_search(
query="CAR-T lymphoma",
limit=15,
ranking="impact"
)
find_related_articles(pmid="12345678")
find_citing_articles(pmid="12345678")
get_citation_metrics(pmids="12345678,23456789")
何時調整 ranking
balanced: 預設,一般探索impact: 先找高影響力代表作recency: 先看最新研究與更新動態quality: 偏向高證據等級與較可靠研究
何時使用 options
options="preprints,shallow"
常見組合
preprints: 想補最新未正式出版研究shallow: 只想快速掃過no_relax: 不希望零結果時自動放寬no_analysis: 程式輸出較乾淨systematic: 使用 capability-validated 的 bounded review-seed mode;每個來源最多 100 筆,並非窮盡檢索
不是這個 skill 的情境
- 要建立 MeSH / 同義詞 review-seed query:改用
pubmed-systematic-search - 是臨床比較問題:改用
pubmed-pico-search - 想找圖像:用
search_biomedical_images - 想抓全文:用
pubmed-fulltext-access
最後原則
公開 MCP 介面中的 generic literature search 只有 unified_search,不再拆成來源別搜尋工作流。每次回報都要把 primary search、enrichment、bounded limits 與 supplemental runs 分清楚,不能把多來源合併等同於完整 coverage。
多來源 federation 允許 partial success。structured source_counts/source_errors 是權威狀態;
若有 artifact,先用 read_session 讀 audit.json、query_strategy.json 與完整 results,
再決定是否只重試失敗來源。不要用 Markdown 長度、PMID 文字出現次數或 agent hook 的
complexity hint 判斷搜尋是否成功。
一般 JSON/TOON result envelope 的 search_status 才是 agent routing contract:它會區分
completed/合法 empty/partial/failed,並固定揭露 bounded、
non-exhaustive、source sets 與 continuation/unknown-completeness。一般 deep mode 的
limit 是單一來源所有 strategies 共用的總額度;未知或格式錯誤的 filters/options
會在 provider I/O 前 fail closed。
需要回復歷程時,依序使用
read_session(request={"action":"search_runs"})、read_session(request={"action":"search_run","run_id":"..."})、read_session(request={"action":"replay_search","run_id":"..."})。Replay 只回傳
已移除 credentials 的 unified_search kwargs,不會自動執行;provider cursor/token
目前只保存在 provenance,尚不能透過公開 facade 就地續頁。
同一套 search-run handoff 也涵蓋 inline、saved:<name> 與 dry_run=true pipeline
mode;非 dry-run saved pipeline 另外保留 PipelineStore history。若 pipeline text 含
credential material,系統會拒絕 execution 並留下 failed run。看到
status="history_unavailable"/history_available=false 時,不要嘗試不存在的
inspect/replay actions;這表示 durable history commit 無法保證。