RAG / LLM App / Full-stack
2025
角色: RAG 方案设计、数据流程设计、评估体系定义、幻觉分析
MedRAFT Medical RAG QA System
一个将知识库构建、证据检索、教师监督数据生成、RAFT 风格训练与多维评估串联起来的医疗 RAG 系统,用于更稳健的中文问答。
影响: 把课程项目整理成一个完整的产品型 RAG 案例,明确了高风险领域中需要的证据流、回答结构、置信度设计与评估维度。
概览
MedRAFT 是一个中文医疗问答项目,我把它整理成更产品化的 RAG 工作流来展示:先构建知识库,再检索证据、生成监督答案、微调学生模型,并评估最终输出是否真正有依据、是否足够安全可复核。
问题
医疗问答是高风险生成场景:一个流畅的回答仍然可能缺乏依据、不完整或误导用户。单纯依赖 LLM 生成并不够,系统需要检索证据、带干扰项的训练机制,以及检查答案是否被证据支持的评估流程。
解决方案
我把项目设计成“证据优先”的工作流:先给出检索到的证据,再生成回答;教师输出定义目标结构;评估则显式检查支持质量、回答质量和幻觉模式。相比单纯聊天式医疗 demo,这样的系统更可辩护。
架构
系统流程包括文档导入、文本标准化、文本分块、基于 embedding 的检索、教师模型答案生成、干扰项构建、提示词格式化、参数高效微调、对比推理、检索评估和幻觉分析。
核心功能
- 中文医疗文档导入与标准化
- 用于医疗问答证据 grounding 的向量检索
- 教师监督样本构建
- 带干扰项增强的 RAFT 风格训练实例
- 基于 Qwen2.5-7B 的 LoRA/QLoRA 微调
- 覆盖检索质量、回答质量和幻觉分析的评估流程
技术栈
- Python
- Hugging Face
- PEFT/LoRA
- Vector Store
实现细节
- 构建了 1,199 条教师监督样本和 1,195 条干扰项增强实例,用于训练与对比。
- 使用 LoRA/QLoRA 微调 Qwen2.5-7B,研究参数高效领域适配在中文医疗问答中的作用。
- 搭建了可复用脚本,用于数据标准化、提示词格式化、对比推理、检索质量分析和幻觉检查。
- 项目重点放在证据保真度上,而不是只追求医疗风格回答的语言流畅度。
- 将检索质量和生成质量分开分析,使弱证据和弱生成可以被独立诊断。
挑战
- 中文医疗术语会产生语义相近但临床含义不同的片段,使朴素检索存在风险。
- 干扰项有助于提升训练鲁棒性,但也需要谨慎设计提示词和标签,避免模型被错误上下文干扰。
- 微调后的输出可能更流畅,但仍然需要进行证据级别的幻觉检查。
收获
- 在医疗 RAG 中,数据集构建和评估设计与模型选择同样重要。
- RAFT 风格学习让我更深入理解检索上下文、干扰项和监督答案在领域问答中的相互作用。
- 负责任的医疗问答界面应该表达不确定性、证据范围和未支持内容,而不是只输出自信答案。