中文标题:基于图检索增强技术构建安全的医疗大语言模型
英文标题:Medical Graph RAG: Towards Safe Medical Large Language Model via Graph Retrieval-Augmented Generation
发布平台:ACL
发布日期:2024-10-15
引用量(非实时):42
DOI:10.48550/arXiv.2408.04187
作者:Junde Wu, Jiayuan Zhu, Yunli Qi, Jingkun Chen, Min Xu, Filippo Menolascina, Vicente Grau
文章类型:journalArticle
品读时间:2026-02-28 17:36
1 文章萃取
1.1 核心观点
MedGraphRAG ,一种专为医疗领域设计的图检索增框架;该框架借助不同来源和性质的数据,建立了三元组图结构和多层级标签体系,来确保医疗知识的严谨性和可靠性;在检索阶段,MedGraphRAG 结合了自顶向下的精确检索和自底向上的响应优化,以平衡全局感知和索引的精度
在实验阶段,MedGraphRAG 在所有基准测试中均优于现有最佳模型,尤其是在引用准确性、引用全面性和可理解性这三个维度;同时确保 LLM 的输出响应中包含可靠的来源文档和定义
1.2 综合评价
通过索引方式的改进,发挥出数据增强的更大潜力 巧妙借助医疗文本的结构性特点,来进行社区发现 对底层专业体系标准依赖性较高,不便于推广落地
1.3 主观评分:⭐⭐⭐⭐
2 精读笔记
前置知识:GraphRAG
2.1 算法框架
MedGraphRAG 框架:

步骤 1:语义文档分块(Doc chunking):
- 先利用换行符对文档进行段落层面的区分;再借助 LLM 按照顺序对段落的主题进行依次识别,并划分到相应的主题数据块(主题缺失或数据块已满时,则自动新建数据块)
- 通过综合考虑字符分割和语义主题来实现更合理的文档分块
步骤 2:实体抽取(Entities Extraction)
- 用 LLM 将每个数据块中的所有实体进行识别,输出为标准的 JSON 格式
- JSON 中的每个实体都会包含实体名称(Name)、实体类型(Type)和实体相关的上下文描述(Context),其中实体类型主要参考自英文医疗知识图谱 UMLS
步骤 3:三元组图构建(Triple Linking)
- 采用三层结果来存储图(1)上层为前两步抽取到实体关系图,每个实体还包括类型与上下文描述(2)中间层,基于医学论文/专业书籍进行实体抽取得到的图,方法同上(3)底层为 UMLS,其中包含全面而定义明确的医学词汇及其关系(4)最后根据内容嵌入的余弦相似度,在层级之间建立链接
- 三层结构所组成的三元组图,将分别对应 RAG 内容(上层),依据(中间层)和定义(底层)三种类型的信息;通过将医疗文档与权威的专业定义进行关联,确保三元组图的专业性和可靠性
步骤 4:实体关系链接(Relationship Linking)
- 三元组图的链接只能表示两个实体之间存在相关性;因此需要再次借助 LLM 对每个数据块中的实体关系进行解析,并通过“源实体 - 关系类型 - 目标实体”的格式来进行关系描述
- 最终每个数据块都会生成一个有向图,也被称为 Meta-MedGraphs,简称 $G_{m}$
步骤 5:图的标签添加(Tag the Graphs)
- 为每个子图添加标签与标签摘要,来实现子图的动态聚类和标签合并
- 通过标签的动态合并过程来建立层级标签体系,从而提高最终的检索效率
步骤 6:U 式高效检索策略(U-Retrieval)
- U-Retrieval 先进行自顶向下的检索,然后将检索到的信息实现自下而上的响应
- 该方法便于 LLM 收集图中所有相关的信息,在保持效率的同时获得更全面的概览
2.2 算法细节
2.2.1 图标签与动态聚类
动态标签添加与聚合过程:
(1)标签组的初始化
- 用 LLM 根据预设的标签集来为每个 $G_{m}$ 筛选相关的标签,并给出标签描述
- 常用初始标签名称包括但不限于:症状(Symptoms)、病史(Patient History)、生理功能(Body Functions)、药物(Medication)
- 最终每个 $G_{m}$ 生成一个结构化的标签摘要
{标签名称:标签描述,...},简称 $T_{m}$
(2)图的动态聚合
- 任意匹配两个 $G_{m}$ 并根据 $T_{m}$ 进行相似度计算,并筛选相似度前 20% 的 $G_{m}$ 对
- 筛选后的 $G_{m}$ 对根据以下规则/公式来决定是否进行图的合并操作: $$
\frac{1}{|T_{m_{i}}|\cdot|T_{m_{j}}|}\sum_{t\in T_{m_{i}}t^{^{\prime}}\in T_{m_{j}}}\frac{\phi(t)^{^{\prime}}\phi(t^{^{\prime}})}{|\phi(t)||\phi(t^{^{\prime}})|}\geq\delta_{t} $$
- 其中 $T_{m_{i}}$ 和 $T_{m_{j}}$ 分别表示图 $i$ 和图 $j$ 对应的标签摘要;$\phi(t)$ 表示标签 $t$ 的嵌入表示;$\delta_{t}$ 为阈值;当图间的平均标签嵌入的相似度高于阈值时,对两个图进行合并操作
(3)上级标签的合成
- 图合并后,图对应的标签也要进行合并,得到新标签及其摘要(来自 LLM 的总结)
- 随着合成次数的增加,标签将建立层级结构,同时高层级标签摘要的详细程度会下降
- 人为限制标签最大层数为 12,在标签体系的内容颗粒度和后续查询效率之间进行权衡
MedGraphRAG 借助预定义的医疗标签生成结构化摘要,来替代原始 GRAG 中的社区发现技术(community detection),该方法能发挥医疗文本的结构化特效,并且计算成本低
2.2.2 U-Retrieval 检索策略
(1)自顶向下的精准检索
- LLM 先根据用户查询 $Q$ 来生成查询嵌入 $\phi(Q)$ 和标签摘要 $T_{Q}$
- 根据 $T_{Q}$ 在层级标签体系中进行自顶向下的检索,记录每一层最相似的标签
- 根据最底层的相似标签找到对应的三元组图 $G_{m_{t}}$
(2)基于图的搜索增强
- 根据 $\phi(Q)$ 与图中实体嵌入之间的相似度,找到图中前 $k$ 个最近三元组邻实体
- 根据找到实体及其关系信息,作为上下文提示来增强 LLM ,并得到初始的响应
(3)自下而上的响应优化
- 根据层级标签体系和之前的检索记录,找到上一层最相似的标签
- 将
问题,上一轮响应,本层标签摘要作为输入,来更新 LLM 的响应 - 从底层逐步往上并更新响应,直到达到标签目标层,得到最终响应
自顶向下的精准检索,加速了对图数据的检索效率;自下而上的响应优化,在保持效率的同时为 LLM 提高了由细到粗的完整信息,并借助标签体系为 LLM 注入了医疗结构化知识
2.3 实验评价
数据说明:
- 用于构建 RAG 的文本,来自 MIMIC-IV 中的电子健康记录 emr
- 中间层,主要依赖 480 万篇生物医学论文和 3 万本医学教科书
- 用 UMLS 图作为最底层的图,该图包含权威的医学词汇和语义关系
测试数据:
- 医学问答基准数据集 MultiMedQA ,主要包括其中的 9 个生物医学相关的多项选择数据集、2 个关于公共卫生的事实验证数据集
- 自行构建的测试集 DiverseHealth,专注于健康公平,包含 50 个涵盖广泛主题的真实临床问题
实验设置
- 使用 Llama3-70B 模型构建图
- 文本嵌入模型为 text-embedding-3-large
- 在检索过程中,考虑最相似的 60 个实体及其 16 跳邻居
- 除非另有说明,所有阈值均设置为 0.5,所有模型均使用相同的查询提示
实验结论:
- 与未进行检索的基线模型相比,MedGraphRAG 在事实核查方面平均提升了近 10%,在医学问答方面平均提升了 8%。与使用 GraphRAG 的基线模型相比,MedGraphRAG 在事实核查方面平均提升了约 8%,在医学问答方面平均提升了约 5%
- MedGraphRAG+70B 以上 LLM,在所有 11 个数据集上都取得了新的 SOTA
- 由7名执业临床医生和5名非专业用户进行人工评估,MedGraphRAG 表现最好,尤其是在引用准确性、引用全面性和可理解性这三个维度上优势明显
- 单纯的数据丰富和检索方法改进都不是性能改进的关键点,二者结合才能发挥最大潜力
多层结构的图数据能够显著改善 MedGraphRAG 的效果
消融实验(提升最显著的是三元组构建,其次是UMLS 的结构引入):
| MedQA | PubMedQA | MedMCQA | |
|---|---|---|---|
| GraphRAG | 88.9 | 77.9 | 77.2 |
| +Med-MetaGraph | 90.4 | 78.5 | 78.1 |
| +Triple Graph Construction | 91.1 | 81.8 | 80.9 |
| +U-Retrieval (MedGraphRAG) | 91.3 | 83.3 | 81.5 |
相关资源
- 论文在线地址
- 开源项目地址
- 本地文件地址:Preprint PDF
- 本地Zotero地址:Preprint PDF