Biomedical knowledge graph-enhanced prompt generation for large language models

news2024/11/6 9:33:01
1. 生物医学知识图谱增强大语言模型提示生成

论文地址:[2311.17330] Biomedical knowledge graph-enhanced prompt generation for large language models (arxiv.org)

源码地址:https://github.com/BaranziniLab/KG_RAG 

2. 摘要

大语言模型(LLM)一直在以前所未有的速度推动人工智能的进步,但在生物医学等知识密集型领

域仍然面临挑战。预训练和特定领域微调等解决方案增加了大量的计算开销,后者也需要领域专业

知识。外部知识注入是特定于任务的,需要模型训练。在这里,我们引入了一种与任务无关的基于

知识图谱的检索增强生成(KG-RAG)框架,通过利用 Llama-2-13b、GPT-3.5-Turbo 和 GPT-4

等大语言模型和大规模生物医学知识图谱 SPOKE 来生成植根于既定知识的有意义的生物医学文

本。 KG-RAG 持续增强了 LLM 在各种提示类型上的表现,包括一跳和两跳提示、药物再利用查

询、生物医学真/假问题和多项选择题 (MCQ)。值得注意的是,KG-RAG 在具有挑战性的 MCQ 数

据集上使 Llama-2 模型的性能显着提升了 71%,证明了该框架能够以更少的参数为特定领域的问

题赋能开源模型。此外,KG-RAG 还增强了专有 GPT 模型的性能,例如 GPT-3.5,它在 MCQ 数

据的上下文利用率方面比 GPT-4 有所改进。我们的方法还能够解决药物再利用问题,返回有意义

的再利用建议。总之,所提出的框架以优化的方式分别结合了KG和LLM的显性和隐性知识,从而

增强了通用LLM在统一框架中解决特定领域问题的适应性。

3. 简介

大语言模型 (LLM) 在解决涉及语言建模和处理各个领域的复杂任务方面表现出了令人印象深刻的

性能 [1]。 LLM 在自监督学习框架中对大量文本数据进行预训练,该框架可以是掩码语言建模(例

如 BERT 等模型 [2,3])或自回归框架(GPT 等模型 [4,5])。这种预训练将有关语言的知识编码到

模型参数中。与深度神经网络中常用的迁移学习方法类似,这种隐性知识可以通过监督训练进行细

化,以在一系列特定领域的任务中表现出色[5,6]。尽管如此,作为对输入提示的响应[7-9],给出的

答案在语言上是连贯的(即:“幻觉”),但LLM中知识的“隐式表示”也被证明会产生非事实信息。

这个问题对在生物医学等精度要求严格的领域具有重大挑战。

人们引入了各种策略来解决LLM的幻觉。其中一种解决方案涉及利用特定领域的数据来预训练

LLM,而不是依赖通用文本语料库。这种方法产生了PubMedBERT[10]、BioBERT[11]、

BlueBERT[11,12]、SciBERT[13]、ClinicalBERT[14]、BioGPT[5]、Med-PaLM[15]等模型的创建,

和BioMedGPT[16]。然而,考虑到当前LLM实现类人性能所需的巨大计算成本和时间,这种从头开

始对LLM进行预训练是不切实际的。提出了一种称为提示调整的替代方法,作为增强 LLM 性能的

方法,例如通过使用零样本[17]、少样本[4] 和思想链[18] 提示策略。

尽管提示调整方法已被证明是有效的,但其性能仅限于知识密集型任务,这些任务需要提供有关世

界的最新知识来解决用户提示问题。为了解决此类知识密集型任务,提出了一种将KG与LLM相结

合的替代方法[19-25]。这种方法主要在问答任务中实现,其中知识图谱中包含的结构化信息用于提

供预测问题答案的上下文。虽然这种多模式综合方法显示出希望,但其下游监督培训是针对特定任

务量身定制的,限制了其多功能性和广泛适用性,从而限制了其充分利用LLM“新兴能力”[26]。为

了增强LLM的情境意识,最近引入了一种称为检索增强生成(RAG)的方法[27]。该方法涉及增强

参数预训练的LLM,使其能够访问包含有关世界的新知识的非参数存储器(例如维基百科)[27]。

在本文中,我们提出了一种将 KG 与 RAG 框架内预先训练的 LLM 相结合的方法,从而实现两全​​

其美。为了实现这一目标,我们利用了一种称为可扩展精准医学开放知识引擎(SPOKE)的生物

医学知识图谱[28]。

SPOKE 集成了 40 多个不同领域的公开生物医学知识源,其中每个源都围绕一个生物医学概念,

例如基因、蛋白质、药物、化合物、疾病以及它们的一种或多种已知关系。因为这些概念是形成定

义集的循环实体(例如,所有命名的人类基因、所有 FDA 批准的药物等),所以将这些概念集成

到单个图中揭示了连接知识源并提供生物学和本体论的新颖的多跳事实关系和每个概念的上下文。

我们提出的框架巧妙地检索了生物医学来自 SPOKE 的上下文,优化其提取以充分满足提示,从而

创建我们所说的“提示感知上下文”。这种丰富的提示进一步用作 RAG 框架中 LLM 的输入,以生成

有意义的生物医学文本。我们使用各种预训练的 LLM(包括 Llama-2-13b、GPT-3.5-Turbo 和 GP

T-4)评估了这种方法。通过改变LLM的系统提示,我们能够利用相同的框架来执行各种生物医学

任务,例如真/假和多项选择回答、药物重新利用建议以及解决与疾病相关的一般生物医学查询。

这种适应性凸显了我们的方法与任务无关的本质。进一步进行了系统的比较分析,以评估 Llama-

2-13b、GPT-3.5-Turbo 和 GPT-4 在此框架内的性能。因此,我们的方法展示了处理各种特定领域

生物医学任务的能力,而无需对通用LLM进行额外的预训练或微调。这种方法不仅简化了流程,而

且具有成本效益和时间效率。

4. 框架

我们开发了一个框架,为大语言模型构建准确且值得信赖的生物医学提示。该 KG-RAG 框架涉及

根据用户提示进行实体识别、从 KG 中提取生物医学概念、提示感知上下文生成、转换为自然语

言、提示组装和答案检索。使用不同的场景对该方法的性能进行了广泛的测试。

图 1 显示了使用两种方法作为 GPT-4 模型输入的一跳提示(图 1A 黄色框)和两跳提示(图 1B 黄

色框):(i)基于提示,即没有 KGRAG(蓝色框)和 (ii) 有 KG-RAG(绿色框)。我们观察到,

只有 KG-RAG 能够解决该问题,并为一跳(图 1A 黄色框)和两跳提示(图 1B 黄色框)提供了简

短而直接的答案。 

基于知识图谱的检索增强生成 (KGRAG) 框架的架构。箭头方向表示该框架中管道的流向。

疾病实体识别这是KG-RAG的第一步。这一步的目标是从输入的文本提示中提取疾病概念(一个实

体),然后在KG中找到对应的匹配疾病节点(一个SPOKE概念)。这是通过两步过程实现的:i)

从提示中提取实体,ii) 与 SPOKE 进行实体匹配。实体提取识别并提取输入文本提示中提到的疾病

实体,也称为“提示疾病提取”。为了实现这一目标,在 GPT-3.5-Turbo 模型上使用了零样本提示

[17] 方法。具体来说,系统提示被设计为从输入文本中提取疾病实体并以 JSON 格式返回它们。

接下来,使用实体匹配来获取 KG 中表示的疾病的概念名称。为此,SPOKE 中所有疾病概念(即

节点)的嵌入均使用“all-MiniLM-L6-v2”句子转换器模型[46]。该过程将疾病概念的名称转换为 384

维密集向量空间,使其适合语义搜索。接下来,这些新创建的疾病概念嵌入被存储在“Chroma”向

量数据库中[47]。选择与提取的实体具有最高向量相似度的疾病概念用于后续上下文检索。如果零

样本方法无法识别提示中的疾病实体,则会从向量数据库中选择与整个输入文本提示具有最显着向

量相似性的五个疾病概念。

虚线框显示了知识图中“疾病实体识别”和“提示感知上下文提取”的详细信息 。

首先,使用转换器模型(使用超参数调整完成模型选择)将输入提示和所有提取的上下文关联嵌入

到同一向量空间(上图中的上下文潜在空间)。接下来,仅选择与输入提示向​​量具有最高余弦相似

度的上下文关联(上图)。对于上下文选择,提示上下文余弦相似度应该满足两个条件:(i) 大于

包含与所选疾病节点相关的所有上下文的相似性分布的 75%,以及 (ii) 具有 0.5 的最小相似性值。

5. 超参数分析

优化了“上下文体积”和“上下文嵌入模型”等两个超参数。

上下文量定义了允许从 KG 流向 LLM 的图形连接数量的上限。上下文嵌入模型是一种在从 KG 检

索准确的生物医学背景以响应输入提示方面表现出更高相关度的方法。为了优化这些超参数,我们

使用了两种上下文嵌入模型(基于 MiniLM 和 PubMedBert 的模型),并且上下文体积的大小不断

增加(图 2A)。对于一跳提示,在所有上下文卷设置中,基于 PubMedBert 的模型的平均性能

(Jaccard 相似度)比 MiniLM 模型高出约 10%(PubMedBert 的平均性能 = 0.67,MiniLM 的平

均性能 = 0.61)。对于两跳提示,在所有上下文设置中,PubMedBert 的性能比 MiniLM 高出

8.1%(PubMedBert 模型的平均性能 = 0.4,MiniLM 的性能 = 0.37)。

就上下文量而言,图 2A 显示单跳提示的性能曲线趋于稳定,并且双跳提示的性能曲线呈现趋于稳

定的趋势(对于两种模型)。

基于这些发现,我们选择基于 PubMedBert 的模型作为上下文嵌入模型,并将上下文量设置为

100-200 之间的值(对于大多数下游任务,我们选择上下文量为 150,对于 True/False 问题,我

们选择选择上下文体积 100)。

图 2. 超参数分析和药物再利用性能 (A) 使用一跳(上)和两跳(下)提示的超参数分析性能曲

线。 x 轴表示“上下文量”(来自 KG 的关联数量),y 轴表示提示中的平均表现(杰卡德相似

度)。红色曲线表示“S-PubMedBert-MSMARCO”,蓝色曲线表示“all-MiniLM-L6-v2”上下文嵌入模

型。 (B) LLM在药物再利用问题上的平均表现(杰卡德相似度)(上)。误差条表示 95% CI。底

部面板显示了关于 COVID-19 的药物再利用提示示例(黄色框)以及使用 KG-RAG 框架的 GPT-4

模型的相应响应(绿色框)。注意:由于空间限制,绿色框中的响应被截断。 

在本研究中,控制 LLM 输出随机性水平的“温度”参数 [4] 对于所有 LLM 均设置为 0。

6. 药物再利用

图 2B 显示了三种 LLM 模型(Llama-2-13b、GPT-3.5-Turbo 和 GPT-4)的药物再利用性能分析。

我们观察到性能指标持续增长(Jaccard 相似度)从 Llama-2-13b 到 GPT4,有趣的是这个顺序与

这些模型的参数大小的顺序一致(图 2B,表 1)。 KG-RAG 框架能够从 SPOKE 提供必要的背景

信息,以回答与 COVID-19 相关的药物再利用问题(图 2B 下图黄色和绿色框)。除了提供可行的

再利用建议外,它还对临床试验评估这些建议有效性的必要性发出了谨慎的警告。这表明一种负责

任且具有安全意识的文本生成方法(图 2B 下图绿色框)。

表 1. 使用 KG-RAG 框架在药物再利用提示上的模型性能(Jaccard 与 KG 的基本事实相似度)

7. True/False 和 MCQ 

为了评估LLM在 True/False 和 MCQ 数据集上的表现,我们随机抽取了 150 个问题并替换了

1000 次(使用 bootstrapping)。然后计算每次采样迭代的准确度指标,从而得出性能分布。在药

物再利用数据集的情况下,杰卡德相似度被用作性能指标。

图 3 显示了三个 LLM 在 True/False(图 3A)和 MCQ(图 3B)数据集上使用基于提示和 KG-

RAG 框架的性能(准确性)的引导分布。 

表 2 总结了三个LLM在这些数据集上的表现。我们观察到 KG-RAG 框架下的 LLM 模型在

True/False 和 MCQ 数据集上都有一致的性能增强(表 2)。KG-RAG 在更多方面将 Llama-2 的

性能从初始水平(0.31±0.03 至 0.53±0.03)显着提高了约 71%,具有挑战性的 MCQ 数据集(表

2)。有趣的是,我们还观察到,在不基于提示的方法中,与使用 KG-RAG 框架的 MCQ 数据集上

的 GPT-3.5-Turbo 模型 (0.79±0.02) 相比,GPT-4 模型 (0.74±0.03) 的性能有小幅下降(T 检验,p

-value < 0.0001,t-statistic = -47.7,N = 1000)。

图 3. True/False 和 MCQ 数据集上的 LLM 表现 LLM 在 (A) True/False 和 (B) MCQ 数据集上的表

现(准确度)分布。蓝色分布表示使用基于提示的方法的性能,红色分布表示使用基于 KG-RAG

的方法的性能。黑色垂直虚线表示分布的平均值。 

表 2. True/False 和 MCQ 数据集上的 LLM 表现(准确度:平均值±标准差)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1505619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL--索引优化实战篇(1)

前言&#xff1a; 我们常说的SQL优化&#xff0c;简单来说就是索引优化&#xff0c;通过合理创建索引&#xff0c;调整SQL语法等&#xff0c;来提升查询效率&#xff0c;想要进行SQL优化&#xff0c;就必须知道索引的原理&#xff0c;而且能够看懂SQL的执行计划。 MySQL–索引…

基于springboot的校园二手交易平台(程序+数据库+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

STM32OLED调试工具

OLED介绍 4个引脚的oled &#xff1a; GND引脚接地&#xff0c;VCC接3.3v的电源 SCL与SDA是I2C通信的引脚 使用OLED显示屏驱动函数模块 接线图 将oled函数调试的代码引入到工程项目中 oled工程代码 OLED.C文件代码 #include "stm32f10x.h" #include "OLED_Font…

论文笔记 Where Would I Go Next? Large Language Models as Human Mobility Predictor

arxiv 2023 08的论文 1 intro 1.1 人类流动性的独特性 人类流动性的独特特性在于其固有的规律性、随机性以及复杂的时空依赖性 ——>准确预测人们的行踪变得困难近期的研究利用深度学习模型的时空建模能力实现了更好的预测性能 但准确性仍然不足&#xff0c;且产生的结果…

【Python数据结构与判断1/7】复杂的多向选择

目录 导入 举个栗子 代码优化 elif 栗子 执行顺序 情况一 情况二 情况三 if-elif-else特性 三种判断语句小结 if if-else if-elif-else 嵌套语句 if嵌套 栗子 执行顺序 相互嵌套 Tips Debug 总结 导入 在前面&#xff0c;我们学习了单向选择的if语句和多项…

超越α!PixArt家族新秀PixArt-Σ: 由弱到强训练的文本生成4K图像DiT(华为诺亚)

文章链接&#xff1a; https://arxiv.org/pdf/2403.04692 开源地址&#xff1a;https://pixart-alpha.github.io/PixArt-sigma-project/ PixArt-Σ&#xff0c;这是一个能够直接生成4K分辨率图像的Diffusion Transformer&#xff08;DiT&#xff09;。PixArt-Σ相比其前身PixAr…

【unity实战】3D水系统,游泳,潜水,钓鱼功能实现

最终效果 文章目录 最终效果素材将项目升级为URP画一个水潭地形材质升级为URP创建水调节水第一人称人物移动控制游泳水面停留添加水下后处理水下呼吸钓鱼参考完结 素材 https://assetstore.unity.com/packages/vfx/shaders/urp-stylized-water-shader-proto-series-187485 将…

06 数据结构之树

引言&#xff1a; 数的代码实现&#xff0c; 先序遍历、中序、后序、层次遍历 /* binary_tree.h */ #ifndef _BINARY_TREE_H #define _BINARY_TREE_H#include <stdio.h> #include <stdlib.h> #include <string.h>#define DEBUG(msg) \printf("--%s--, %…

【工作】如何写好一份工作自评/总结 述职报告

文章目录 一、述职与工作汇报1、述职是什么&#xff1f;2、述职的目标&#xff08;表扬/体谅/资源&#xff09;3、述职的对象&#xff08;挑战/规划/方法&#xff09; 二、如何做好一份述职报告1、述职内容2、述职PPT制作3、述职试讲练习 三、附工作自评 一、述职与工作汇报 1…

18个惊艳的可视化大屏(第21辑):环境监测与污染治理

hello&#xff0c;我是贝格前端工场老司机&#xff0c;这是第21期了&#xff0c;本次分享环境监测与污染治理场景下&#xff0c;可视化大屏的意义和案例&#xff0c;喜欢文章的别忘点赞关注&#xff0c;文章底部也有其他行业的案例。 可视化大屏在环境监测污染治理中发挥着重要…

【C++】list模拟实现list迭代器失效问题

list模拟实现&list迭代器失效问题 一&#xff0c;list模拟实现1. list的主要框架接口模拟2. list构造&拷贝构造&析构3. list迭代器3.1 普通迭代器3.2 const迭代器 4. 增删查改 二&#xff0c;迭代器失效问题1. list的迭代器失效原因2. 解决办法 一&#xff0c;list…

【动态规划】【前缀和】【和式变换】100216. K 个不相交子数组的最大能量值

本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode 100216. K 个不相交子数组的最大能量值 给你一个长度为 n 下标从 0 开始的整数数组 nums 和一个 正奇数 整数 k 。 x 个子数组的能量值定义为 stren…

九州金榜|孩子厌学的因素及解决办法

孩子在学习的过程中&#xff0c;遇到厌学这种情况非常容易见到&#xff0c;这也是孩子在成长的过程中经常遇到的烦恼。面对孩子的厌学&#xff0c;作为家长这时候不要慌乱&#xff0c;要做到分析孩子产生厌学的原因&#xff0c;在去寻找解决孩子厌学的办法。下面九州金榜家庭教…

C++单例模式、工厂模式

一、单例模式 (一) 什么是单例模式 1. 是什么&#xff1f; 在系统的整个生命周期内&#xff0c;一个类只允许存在一个实例。 2. 为什么&#xff1f; 两个原因&#xff1a; 节省资源。方便控制&#xff0c;在操作公共资源的场景时&#xff0c;避免了多个对象引起的复杂操作…

【Python】成功解决ModuleNotFoundError: No module named ‘seaborn’

【Python】成功解决ModuleNotFoundError: No module named ‘seaborn’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; …

win11家庭版docker和milvus

docker 1、官网下载docker文件Get Started | Docker&#xff0c;选择download for windows下载。 2、双击打开下载好的文件Docker Desktop Installer.exe&#xff0c;add shortcut to desktop选择√代表同意添加快捷键到桌面&#xff0c;如果不勾选就说明不创建快捷键&#x…

软件报错提示缺少D3DCompiler_47.dll文件怎么解决

许多用户在运行游戏或电脑软件时&#xff0c;遇到了一个提示“找不到d3dcompiler_47.dll”的错误消息。这个问题相当普遍&#xff0c;这个错误通常是由于系统中缺少关键的d3dcompiler_47.dll文件所导致的&#xff0c;而这个文件是很多应用程序运行的必要条件&#xff0c;特别是…

浮点数的前世今生

文章目录 浮点数问题浮点数赋值和打印不同0.1累加100次&#xff0c;得到的不是10 计算机如何存储整数计算机如何存储浮点数二进制小数表示法浮点数表示小数和浮点数的转换十进制小数转换成浮点数二进制float二进制转换成十进制小数 问题解决方法参考资料 浮点数问题 浮点数赋值…

《深度学习风暴:掀起智能革命的浪潮》

在当今信息时代,深度学习已经成为科技领域的一股强大力量,其应用领域涵盖了从医疗到金融再到智能交互等方方面面。随着技术的不断进步和应用的不断拓展,深度学习的发展势头愈发迅猛,掀起了一股智能革命的浪潮。本文将从基本原理、应用实例、挑战与未来发展方向、与机器学习…

makedowm文本居中、首行缩进、回车换行

文章目录 1. 居中2. 首行缩进3. 回车换行3.1 段落中<br />换行3.2 句子中 \Enter 换行3.3 句子中 空格Enter 换行 1. 居中 由于Markdown本身不支持字体居中&#xff0c;所以采取HTML语法。如下&#xff1a; <center>这一行需要居中</center>注意: <cent…