🏥 RAGQnASystem 医疗问答系统 · Windows 11 部署实战指南

72 阅读5分钟

这份指南将带你在 Windows 11 上从零开始部署一套基于知识图谱和 LLM 的医疗问答系统。

我们把整个过程分成了几个轻松的步骤,跟着做就不容易出错。遇到问题也不要慌,文末还有“避坑指南”等着你。


🛠️ 第一步:环境全家桶准备

俗话说“工欲善其事,必先利其器”。我们需要先安装几个基础工具。

1.1 安装 Ollama (指定版本 v0.2.0)

为了确保系统“听话”,我们需要使用特定的 v0.2.0 版本。

  • 下载安装

    • 前往 Ollama GitHub Releases 页面
    • 找到 v0.2.0 版本,下载 Windows 对应的 OllamaSetup.exe 并安装。
    • ⚠️ 提示:如果你电脑里已经装了最新版 Ollama,建议先卸载,或者确保你知道如何处理版本兼容性问题。
  • 下载模型:

    安装好后,打开 CMD 或 PowerShell,输入以下命令下载并运行 Qwen-7b 模型(第一次运行需要下载,请耐心等待):

    ollama run qwen:7b
    

    注意:看到模型可以对话后,请不要关闭这个窗口,让它在后台默默工作。

1.2 安装基础依赖

我们需要 Python、Java 和数据库支持。

  1. Miniconda (Python 管家)
    • 下载Miniconda Windows Installer
    • 安装:运行安装包,一路 Next。
    • 关键一步:安装完成后,记得把 Miniconda 安装目录下的 Scriptscondabin 文件夹路径添加到系统的 环境变量 PATH 中,这样你在哪都能用 conda 命令。
  2. JDK 17 (Neo4j 的运行基础)
  3. Neo4j Community 5.18.1 (图数据库)
    • 下载Neo4j Download Center
    • 安装:解压到一个简单好找的路径,比如 C:\neo4j
    • 配置:把 C:\neo4j\bin 添加到系统环境变量 PATH 中。这步是为了让你在命令行里直接敲 neo4j 就能启动。
  4. Git (代码管理)

📦 第二步:代码与 Python 环境配置

2.1 克隆代码并创建虚拟环境

找个你喜欢的文件夹,右键打开终端:

# 1. 下载项目代码
git clone https://github.com/honeyandme/RAGQnASystem.git
cd RAGQnASystem

# 2. 创建一个干净的 Python 3.10 环境
conda create -n RAGQnASystem python=3.10

# 3. 激活环境
conda activate RAGQnASystem

2.2 🩹 修复 PyTorch 安装 (重难点!)

这里有个坑! requirements.txt 里的 Torch 版本如果直接装,往往不带 CUDA(显卡加速),导致跑起来很慢或报错。我们手动先装好它。

在安装 requirements.txt 之前,先执行下面这行命令:

# 强制从 PyTorch 官方源安装带 CUDA 11.8 加速的版本
pip install torch==2.2.1+cu118 torchvision==0.17.1+cu118 torchaudio==2.2.1+cu118 --index-url https://download.pytorch.org/whl/cu118

2.3 安装其余依赖

Torch 装好后,我们需要微调一下配置文件:

  1. 用记事本打开项目根目录下的 requirements.txt
  2. 删除或注释掉 torch==2.2.1+cu118 这一行(因为刚才我们已经手动装过了)。
  3. 保存文件,然后运行:
pip install -r requirements.txt

🧠 第三步:构建大脑(图谱与模型)

3.1 启动 Neo4j 并写入数据

这是系统的“知识库”部分。

  1. 启动数据库

打开一个新的 CMD 窗口(管理员模式更好):

cd C:\neo4j\bin
neo4j console
  • 等待出现 Started. 字样。
  • 打开浏览器访问 http://localhost:7474/
  • 登录:默认账号/密码都是 neo4j
  • 改密码:首次登录会强制改密码,建议设为 neo4j123456(或者你自己记得住的,记得替换下面命令里的密码)。
  • ⚠️ 提示:这个黑色窗口不要关!关了数据库就停了。
  • 导入医疗数据

回到刚才的 Conda 环境窗口(RAGQnASystem 目录下),运行构建脚本。

记得把 YourPassword 换成你刚才设置的新密码!

python build_up_graph.py --website http://localhost:7474 --user neo4j --password YourPassword --dbname neo4j

去喝杯咖啡吧:这个过程要处理约 31 万条关系,可能需要十几分钟。运行成功后,data 文件夹下会多出 ent_aug 文件夹和 rel_aug.txt 文件。

3.2 模型文件准备 (Model Setup)

我们需要下载两个关键模型文件放在 model 文件夹里。

1. 下载 BERT 模型 (用于识别实体)

  • 访问 HuggingFace

  • 下载这三个文件:config.json, pytorch_model.bin, vocab.txt

  • 存放位置:

    在项目根目录新建 model 文件夹,再在里面建 chinese-roberta-wwm-ext 文件夹。

    最终路径结构应该是:

    RAGQnASystem/model/chinese-roberta-wwm-ext/config.json (以及其他两个文件)

2. 下载预训练 NER 模型

  • 下载地址:百度网盘 (密码: 08or)
  • 文件名:best_roberta_rnn_model_ent_aug.pt
  • 存放位置:直接放在 RAGQnASystem/model/ 目录下。

🐛 第四步:代码微调 (解决显卡报错)

如果你遇到 "CUDA device count mismatch" 报错,通常是因为代码想用多张显卡,但你只有一张(或者在用 CPU)。

修复方法:

  1. 打开项目中的 webui.py 文件。
  2. 搜索 torch.load
  3. 找到类似加载模型的代码,将其修改为由系统自动分配设备:
# 修改前可能长这样:
# bert_model.load_state_dict(torch.load(f'model/{cache_model}.pt'), map_location="cuda:0")

# 👇 请修改为下面这样:
state_dict = torch.load(
        f'model/{cache_model}.pt',
        map_location=lambda storage, loc: storage.cuda(0) # 强制映射到第一块 GPU
)
bert_model.load_state_dict(state_dict, strict=False)

🚀 第五步:启动系统!

5.1 确认模型名称

因为我们之前 Ollama 跑的是 qwen:7b,建议在项目里全局搜索一下 qwen:32b,把它替换成 qwen:7b,以免代码调用不存在的模型。

5.2 一键起飞

确保以下两点:

  1. Neo4j 的黑色窗口还在运行。
  2. Ollama 也在后台运行。

在 Conda 环境窗口输入:

streamlit run login.py

如果一切顺利,浏览器会自动弹出 http://localhost:8501

  • 点击 “注册” 创建个账号。
  • 登录后,你就可以开始向它咨询医疗问题啦!🎉

📝 避坑速查表 (Troubleshooting)

如果运行出错了,先查查这张表:

报错现象可能原因怎么救
Could not find a version ... torch==2.2.1+cu118pip 默认找不到带 CUDA 的版本手动装:参考本文 2.2 节,加上 --index-url 参数安装。
CUDA device count mismatch代码以为你有两块卡,其实你只有一块改代码:参考本文 4.0 节,修改 webui.py 中的加载逻辑。或者设置环境变量 $env:CUDA_VISIBLE_DEVICES="0"
RuntimeError: CUDA out of memory显存爆了1. 换小模型:确保 Ollama 用的是 7b 或 1.5b 版本。 2. 关软件:把吃显存的游戏或设计软件关掉。
Neo4j connection refused数据库没开检查那个 neo4j console 的黑窗口是不是被你关掉了?重新打开它。