2022年11月,FDA检查员走进印度古吉拉特邦萨南德的Intas制药工厂,发现质量记录被撕碎扔进了废料堆。这家工厂生产的顺铂和卡铂,供应了美国市场的一半以上。
![]()
Intas随即停止发货。2023年2月,顺铂出现短缺。到6月,NCCN一项调查显示,27家癌症中心里有93%缺卡铂,70%缺顺铂。
卡铂是顺铂断供时的标准替代品。但它也断了,原因一模一样:它们出自同一家工厂。
一个叫Provenance的智能体被做出来,专门在药剂师做替换决定之前查这件事。它要回答的问题很具体:这个替代品,会不会和断供的药共用同一条生产线?
为什么向量搜索会漏掉
拿"顺铂的替代品"去搜药品标签,答案会是卡铂,因为两份标签读起来很像。这对"什么相似"是个好答案,对"下个月货架上还有什么"是个危险答案。
真正要命的事实,没有任何一份文件把它写成一句话。它散在四份公开记录里:DailyMed药品标签列出生产工厂及DUNS编号;FDA企业注册库把DUNS映射到FEI编号和国家;FDA进口警示66-40列出被禁止向美国发货的工厂;openFDA短缺清单说明当下什么药短缺。
把这四份记录连成一张图,问题就变成一个查询模式:这个替代品,是否和断供的药共用工厂。顺铂的查询结果返回卡铂,共享三家工厂,其中就有Intas的FEI 3004011473,2023年6月1日被标记。
还查出一件事先不知道的事:同镇还有第二家Intas工厂也生产顺铂,它有自己的进口警示,时间是2023年11月。
跑出来的数字
在短缺清单覆盖的18种药里,按文本相似度选出的替代品,有14次和短缺药共用生产工厂。其中6次,这个替代品自己也在短缺清单上。
对18种药中的15种,图数据库找到了同类别、且不共用工厂的选项。
但也有诚实到难看的答案:对卡铂、右旋糖和罗库溴铵,同类别里每一个替代品都和短缺药共用工厂。这时候正确的回答是"这个类别里没有独立选项"。
智能体本身也被打了分。脚本对每种短缺药问一个直白问题,再拿答案去核对图数据库。18次回答里,18次没有引用图里不存在的FEI编号或警示日期;17次完整列出了药品背后所有被标记的工厂及其日期,唯一一次漏报是把氯硝西泮的两个日期说成了"2023年"。中位回答时间2.3秒。
踩过的坑
分装商一开始被当成了工厂。标签会把分装商、贴标商和制造商列在一起。第一版统计说94%的相似替代品共用工厂,其中大部分是Bryant Ranch Prepack这类分装商。把关系拆成"制造"和"处理"两类边之后,真实数字是78%。
一家公司有七个厂址。第一版匹配器把Intas的两条进口警示挂到了同一个工厂上,实际是两个厂址、两个日期。匹配器改成按地址词重合度给每个注册厂址打分,取最高分,并加了测试锁住。
DailyMed在第1739个标签处切断了请求。抓取器改成限速、遵守Retry-After、记录每次响应,重跑时从断点继续。
最值得记的一条:模型会从最关键的事实上滑过去。第一次评测抓到GPT-4.1 mini告诉药剂师,呋塞米的工厂没有一家在进口警示下。而两家Intas工厂都生产呋塞米。被标记的工厂就躺在27行列表的中间,模型读过去了。现在被标记的工厂作为独立字段返回,提示词要求逐个带日期列出。更小的GPT-4.1 nano表现更差,它给咪达唑仑的替代品编造了进口警示,直接弃用。
数据说不出来的部分
标签写的是成品药的生产厂,不是原料药的生产厂,而很多短缺恰恰从原料开始。FDA也不公布市场份额,所以"占美国标签比例"严重低估了Intas:公开标签显示它生产19个顺铂产品中的2个,而它实际供应了美国一半以上的顺铂。
还有一点,"同类别"是药理学分组,不等于两种药对某个病人可以互换。这个决定由药剂师做。
整个项目里最有用的那个事实,长在记录与记录的缝隙里。没有任何一份FDA文件写着卡铂和顺铂共用工厂,你只能从标签走到工厂,走到注册库,再走到进口警示,一步步走出来。这正是图数据库擅长的事,也是逐份读文档的向量搜索一直挑中高风险替代品的原因。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.