引言
在人工智能飞速发展的今天,像 GPT-4 和 Llama 这样的大语言模型 (LLMs) 已是家喻户晓。我们通常将它们视为生成引擎——能够创作诗歌、代码或邮件的工具。然而,在医学等专业领域,生成文本只是战斗的一半。另一半——也许是对准确性更为关键的一半——是检索 。
想象一下,一位医生需要查找关于某种新药罕见副作用的具体案例研究,或者一位研究人员需要在数百万篇论文中筛选以找到特定的蛋白质相互作用。他们不仅仅需要一个 LLM 来产生某种“幻觉”般的答案;他们需要一个系统来挖掘海量的医学文献,并从中检索出那根确切的“真相之针”。这就是检索增强生成 (RAG) 的基础。
然而,通用检索器通常难以应对术语密集、晦涩难懂的生物医学世界。另一方面,专门的生物医学模型往往规模太小,或者是在公众无法访问的私有数据上训练的。
BMRetriever 应运而生。
在最近的一篇论文中,来自埃默里大学、佐治亚理工学院和加州大学洛杉矶分校的研究人员介绍了 BMRetriever,这是一个专为生物医学领域设计的新型稠密检索器系列。这项工作的突出之处在于其效率。如下方的性能图表所示,其最小版本的模型 (4.1 亿参数) 性能优于大其 10 倍以上的通用模型。

在这篇文章中,我们将拆解 BMRetriever 的架构,以此了解作者是如何利用开源数据和巧妙的合成指令微调,成功地将 LLM 转变为最先进的生物医学搜索引擎的。
背景: 生物医学检索的挑战
在深入探讨解决方案之前,我们需要先了解问题所在。文本检索通常依赖于稠密检索 (Dense Retrieval) 。
在稠密检索中,模型将查询 (例如,“心脏骤停的症状”) 和文档 (例如,医学论文摘要) 转换为称为嵌入 (embeddings) 的数值向量。如果模型足够好,查询的向量和相关文档的向量在数学空间中会非常接近。
查询 (\(q\)) 和段落 (\(p\)) 之间的相似度得分通常使用其嵌入 (\(e_q\) 和 \(e_p\)) 的点积来计算:

现有模型的差距
现有的模型主要分为两类,对于这项任务来说都不完美:
- 基于 BERT 的模型: 这些模型专门针对医学领域 (如 BioBERT) ,但受限于较小的规模和较旧的架构。
- 基于通用 LLM 的检索器: 这些模型巨大且强大 (如 GTR 或 SGPT) ,但缺乏特定的医学领域知识。它们受困于“分布偏移”——它们擅长检索维基百科文章,但在面对临床试验报告时却步履维艰。
BMRetriever 的目标是结合两者的优点: 现代 LLM 的强大能力和生物医学训练的专业性。
核心方法: 两阶段框架
作者开发 BMRetriever 时,使用了 decoder-only Transformer 模型家族 (如 Pythia, Gemma 和 BioMistral) 作为骨干。他们将这些模型的规模从 4.1 亿参数扩展到了 70 亿参数。

为了将这些生成模型转变为高效的检索器,他们采用了一个两阶段训练框架 。

让我们详细拆解这两个阶段。
第一阶段: 无监督对比预训练
第一步是教模型掌握生物医学的“语言”。研究人员收集了海量的未标记生物医学文本数据集,包括:
- 生物医学出版物 (PubMed, bioRxiv)
- 医学教科书
- 临床试验
- 通用网络语料库
由于这些数据是未标记的 (没有人工标记的“正确答案”) ,团队使用了对比学习 (Contrastive Learning) 。 他们从原始文本中创建数据对。例如,他们可能会将论文标题作为“查询”,将摘要作为“段落”。
模型被训练去识别标题及其摘要是属于同一对的 (正例对) ,而同一批次中的其他随机摘要是不相关的 (负例对) 。
训练目标使用 InfoNCE 损失函数 。 这个数学公式强制模型最大化正例对的相似度得分,同时最小化批次内负例的得分。

通过处理数百万个这样的配对,模型无需人工手动标记即可学习医学术语之间的语义关系。
第二阶段: 指令微调
预训练赋予了模型领域知识,但并没有教模型如何根据用户意图进行搜索。用户可能会提出问题、查找定义或试图验证事实。这就需要指令微调 (Instruction Fine-tuning) 。
研究人员收集了以下任务的公共数据集:
- 医学问答 (QA)
- 事实验证
- 实体链接 (例如,将药物名称与其描述相匹配)
然而,公共生物医学数据集相对较小,且无法覆盖所有可能的检索场景。为了解决这个问题,作者使用了一个聪明的技术: 合成数据增强 (Synthetic Data Augmentation) 。
利用 GPT-4 生成合成数据
他们使用先进的 LLM (GPT-3.5 和 GPT-4) 生成新的训练数据。这通过两种方式实现:
- 实例级增强: 给 LLM 一段医学段落,让它为此编写一个相关的查询。
- 任务级增强: 让 GPT-4 头脑风暴全新的检索任务类型,然后为这些任务生成示例。
用于生成的提示词 (prompts) 旨在创建多样化和具有挑战性的场景,确保模型不仅仅是学习简单的关键词匹配。

难负例挖掘 (Hard Negative Mining)
在这个阶段,简单地将查询与随机文档进行比较是不够难的。模型需要学会区分正确答案和看似合理但错误的答案。
为此,他们挖掘了难负例 (Hard Negatives) 。 他们使用现有的检索器查找查询的排名靠前的结果,并选择那些看起来与查询非常相似但实际上错误的答案。微调损失函数被更新,专门惩罚模型将这些难负例排名过高的行为。

这种严格的训练机制确保 BMRetriever 不仅仅是根据共同的单词进行“猜测”,而是真正理解区分正确诊断与相似但不正确诊断所需的医学细微差别。
实验与结果
团队在 11 个生物医学数据集上的 5 项任务中评估了 BMRetriever,涵盖了从标准信息检索到句子相似度和论文推荐的所有内容。
性能 vs. 基线模型
结果令人信服。如下表所示,BMRetriever 模型始终优于或匹配比其大得多的基线模型。
- 小而强大: 4.1 亿 (410M) 参数版本的 BMRetriever 优于 48 亿 (4.8B) 参数的 GTR 模型和 27 亿 (2.7B) 参数的 SGPT 模型。
- 规模效率: 10 亿 (1B) 变体仅使用 14% 的参数就达到了巨大的 70 亿 (7B) 参数 E5-Mistral 模型 98% 的性能。

为什么它效果更好?
要理解为什么该模型效果这么好,我们可以看看模型的“分离”能力。一个好的检索器应该给正例对 (正确匹配) 分配非常高的相似度得分,给负例对分配非常低的得分。
下面的密度图显示了这种分离。绿色曲线 (BMRetriever) 显示,与其他模型 (如 MedCPT) 相比,它在处理负例 (左图) 和正例 (右图) 时有更清晰的区分。

合成数据的力量
论文中最有趣的发现之一是合成数据的影响。研究人员进行了消融研究 (移除部分训练数据) ,以查看最重要的因素是什么。
结果显示, 合成数据贡献了最显著的性能提升 。 这表明在标记数据稀缺的专业领域,使用 LLM 生成训练数据是一种高效的策略。

消融研究还证实,管道的每个部分——预训练、微调和指令——都是必要的。移除预训练阶段 (下图 4b 中的蓝线) 会显著损害较小模型的性能,尽管较大模型 (7B) 具有更强的适应力,这可能是因为它们在原始训练中已经具备了一些医学知识。

数据效率
最后,研究人员强调了他们方法的数据效率。即使仅使用 10% 的预训练和微调数据,BMRetriever-1B 的表现也优于许多使用完整数据集的基线模型。

结论与启示
BMRetriever 论文展示了我们处理专业 AI 应用方式的一个关键转变。它证明了我们不一定需要数千亿参数的模型才能在医学等复杂领域取得最先进的结果。
通过精心结合在开放语料库上的无监督预训练和在高质量合成数据上的指令微调 , 作者创建了一个既高度准确又计算高效的模型。
主要收获:
- 参数效率: 领域特定的调优允许较小的模型 (410M) 击败通用巨头 (4.8B+) 。
- 合成数据是关键: 当人工标记数据稀缺时,LLM 生成的数据可以有效地弥补差距。
- 开放科学: 作者使用了公共数据并发布了他们的模型,这为其他领域 (如法律或工程) 提供了一个可复现的蓝图。
对于学生和研究人员来说,BMRetriever 是一个关于“智能扩展”的案例研究——优化数据和训练课程往往比简单地增加模型规模更有价值。随着我们向前发展,这些专业、高效的检索器将成为医疗保健领域可靠 AI 系统的支柱。
](https://deep-paper.org/en/paper/2404.18443/images/cover.png)