Qiao Jin, Zhiyong Lu, Qingfang Liu, Joe Menke, Thorsten Kahnt
We lifted 31 functions out of this paper's own repositories and ran 25 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.
| Repository | Role | Ran |
|---|---|---|
| QingfangLiu/llm-evidence-retrieval-bias | canonical | 25 of 31 |
| Function | Status | Where it lives |
|---|---|---|
| calculate_mann_whitney_test | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/overlap_metrics.py pointer only (licence: NONE) · get_code("2d0de3f9a753d906") |
| calculate_multi_set_jaccard | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/overlap_metrics.py pointer only (licence: NONE) · get_code("0843b6bce84576ef") |
| calculate_replicate_consistency | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/overlap_metrics.py pointer only (licence: NONE) · get_code("68c30d932a7949aa") |
| cell | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/reference_indexing_schema.py pointer only (licence: NONE) · get_code("25480657033da448") |
| citation_identity_note | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD000510/analyze_cd000510_roles.py pointer only (licence: NONE) · get_code("a15ecee30950237e") |
| collect_review_pdfs | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/cochrane_review_source.py pointer only (licence: NONE) · get_code("d5c2b8646741a30a") |
| compact | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/build_reference_indexing_from_cochrane_ris.py pointer only (licence: NONE) · get_code("cd382468e750cf17") |
| compact | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/reference_indexing_schema.py pointer only (licence: NONE) · get_code("744acc2017757c05") |
| dimension_summaries | Ran | QingfangLiu/llm-evidence-retrieval-bias/figures/make_paper_figures.py pointer only (licence: NONE) · get_code("31ff80b0e0d7f9b7") |
| extract_claude_list | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD001452/analyze_cd001452_roles.py pointer only (licence: NONE) · get_code("a504f8f552b1365c") |
| extract_terminal_list | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD007654/analyze_cd007654_roles.py pointer only (licence: NONE) · get_code("274aeac953e50576") |
| is_review_pdf_path | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/cochrane_review_source.py pointer only (licence: NONE) · get_code("c667163c27e05788") |
| last_heading_index | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD001452/analyze_cd001452_roles.py pointer only (licence: NONE) · get_code("9c02250cd6cbdd4a") |
| load_matches | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/build_demo.py pointer only (licence: NONE) · get_code("f1b49bfb18520d40") |
| load_model_metadata | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/build_demo.py pointer only (licence: NONE) · get_code("2effd1f8b982f74e") |
| load_role_labels | Ran | QingfangLiu/llm-evidence-retrieval-bias/demo/build_demo.py pointer only (licence: NONE) · get_code("62eb804824fdba32") |
| normalize | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD000510/analyze_cd000510_roles.py pointer only (licence: NONE) · get_code("4ebd7f5545fabcde") |
| normalize | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD005354/analyze_cd005354_roles.py pointer only (licence: NONE) · get_code("d6054082d8efea8b") |
| normalize | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD007654/analyze_cd007654_roles.py pointer only (licence: NONE) · get_code("e9816484b1b198c7") |
| normalize_text | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/build_reference_indexing_from_cochrane_ris.py pointer only (licence: NONE) · get_code("20c568d253ca23b7") |
| resolve_candidate | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD000510/analyze_cd000510_roles.py pointer only (licence: NONE) · get_code("c900c29ec5e5f4c2") |
| review_collection_name | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/cochrane_review_source.py pointer only (licence: NONE) · get_code("90f97f1529633b9d") |
| ris_records | Ran | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD005354/analyze_cd005354_roles.py pointer only (licence: NONE) · get_code("6eae04cab3d1e143") |
| title_tokens | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/build_reference_indexing_from_cochrane_ris.py pointer only (licence: NONE) · get_code("a25acaf2819e6f17") |
| unique_preserve_order | Ran | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/reference_indexing_schema.py pointer only (licence: NONE) · get_code("9ac2ddedf8b5c895") |
| pmids_to_pmc_info | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/pubmed_utils.py pointer only (licence: NONE) · get_code("e8edea7b748fea72") |
| pubmed_efetch_details | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/pubmed_utils.py pointer only (licence: NONE) · get_code("d300858d9f7ff348") |
| pubmed_esearch | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/benchmark_tools/pubmed_utils.py pointer only (licence: NONE) · get_code("c68386fb79c34681") |
| resolve_candidate | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD007654/analyze_cd007654_roles.py pointer only (licence: NONE) · get_code("e07b0c7b9ac66d23") |
| review_clustered_bootstrap_intervals | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/figures/make_paper_figures.py pointer only (licence: NONE) · get_code("a4f47fcd6ecf26a1") |
| zip_text | Not yet run | QingfangLiu/llm-evidence-retrieval-bias/reviews/CD005354/analyze_cd005354_roles.py pointer only (licence: NONE) · get_code("cfff32b3ef1e3c4e") |
Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.
Large language model (LLM) chatbots are increasingly used to answer clinical questions with citations to relevant clinical studies. Prior research has largely focused on citation fabrication, leaving a gap in evaluating the quality of the retrieved studies and the factors driving their selection, particularly for newer models with stronger reasoning capabilities. In this study, we evaluated three recent, general-purpose LLM chatbots: Claude Sonnet 5, Gemini 3.1 Pro, and ChatGPT GPT-5.5. We prompted the models with clinical questions adapted from 20 review questions in Issues 6 and 7 of the 2026 Cochrane Database of Systematic Reviews, simulating patient, clinician, and evidence-synthesis researcher user roles. For each review question, we queried each of the three chatbots under each of the three user roles, with four independent repetitions per chatbot-role combination, yielding 720 responses in total (3 chatbots × 3 user roles × 4 repetitions × 20 review questions). Each chatbot was asked to support its answers with primary clinical citations, which we then benchmarked against the included and excluded study sets of the corresponding Cochrane reviews. On average, a single chatbot response retrieved 39.2% ± 29.8% (mean ± SD across all 720 responses) of Cochrane included studies, while citing 5.0% ± 9.4% of Cochrane excluded studies. Recall of Cochrane included studies varied significantly by model and user role. ChatGPT achieved higher recall than Claude or Gemini (63.1% ± 29.5% vs. 37.0% ± 23.8% vs. 17.3% ± 13.1%; blocked permutation test, p = 2.0 × 10 -5 ). The researcher role yielded higher recall than the clinician or patient roles (42.8% ± 30.8% vs. 38.6% ± 28.9% vs. 36.1% ± 29.3%; p = 2.0 × 10 -5 ). Controlling for publication year, citations per year, and open-access status, sample size was the only independently significant predictor of retrieval (odds ratio 1.80 per 1-unit increase in log sample size, 95% CI 1.37-2.36, p = 2.34 × 10 -5 ). These findings suggest that while LLM chatbots can retrieve some studies identified by expert reviewers, their performance varies by model and user role, and they exhibit a bias toward clinical trials with larger sample sizes. Collected LLM responses and analysis code are available at https://github.com/QingfangLiu/llm-evidence-retrieval-bias.
The same record, over MCP at https://syntology.ai/mcp:
get_harvested_code_for_paper("2608.13786")
get_code_for_paper("2608.13786")
have("2608.13786")
Connect an agent — have() is free.