大家好,我是桃花键神。

上周有条新闻直接吵上热搜:有位医生在诊室里打开 AI 查新药,被患者家属拍下来发到网上。三天不到,全网都在争同一个问题——

「那我以后看病,是不是直接问 AI 就行了?」

这事儿的微妙之处在于,双方谁都不放心谁。患者怕医生拿 AI 的概率输出当处方依据;医生怕患者拿 AI 的科普答案否定自己的临床判断。同一个 AI,两头都信不过。

后来官媒下场定调,原话说得很漂亮:让 AI 做医疗的「外部监督员」,让医生守住诊疗的最终关口。

我看完之后,盯着这句话想了很久,发现它其实还差一问——

既然 AI 可以做医疗的外部监督员,那谁来监督 AI?

想来想去,这事儿只有一个答案:搜索。AI 说的话是真是假、有没有出处,你光盯着它问是问不出来的,必须拿出去查。

所以我写了个工具,叫 RefCheck。它把 AI 说出的每一句医学陈述,逐条拿元宝搜索去查出处,最后给你一份核查报告:哪几句查到了权威来源、哪几句存疑、哪几句压根查无出处。

 Demo地址开源指路:GitHub - yeqv111/refcheck: 医学信息溯源核查器:用元宝搜索验证 AI 说出的每条医学陈述与参考文献是否有出处 | Verify every medical claim an AI makes · GitHub

免责声明:本工具输出仅供参考,不构成任何医疗建议,不鼓励任何人依赖 AI 进行诊疗。身体不适请及时前往正规医疗机构就诊,遵医嘱。

先把丑话说在前面:这个工具不做诊断、不给任何医疗建议,它只干一件事——验证 AI 说的话有没有出处。身体不舒服请去正规医院,听医生的。

一、为什么我会写这个工具

我的情况有点意思:我是写了几年代码的老程序员,护理专业的东西一窍不通。但我女朋友在读护理,这学期她要交病理学实验报告。

报告得引参考文献。她图省事,让 AI 帮着列了一版。我顺手拿过来看,越看越觉得哪儿不对——标题像模像样、期刊名一个比一个专业、年份合理、卷号页码齐全。

格式上,挑不出任何毛病。

但我心里冒出一个念头:这些文献,是真的吗?

于是我手动去查了几条,就当帮她核对。好家伙,有的查得到,有的怎么搜都搜不出来。也就是说,AI 是混着编的——真的假的掺在一起给你,靠肉眼你压根分不出来。

引用一条编造的文献,她这报告直接废掉。搁以前,唯一的办法就是一条条手动搜,20 条文献能查一晚上。。而且查完我也不踏实,因为普通搜索引擎给你的东西,也不一定权威。

我这人有个毛病:看到重复劳动就想写代码。所以干脆做了一个工具,让她以后引用之前先过一遍。

写着写着发现,这压根不只她一个人的事。

热搜里那位医生查的新药信息、普通人半夜拿 AI 问诊得到的回答,跟她那份报告的参考文献是同一个问题:AI 说的话,到底有没有出处?

这不就是「让 AI 查得到,更信得过」这句话该干的活儿么?

二、为什么非用搜索不可

有同学可能会问:你就不能自己判断?或者让 AI 自己检查一遍?

来,我们一个个排除。

让 AI 自查? 它压根不知道自己在编。你问它「这条文献是真的吗」,它会再编一段话来跟你确认,语气比第一次还笃定。

凭格式判断? 编造的文献格式完全合规。期刊名、卷号、页码要啥有啥,格式审查在这里就是个摆设。

本地医学知识库? 指南和文献天天在更新,你的库永远是昨天的。你没法用它去验证「今天网上有没有这篇东西」。

普通搜索引擎? 搜出来一大堆营销号、健康自媒体、AI 农场内容。你拿到 10 个结果,哪个是权威的?分不出来。

那元宝搜索强在哪?

打个比方:普通搜索像是在菜市场大喊一声「谁家有这菜」,什么摊位都应你;元宝搜索像是直接进了质检过的档口——它返回的是结构化数据,每条结果带 url(原始链接)、date(发布时间)、score(相关性打分),一个不少。

更关键的是两个参数:

Industry=acad,直接限定学术信源,把营销号挡在门外;

Site=exclude:xxx.com|yyy.com,把已知的内容农场点名排除。

相当于把「查资料」和「查权威资料」这两件事,直接分开了。

一句话总结:把搜索拿掉,这个工具就不成立。 这就是我选元宝搜索的原因,也是它在这个作品里不可替代的原因。

三、怎么实现的

废话不多说,直接开做。整个链路就五步:

输入医学文本 → 抽取陈述/引用 → 构造查询 → 调元宝搜索 → 三重匹配 → 三档判定 → 输出报告

第一步,抽取。 把参考文献拆成「标题、期刊、年份」三个字段;把 AI 的医学回答拆成一条条事实性陈述——药物名、禁忌、相互作用、监测项目,能验证的才拆,纯客套话不拆。

第二步,构造查询。 这里有个坑:query 不能直接拿整句话去搜。AI 的回答里全是「患者应在医生指导下」「根据临床需要」这种修饰词,带着它们搜,结果会跑偏。所以只取核心实体,比如「缬沙坦 痛风 高尿酸」。

第三步,调元宝搜索。

from tencentcloud.common import credential
from tencentcloud.wsa.v20250508 import wsa_client, models
cred = credential.Credential(SECRET_ID, SECRET_KEY)
client = wsa_client.WsaClient(cred, "")
req = models.SearchProRequest()
req.Query = query
req.Mode = 2          # 混合模式:公开网页 + 权威垂直信源
req.Cnt = 10
req.Industry = "acad" # 限定学术信源
req.Site = "exclude:xxx.com|yyy.com"
pages = client.SearchPro(req).Pages
# 大坑:Pages 是 JSON 字符串数组,每个元素要再解析一次
return [json.loads(p) for p in pages]

腾讯云把签名这些脏活都封在 SDK 里了,用起来挺舒服。但它没帮你把返回结构也封一层——Response.Pages 是个 JSON 字符串数组,不是对象数组。你直接当字典用,拿到的全是字符串,解析出来一片空白,每个元素都得再 json.loads 一次。

这种坑,不真调一遍 API 你压根发现不了。

比这更坑的是参数本身。 我一开始很自然地想:查医学文献,那当然要用学术模式,于是设了 Industry=acad,检索词还把标题、期刊名、年份全拼上去,觉得这样最精确。

结果 20 条文献跑下来,0 条命中。返回的全是 DOI 基金会、Altmetric 这类英文聚合站,一条中文文献都没有。

我以为是标题太长搜不到,就把期刊名和年份去掉,只留标题——还是 0 条。到这一步我才反应过来:不是搜不到,是学术模式把知网、维普这些中文文献源给过滤掉了。

改成不限定领域、只搜标题,重跑——11 条直接命中,标题一字不差。

也就是说,官方文档里那个看起来最"对"的参数,恰恰是这里最不该用的。这种事,你不真跑一遍,永远不会知道。

第四步,三重匹配。 拿到搜索结果后,从三个维度打分:

  • 关键词重合度:标题、实体的相似程度;
  • 来源权威性:域名白名单(药品监管、医学期刊、官方指南)加分;
  • 时效性:date 落在合理区间内才作数。

这里有个真实的限制得说明白:官方结果里本来是带 authority_level(权威度 0~5)这个字段的,但它只有旗舰版才返回。而个人账号的活动免费额度只覆盖极速版和标准版,所以根本上拿不到。权威度这块只能自己建白名单、再看 score——算是拿不到现成分就自己造一个。

第五步,三档判定。 高重合加权威源——「已核实」;有结果但源弱或重合度低——「存疑」;什么都搜不到——「查无出处」。

为什么一定要留「存疑」这一档?因为查不到 ≠ 结论错了,只能说明「暂时没找到支撑」。搞成非黑即白,工具就不可信了。

四、跑出来的数据

真正的重头戏在这。我设计了两个实验。

实验一:AI 参考文献的溯源率。

让通用大模型生成 20 条护理、病理方向的参考文献,然后逐条拿元宝搜索去查。

结果是:11 条可溯源,7 条存疑,2 条查无出处。

说实话,这个结果有点出乎我的意料——我原本以为会查出一堆编的,结果大半都真有其文。但仔细看那 9 条有问题的,问题各不相同:

  • 有 5 条,标题能搜到,但命中的是博禾医生、民福康、有问必答这类内容聚合站。文章确实存在,但没有一手出处,直接引进报告是站不住的。
  • 有 2 条,搜出来的全是主题相近的别的文章,标题一条都对不上。
  • 还有 1 条,命中的是百度百科——内容是真的,但你不可能在论文里引百度百科。

这些不是"AI 全在编",而是"AI 给的东西真假混杂,而你没有工具区分"。 后者其实更麻烦。

至于判定准不准,我老实说:我没有做全量人工标注。 只抽了 5 条「已核实」逐条打开核对——2 条的页面源码里能直接搜到标题原文,另外 3 条是前端渲染的期刊页,得登录或手动打开才能看到全文。所以这个数字只能当参考,不能当结论。

实验二:复刻热搜场景。

这一步我是故意的。我拿热点里那位患者的真实病情去问 AI——「高血压患者,对地平类降压药过敏,尿酸偏高,有哪些替代用药?」

然后把 AI 回答里的每一条事实性陈述拆出来:什么药可用、什么药慎用、要监测什么指标,逐条查出处。

从这份回答里一共抽出 19 条可核查的陈述,结果是:12 条有出处,4 条弱支撑,3 条未找到。

挑两条最典型的给大家看。

第一条,查得到的:

氯沙坦具有明确的促尿酸排泄作用,可使血尿酸水平进一步下降约 7%~15%。

这句在科普中国网和一篇地方政府卫健委的科普文章里都找到了对应内容(官方来源)。这一条,是站得住的。

第二条,查不到的:

应严格避开盘托洛尔、纳多洛尔等会阻碍尿酸经肾脏排泄的药物。

这句话说得很专业,前半句「避开会阻碍尿酸排泄的 β 受体阻滞剂」方向是对的,但「盘托洛尔」这个药名,我在中文资料里查不到。搜下去,搜索引擎只能模糊匹配到 Pindolol——也就是吲哚洛尔。

要么是译名写错了,要么是模型自己拼出来的。不管是哪种,你把这句话原样抄进报告,审稿人一眼就会卡在这儿。

顺带说个工具自己的局限:那句「建议在心内科医生指导下优先尝试氯沙坦」,覆盖率是 0——因为它是建议,不是事实。建议本身没有出处可查。这也是为什么工具只敢叫"溯源",不敢叫"核查对错"。

跑完这两个实验,我最大的感受是:AI 的回答听起来依然专业,格式依然挑不出毛病。但现在,每一句后面都跟着一个可以点开的链接,或者一个明晃晃的「查无出处」标记。

它还是那个它,但你第一次有了核对的可能。

五、实际效果与诚实的局限

按活动要求标注:本作品当前阶段——已用于日常生活。

上面那 20 条,就是她这份病理学实验报告准备引用的清单——七个方向,从慢性肉芽肿性炎到糖尿病血管病变。全过了一遍,其中 9 条我建议她换掉或者再核一遍:聚合站来源的 5 条去期刊官网重找,查无出处的 2 条直接删,百科那条换成原始文件。

这里得说句实话:我压根不懂医学。

正因为不懂,这个工具才只敢做一件事——查出处,不判断对错。某条用药建议在医学上站不站得住,得医生说了算;但这句话背后有没有文献、有没有指南、是哪一年发布的,机器查得比人快,而且不会累。

局限也得老实交代:

  • 匹配靠关键词重合度,表述差异大的陈述可能漏判;
  • 「存疑」不等于结论错误,只是没找到强支撑;
  • 判定准确率依赖搜索结果质量,冷门文献覆盖会差一些。

工具是给结论上保险的,不是替你做决定的。

六、文档里不会写的六个坑

工具跑通之前,我踩的坑比写的代码还多。挑几个有代表性的记下来,省得后来人再走一遍。

坑一:Mode=1 这个参数,别碰。

文档里写着「1 = 优质权威垂直信源结果」,看着特别适合查文献对吧?我设了,返回 0 条。换个更短的词,还是 0 条。而返回 0 条,额度照扣。

坑二:Industry=acad 会误伤中文文献。

前面提过,但值得再说一句——它不是"更精准",而是把知网、维普整个过滤掉了。查中文医学文献,反而不该限领域。

坑三:score 不是百分比,别拿它卡阈值。

官方文档写「取值 0~1,越靠近 1 越相关」。实测同一个 query 两次调用,一次 0.777,一次 3.832。

3.832 是怎么从 0~1 的区间里长出来的?我也不知道。所以后来我干脆不用它做判定了,只拿来排序。

坑四:返回 10 条 ≠ 找到了。

第四节那两条「查无出处」就是这么来的。搜索引擎永远会给你 10 条,哪怕你要的东西根本不存在——它给的是「主题相近」的别的文章。

我甚至专门编过一条完全不存在的文献,格式挑不出半点毛病。丢进去,照样 10 条,一条不少。

所以「有没有结果」根本不是判据,「对不对得上」才是。

坑五:百度百科能给你 100% 匹配。

查「中国高血压防治指南(2024年修订版)」,百度百科那条命中率 100%——内容确实是真的。

但你能在报告里引百度百科吗?

所以我把它和内容农场单独列成一档,永远不给「已核实」。这一改,判定才敢用。

坑六:实体太少,覆盖率会虚高。

一句「用药期间监测血钾和肾功能」,只抽出两个实体。任何一篇同时提到这俩词的文章,覆盖率都是 100%——但这不代表它支持这句结论。

现在单实体的句子最多判「弱支撑」。宁可保守,也不能给你一个假的「已核实」。

这六个坑,没有一个写在文档里。 全是一条条请求打出来、一次次结果对出来的。

这大概就是「接入实践」这四个字的意思吧。

最后哔哔

回到开头那个问题:既然 AI 可以做医疗的外部监督员,那谁来监督 AI?

写完这个工具,我的答案是:搜索可以。

顺带说一句,别把这事理解成「AI 不靠谱」。同一条热搜里还有个真事:有位患者腹痛查不出病因,家属拿 AI 一问,提示高度疑似肺栓塞,做了增强 CT,确诊属实——AI 是真的救过人的。

问题从来不是「要不要用 AI」,而是它说的话,能不能被验证。能用、敢用、还查得出出处,这三件事凑齐,才谈得上「信得过」。

开源指路:GitHub - yeqv111/refcheck: 医学信息溯源核查器:用元宝搜索验证 AI 说出的每条医学陈述与参考文献是否有出处 | Verify every medical claim an AI makes · GitHub

免责声明:本工具输出仅供参考,不构成任何医疗建议,不鼓励任何人依赖 AI 进行诊疗。身体不适请及时前往正规医疗机构就诊,遵医嘱。

我是桃花键神,觉得有用的话记得点赞收藏和关注~

评论区聊聊:你让 AI 给你写的东西,敢直接用吗?

Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐