Skip to content

构建一个医疗知识图谱并基于此实现 RAG,并以此实现医学试题的生成

Notifications You must be signed in to change notification settings

Lin-A1/MediGraphRAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediGraphRAG


cover

MediGraphRAG 项目旨在构建一个医疗知识图谱并基于此实现 RAG(Retrieval-Augmented Generation)方法,应用于医学试题的生成,提升医学领域的信息管理与应用效率。项目通过知识点抽取、关系提取和知识融合,解决大模型在生成过程中可能出现的幻觉问题,确保模型生成内容的准确性和可靠性。最终目标是为医学教育和实践提供一个动态、准确的知识支持系统。

环境

# ollama
curl -fsSL https://ollama.com/install.sh | sh # unbutu
ollama run qwen2.5

# docker
docker pull neo4j:latest
docker run --name med-neo4j -d -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/test neo4j:latest

# model
cd model
git lfs install
git clone https://huggingface.co/BAAI/bge-large-zh-v1.5

# python
conda create -n med python=3.10
conda activate med
cd MediGraphRAG
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install -r requirements.txt

数据来源

快速开始

# 先构建好上面所描述环境

# 拉取项目
git clone [email protected]:Lin-A1/MediGraphRAG.git
cd MediGraphRAG

# 虚拟环境
conda activate med

# 创建neo4j知识图谱
cd dautilsta
python GraphBuilder.py

# 进行检索生成
python generate.py

构建流程可见process.md


知识库构建

1. 知识点抽取

使用qwen2.5:14b从医学试题中抽取考题知识点。清洗后数据存储在knowledge.json中。

2. 关系抽取

同样使用qwen2.5:14b从抽取的知识点中识别实体与关系。数据存储在graph.json中。模型抽取时需指定实体与关系类别,避免错误抽取。

3. Neo4j构建

使用Neo4jBuilder.py将知识图谱数据导入Neo4j图数据库,以支持高效检索。


RAG流程

1. 嵌入模型

使用bge-large-zh-v1.5进行实体和知识点编码

2. Neo4j数据提取

使用Neo4jEntityFetcher.py从Neo4j提取实体,提供基于属性、标签等条件的查询接口。

3. FAISS索引生成

通过IndexBuild.py构建FAISS索引,用于快速匹配实体和知识点。

4. RAG工作流

ragWorkflow.py中,输入关键词,利用FAISS索引进行实体匹配,提取相关知识点,生成医学试题。


模型输出

模型根据抽取的知识点生成医学试题,并返回题目、选项、答案和解析。例如:

{
  "topic": "糖尿病患者治疗过程中出现酮症酸中毒,应首选的治疗方法是",
  "options": {
    "A": "口服降糖药",
    "B": "静脉输注葡萄糖加胰岛素",
    "C": "口服补液盐",
    "D": "使用胰岛素泵"
  },
  "answer": "B",
  "parse": "酮症酸中毒是糖尿病急性并发症,需通过静脉输注葡萄糖和胰岛素来治疗。"
}

Agent

在上述数据准备的基础上,我们使用metagpt构建试题,启动脚本为main.py,相关agent配置位于agent,其他脚本位于utils

About

构建一个医疗知识图谱并基于此实现 RAG,并以此实现医学试题的生成

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published