AI医疗问答系统搭建:从零部署到问答验证的完整流程
搭建一套能回答医疗常识问题的 AI 问答系统,核心是把“大模型 + 知识库检索 + 后端接口”三件事串起来。
本文按单机 Linux 服务器环境展开,适合想先跑通原型再逐步扩展的零基础用户。
操作前请确认:服务器至少 4 核 8G、已装 Docker 和 Docker Compose,且医疗问答内容仅用于内部测试或明确授权的场景,不直接对外提供诊断建议。
先理清系统由哪几块组成
一个最小可用的医疗问答系统通常包含四层:前端对话页面、后端 API 服务、向量数据库和本地大模型推理服务。
前端负责收发消息,后端把用户问题转成向量去知识库检索,再把检索结果拼进提示词交给大模型生成回答。
对零基础用户,建议先用 Docker Compose 把后端、向量库和模型服务跑在同一台机器上,验证问答链路后再考虑拆分。
医疗领域对回答准确性要求高,知识库文档要提前整理成纯文本或 Markdown,按“症状、科室、注意事项”分段,方便后续切片检索。
准备目录和基础配置
登录服务器后创建项目目录,并准备好环境变量文件:
mkdir -p /opt/ai-med-qa/{data,models,logs}
cd /opt/ai-med-qa
新建 .env,至少定义模型名称、向量库地址和端口:
MODEL_NAME=qwen2.5:7b
VECTOR_DB_HOST=vector-db
VECTOR_DB_PORT=6333
API_PORT=8080
如果服务器没有 GPU,优先选 7B 以下量化模型,推理速度更可控。
模型下载前先确认磁盘剩余空间,df -h /opt 查看,至少留出 20G 以上。
用 Docker Compose 拉起问答链路
编写 docker-compose.yml,把向量库、模型服务和后端 API 编排在一起:
services:
vector-db:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
volumes:
- ./data/qdrant:/qdrant/storage
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ./models:/root/.ollama
api:
build: ./api
ports:
- "${API_PORT}:8080"
env_file: .env
depends_on:
- vector-db
- ollama
后端 API 需要自己写一个简单服务,负责接收问题、调用向量库检索、再请求 Ollama 生成回答。
启动顺序建议先拉向量库和模型服务,确认健康后再启动 API:
docker compose up -d vector-db ollama
docker compose ps
curl http://127.0.0.1:6333/healthz
向量库返回健康状态后,再执行 docker compose up -d api。
如果 API 启动后立即退出,用 docker compose logs api --tail=100 查看报错,常见原因是环境变量名写错或向量库地址不可达。
导入医疗知识并验证问答效果
把整理好的医疗文档放进 data/docs/,用后端提供的导入脚本切片写入向量库。
导入后做一次检索测试:
curl -X POST http://127.0.0.1:8080/import \
-H "Content-Type: application/json" \
-d '{"path":"/data/docs"}'
然后通过问答接口验证:
curl -X POST http://127.0.0.1:8080/ask \
-H "Content-Type: application/json" \
-d '{"question":"感冒发烧时应该注意什么"}'
预期返回一段基于知识库内容的回答,而不是模型凭空生成。
如果回答与知识库无关,检查切片大小是否过大或检索条数过少;
如果接口超时,先看模型服务日志,确认模型已加载完成。
医疗场景下容易踩的坑
第一,不要直接把模型回答当作医疗建议对外发布,系统输出应加免责声明,并限制在健康科普范围内。
第二,知识库文档要脱敏,去掉真实患者姓名、身份证号和联系方式。
第三,向量库和模型服务默认端口不要直接暴露到公网,建议只开放 API 端口,并在前面加 Nginx 做访问控制。
第四,模型回答不稳定时,优先调整检索条数和提示词,而不是频繁换模型。
上线前做一次完整复查
复查清单包括:docker compose ps 所有服务为 running;curl 问答接口能在合理时间内返回;
日志目录没有持续报错;
防火墙只放行必要端口;
知识库导入记录可追溯。
完成这些检查后,再考虑接入前端页面和增加用户鉴权。
医疗问答系统的搭建重点不在模型多大,而在知识库质量、检索准确性和输出边界控制。