这份指南将带你在 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 和数据库支持。
- Miniconda (Python 管家)
- 下载:Miniconda Windows Installer
- 安装:运行安装包,一路 Next。
- 关键一步:安装完成后,记得把 Miniconda 安装目录下的
Scripts和condabin文件夹路径添加到系统的 环境变量 PATH 中,这样你在哪都能用conda命令。
- JDK 17 (Neo4j 的运行基础)
- 下载:Oracle JDK 17 (Windows x64 Installer)
- 验证:安装完打开一个新的 CMD,输入
java -version。如果看到17.x.x,就说明装好了。
- Neo4j Community 5.18.1 (图数据库)
- 下载:Neo4j Download Center
- 安装:解压到一个简单好找的路径,比如
C:\neo4j。 - 配置:把
C:\neo4j\bin添加到系统环境变量 PATH 中。这步是为了让你在命令行里直接敲neo4j就能启动。
- Git (代码管理)
- 下载:Git for Windows
- 安装:一路默认点 Next 即可。
📦 第二步:代码与 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 装好后,我们需要微调一下配置文件:
- 用记事本打开项目根目录下的
requirements.txt。 - 删除或注释掉
torch==2.2.1+cu118这一行(因为刚才我们已经手动装过了)。 - 保存文件,然后运行:
pip install -r requirements.txt
🧠 第三步:构建大脑(图谱与模型)
3.1 启动 Neo4j 并写入数据
这是系统的“知识库”部分。
- 启动数据库
打开一个新的 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)。
修复方法:
- 打开项目中的
webui.py文件。 - 搜索
torch.load。 - 找到类似加载模型的代码,将其修改为由系统自动分配设备:
# 修改前可能长这样:
# 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 一键起飞
确保以下两点:
- Neo4j 的黑色窗口还在运行。
- Ollama 也在后台运行。
在 Conda 环境窗口输入:
streamlit run login.py
如果一切顺利,浏览器会自动弹出 http://localhost:8501。
- 点击 “注册” 创建个账号。
- 登录后,你就可以开始向它咨询医疗问题啦!🎉
📝 避坑速查表 (Troubleshooting)
如果运行出错了,先查查这张表:
| 报错现象 | 可能原因 | 怎么救 |
|---|---|---|
Could not find a version ... torch==2.2.1+cu118 | pip 默认找不到带 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 的黑窗口是不是被你关掉了?重新打开它。 |