系統性回顧種子搜尋
描述
這個 workflow 用來建立可重現、可稽核的系統性回顧搜尋種子,而不是宣稱已找完所有文獻。核心做法是先用 generate_search_queries 取得 MeSH、同義詞與建議查詢,再由 Agent 或使用者組裝 provider-neutral Boolean 查詢,最後以唯一公開的文字文獻搜尋入口 unified_search(options="systematic") 執行有界檢索。
systematic是 bounded retrieval primitive:公開介面每個來源最多取回 100 筆,適合 review seed 與可重現的 coverage expansion,不代表 exhaustive systematic-review coverage。正式回顧仍需保存完整策略、逐來源檢索日期、後續分頁/補充來源與篩選紀錄。
觸發條件
- 「系統性搜尋」
- 「完整搜尋」
- 「文獻回顧」
- 「comprehensive search」
- 「systematic review」
- 提到 MeSH、同義詞擴展、搜尋策略
正確工作流程
generate_search_queries
→ 整理 MeSH / 同義詞 / suggested_queries
→ 手動或由 Agent 組 provider-neutral Boolean 查詢
→ analyze_search_query
→ unified_search(options="systematic")
→ fetch_article_details / prepare_export / save_pipeline
目前沒有公開的獨立合併工具工作流。每一次
unified_search本身就會做多來源整合與去重;如果你跑多輪策略,做法應該是比較各輪結果、調整查詢,或把流程保存成 pipeline,而不是依賴舊版 merge 思路。
Step 1: 取得搜尋素材
generate_search_queries(
topic="remimazolam ICU sedation",
strategy="comprehensive"
)
strategy 選項
comprehensive: 預設,適合完整展開查詢素材;不代表結果已窮盡focused: 收斂到較高證據等級exploratory: 放寬,找更多變體與同義詞
你真正要用的欄位
mesh_terms: 標準詞彙與對應同義詞all_synonyms: 可直接組 OR 群組suggested_queries: 當作參考,不是最後答案pubmed_translation: 檢查 PubMed 實際如何理解查詢
Step 2: 組裝 Boolean 查詢
範例:從素材組出跨來源可執行查詢
query = '''
("intensive care" OR ICU OR "critical care")
AND
(remimazolam OR "CNS 7056" OR "ONO 2745")
AND
(sedation OR "procedural sedation")
'''
兩個原則
- 主概念之間通常用
AND - 同義詞與別名通常用
OR
PubMed 的 [Title/Abstract]、[MeSH Terms] 等 field tags 不是 provider-neutral 語法。含這些 tags 的查詢只送 sources="pubmed" 並使用預設 keyword mode;跨來源 systematic leg 使用上面的無欄位標籤 Boolean 查詢,讓各 provider adapter 依自身契約編譯。
Step 3: 執行前先分析
analyze_search_query(query=query)
這一步用來確認:
- 查詢是否太寬或太窄
- PubMed translation 是否符合預期
- 有沒有拼字或概念錯置
Step 4: 執行搜尋
unified_search(
query=query,
sources="openalex,semantic_scholar",
options="systematic",
limit=100,
ranking="quality",
filters="year:2020-2025",
output_format="json"
)
options="systematic" 會關閉 deep expansion 與自動放寬,並在 I/O 前拒絕不支援此模式的 explicit source。現在的 bounded systematic sources 只有 OpenAlex 與 Semantic Scholar;PubMed、Europe PMC、CORE、Scopus、Web of Science 與 preprint adapters 目前是 keyword-only,若要納入需另跑並標記為 supplemental search。
常用調整方式
- 想補最新未同行評審研究:另跑
options="preprints"的 keyword search,並標成補充來源 - 想做快速探索:另跑
options="shallow",不要把它標成 systematic run - systematic mode 已停用自動放寬;不要用放寬後的結果冒充原始策略命中
- 重視新近性:
ranking="recency" - 重視證據品質:
ranking="quality"
端到端範例
情境:建立 remimazolam ICU sedation 的 bounded review seed
# Step 1: 取得 MeSH 與同義詞素材
materials = generate_search_queries(
topic="remimazolam ICU sedation",
strategy="comprehensive"
)
# Step 2: 組裝查詢
query = '''
("intensive care" OR ICU OR "critical care")
AND
(remimazolam OR "CNS 7056" OR "ONO 2745")
AND
(sedation OR "procedural sedation")
'''
# Step 3: 先分析
analyze_search_query(query=query)
# Step 4: 再執行
unified_search(
query=query,
sources="openalex,semantic_scholar",
options="systematic",
limit=100,
ranking="quality",
filters="year:2020-2025",
output_format="json"
)
PubMed-only fielded leg
如果 protocol 需要 PubMed 欄位限定,另建一個只送 PubMed 的 leg,不要把同一字串傳給其他 provider:
pubmed_fielded_query = '''
("intensive care"[Title/Abstract] OR ICU[Title/Abstract])
AND
(remimazolam[Title/Abstract] OR "CNS 7056"[Title/Abstract])
AND
(sedation[Title/Abstract] OR "procedural sedation"[Title/Abstract])
'''
unified_search(
query=pubmed_fielded_query,
sources="pubmed",
limit=100,
filters="year:2020-2025",
output_format="json"
)
如果結果太少或太多
結果太少
- 把
strategy改成exploratory - 移除部分限制條件
- 減少
AND、增加同義詞OR - 移除
clinical_query或過窄的年齡/性別限制
結果太多
- 把
strategy改成focused - 增加主題限定詞
- 加上
filters="year:...,clinical_query:..." - systematic leg 只用 OpenAlex / Semantic Scholar;若使用 PubMed field tags,則另跑
sources="pubmed"的 keyword leg
可重複使用時
當搜尋策略已經穩定,不要每次重組:
save_pipeline(name="icu_sedation_review", config="...")
之後可以:
unified_search(pipeline="saved:icu_sedation_review")