医疗AI正在经历从“对话工具”到“任务执行者”的关键跃迁。2026年4月2日,百度健康发布了国内首个任务型医疗AI助手“有医助理”,标志着医疗助手AI正式迈入具备实际任务执行能力的新发展阶段-1。无论是正在学习AI技术的同学,还是准备面试的开发者,理解医疗助手AI背后的核心架构——RAG(检索增强生成)与Agent(智能体),已经成为绕不开的技术课题。
很多开发者都会遇到这样的困境:会调用大模型API写一个问答机器人,但被问到“RAG和Agent有什么区别”“医疗AI如何解决幻觉问题”时就卡住了。本文将从痛点出发,由浅入深拆解医疗助手AI的两大核心概念,辅以可运行的代码示例和高频面试题,帮你建立从概念到落地的完整知识链路。

一、痛点切入:为什么医疗场景不能只用纯对话大模型?
先看一个直观的对比。假设你直接调用大模型接口构建一个问诊助手:

from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4", temperature=0.7) response = llm.invoke("患者发烧39度持续三天,该怎么办?") print(response.content) 输出:建议服用XX药物,每次两粒,每日三次...
这个实现看似简单,但存在致命问题:
幻觉风险:大模型可能编造不存在的疾病名称或错误剂量-2
不可追溯:回答无法定位到权威医学文献,在医疗合规审查中无法通过
无结构化输出:无法生成标准化的电子病历格式
无法执行任务:纯对话模型只能“回答”,不能完成“查文献→写病历→排随访计划”等实际工作流程
医疗场景的核心原则是:宁可漏诊,不能误诊。系统设计必须把“防幻觉”放在第一位,效率提升是安全基础上的加分项-44。
二、核心概念:RAG(检索增强生成)
2.1 标准定义
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型生成相结合的技术范式。在医疗场景中,它确保模型回答必须基于权威医学文献,而非依赖模型的“记忆”-2。
2.2 生活化类比
想象一下:RAG就像一位带着权威医学图书馆的医生。患者提问时,医生不是凭记忆回答,而是先翻书查资料(检索),找到相关文献后,再结合自己的语言能力给出答案。这样既保证了答案有据可查,又保留了自然对话的流畅性。
2.3 核心流程
用户问题 → 向量检索(在医学知识库中找最相关的3-5篇资料)→ 拼接Prompt → 大模型生成答案2.4 代码示例:极简版医疗RAG问答
from sentence_transformers import SentenceTransformer import faiss import numpy as np 1. 构建医疗知识向量库 model = SentenceTransformer("moka-ai/m3e-base") knowledge_base = [ "发烧超过38.5度持续三天建议及时就医,进行血常规检查", "胸闷胸痛伴随呼吸困难可能与心血管疾病相关,建议立即急诊", "儿童咳嗽超过一周需排查肺炎,建议拍胸片和听诊", ] embeddings = model.encode(knowledge_base) index = faiss.IndexFlatL2(768) index.add(np.array(embeddings).astype("float32")) 2. 检索函数 def search_knowledge(query): q_emb = model.encode([query]) D, I = index.search(np.array(q_emb).astype("float32"), 3) return [knowledge_base[i] for i in I[0]] 3. 拼接Prompt + 生成(示例使用模拟LLM) def medical_rag_answer(question): context = "\n".join(search_knowledge(question)) prompt = f"""你是一名专业医生助理,只能依据以下医学资料回答: 资料:{context} 问题:{question} 请给出安全、保守、医学合规的建议。""" return prompt 实际使用中此处调用LLM API print(medical_rag_answer("发烧三天了怎么办?"))
关键代码注释:
第1步:将医学资料转化为向量并建索引(一次构建,多次使用)
第2步:根据用户问题检索最相关的资料(Top-K检索)
第3步:将检索到的资料作为上下文注入Prompt,约束模型回答范围
2.5 底层技术依赖
RAG的底层依赖两个核心技术:
Embedding模型(向量化) :将医学文本转化为数值向量,常用的有BGE-M3、M3E等中文医学优化模型
向量检索引擎(如FAISS、Milvus) :在海量向量中快速找到最相似的内容,支撑毫秒级检索响应
三、关联概念:Agent(智能体)
3.1 标准定义
Agentic AI(智能体人工智能)是指能够自主执行多步骤任务、调用外部工具、并持续记忆上下文的AI系统-4。Agentic AI systems function as autonomous controllers capable of perceiving environmental conditions, formulating strategic plans, and executing complex goal-directed tasks through sophisticated tool integration-28.
简单来说:RAG是“边查资料边回答”,Agent是“能干活的人”——它不仅可以回答问题,还能自主完成文献检索、方案设计、随访计划生成等复杂操作。
3.2 Agent的三层能力拆解
| 能力层级 | 功能说明 | 医疗场景示例 |
|---|---|---|
| 感知与规划 | 理解用户意图,拆解为多步任务 | “帮我整理肺癌最新治疗方案”→ 拆解为:查指南→读文献→归纳→写报告 |
| 工具调用 | 调用外部API/工具完成子任务 | 查病历数据库、调用药品知识库、生成PDF报告 |
| 记忆与反思 | 记住历史对话和任务状态,迭代优化 | 记住已问过的症状,避免重复追问 |
3.3 Agent框架选型:LangChain与LangGraph
2026年,LangChain已进化到v1.x时代,全面拥抱LCEL(LangChain Expression Language)。LangChain提供模型I/O、工具调用、记忆存储三大基础设施;LangGraph则在之上构建多步骤、可中断、支持循环的复杂Agent流程-36。
from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI LCEL极简链式调用:输入→模型→输出 llm = ChatOpenAI(model="deepseek-chat", temperature=0.3) DIAGNOSIS_PROMPT = ChatPromptTemplate.from_messages([ ("system", "你是一名医疗问诊助手,根据症状给出分诊建议"), ("user", "{user_input}") ]) diagnosis_chain = DIAGNOSIS_PROMPT | llm
3.4 多智能体架构示例:医疗问诊Agent的分层设计
参考BioMedAgent的多智能体协作思想-27,医疗问诊Agent可采用主管Agent + 专科Agent的分层架构:
主管Agent:根据症状判断分诊科室 def triage_agent(symptoms): if "胸痛" in symptoms or "呼吸困难" in symptoms: return "emergency_agent" 紧急转人工 elif "发烧" in symptoms or "咳嗽" in symptoms: return "respiratory_agent" else: return "general_agent" 各专科Agent执行具体的问诊和知识检索 def respiratory_agent(symptoms): 调用RAG检索呼吸道疾病知识库 生成结构化病历 pass
四、RAG vs Agent:概念关系与区别
4.1 一句话概括
RAG是让AI“查资料”的技术方案,Agent是让AI“干活”的系统架构;Agent里面往往包含了RAG,但Rag不一定构成Agent。
4.2 详细对比
| 对比维度 | RAG | Agent |
|---|---|---|
| 本质定位 | 知识增强技术(解决方案) | 任务执行架构(系统设计) |
| 核心目标 | 减少幻觉、增强知识时效性 | 自主完成多步骤任务 |
| 工作模式 | 检索 → 生成(线性流程) | 感知 → 规划 → 执行 → 反思(循环迭代) |
| 工具调用 | 通常只调用检索引擎 | 可调用多种工具(数据库、API、代码执行等) |
| 典型产出 | 一个准确、有出处的答案 | 一个完整的工作成果(报告、方案、流程执行) |
| 关系 | Agent的“知识模块”之一 | 包含RAG作为子模块,外加规划与工具调用能力 |
4.3 2026年最新趋势
值得关注的是,小型语言模型(SLM,参数少于100亿) 正成为医疗Agent的新方向。研究表明,SLM在效率、可部署性和成本方面具有显著优势,且足以满足大部分医疗Agent任务的需求-4。NVIDIA在GTC 2026上发布的Nemotron 3 Super采用混合Mamba-Transformer MoE架构,为本地化医疗Agent部署提供了可行的底座方案-7。
五、代码示例:从RAG到Agent的完整链路
以下示例演示一个简单的医疗问诊Agent,整合了RAG检索、对话记忆和多轮追问能力:
import redis import json 1. 会话缓存设计(Redis多轮对话记忆) r = redis.Redis() def save_session(uid, msg): key = f"chat:{uid}" history = r.get(key) history = json.loads(history) if history else [] history.append(msg) r.set(key, json.dumps(history), ex=3600) 1小时过期 2. 症状结构化抽取 def extract_symptoms(text): symptoms = [] if "发烧" in text or "发热" in text: symptoms.append("fever") if "咳嗽" in text: symptoms.append("cough") if "胸痛" in text or "胸闷" in text: symptoms.append("chest_pain") return symptoms 3. 紧急情况识别 emergency_keywords = ["胸痛", "呼吸困难", "大出血", "昏迷"] def is_emergency(text): return any(kw in text for kw in emergency_keywords) 4. Agent主流程 def medical_agent(user_id, user_input): Step 1: 紧急情况优先处理 if is_emergency(user_input): return "【紧急提醒】请立即就医或拨打120,AI无法处理紧急医疗状况!" Step 2: 提取结构化症状 symptoms = extract_symptoms(user_input) Step 3: 保存对话上下文 save_session(user_id, {"role": "user", "content": user_input}) Step 4: RAG检索相关知识(复用前文search_knowledge) context = search_knowledge(user_input) Step 5: 构建安全Prompt并返回(实际调用LLM生成) prompt = build_safe_prompt(user_input, context, symptoms) return prompt
六、底层技术支撑
构建生产级医疗助手AI,底层依赖以下核心技术栈:
| 技术层 | 核心组件 | 作用 |
|---|---|---|
| Embedding模型 | BGE-M3、M3E | 将医学文本向量化,支撑语义检索 |
| 向量数据库 | FAISS、Milvus、Qdrant | 毫秒级海量向量检索 |
| LLM推理引擎 | vLLM、NVIDIA TensorRT-LLM | 高性能模型推理,降低延迟 |
| Agent框架 | LangChain、LangGraph | 多步骤任务编排与工具调用 |
| 记忆存储 | Redis、PostgreSQL | 会话上下文持久化 |
| 安全合规 | 数据脱敏、权限分级、通信加密 | 满足HIPAA/GDPR等医疗合规要求-1 |
七、高频面试题与参考答案
Q1:医疗AI系统如何解决大模型的“幻觉”问题?
参考答案(可背诵) :
医疗AI解决幻觉问题主要采用四层防护架构:
RAG层:所有回答必须基于权威医学文献,模型不能凭空编造-44
边界控制层:通过Prompt工程限定AI只能做“信息整理”,禁止输出确诊结论-44
风险分级层:根据症状严重程度自动分流(咳嗽发烧→AI处理;胸痛→转人工)-44
人工兜底层:AI所有输出必须经过医生审核确认,医生拥有最终决策权-42
Q2:RAG和Agent有什么区别?
参考答案:
RAG是一种知识增强技术,核心是“检索+生成”,解决模型知识陈旧和幻觉问题。Agent是一种任务执行架构,核心是“感知+规划+执行+反思”,能自主完成多步骤任务。关系上:Agent可以包含RAG作为其知识模块,但RAG本身不构成完整的Agent。一句话记忆:RAG让AI“查资料”,Agent让AI“干工作” 。
Q3:设计医疗问诊系统时,如何保证回答的可追溯性?
参考答案:
核心思路是“每一个结论都有据可查”:
所有输出结论必须支持逐条回溯至原始出处(文献标题、指南版本、原文行号)-1
检索结果必须经过三步过滤:版本过滤(只取最新指南)、来源过滤(优先权威来源)、任务过滤(分诊任务不召回科研论文)-45
建立证据回指机制,每条回答附带来源链接和引用编号
Q4:医疗AI的底层技术依赖有哪些?
参考答案:
核心技术栈包括:Embedding模型(如BGE-M3)负责文本向量化;向量检索引擎(如FAISS、Milvus)负责毫秒级检索;LangChain/LangGraph负责Agent流程编排;Redis负责会话状态管理;vLLM负责模型推理加速。此外还需配套五重安全机制:医学伦理合规审查、数据物理隔离、端到端加密、权限分级、全周期安全防护-1。
八、总结
本文围绕医疗助手AI的核心技术体系,从痛点切入,拆解了RAG与Agent两大核心概念:
| 核心要点 | 关键结论 |
|---|---|
| 技术演进方向 | 医疗AI正从“单一对话”迈入“任务执行”新阶段-1 |
| RAG的价值 | 解决幻觉、保证可追溯、实现知识时效性 |
| Agent的价值 | 自主完成多步骤任务、调用工具、持续学习 |
| 两者关系 | Agent包含RAG作为知识模块;RAG是技术方案,Agent是系统架构 |
| 面试重点 | 四层防幻觉架构、RAG vs Agent区别、可追溯性设计 |
易错点提醒:不要混淆RAG和Agent——RAG不能执行多步骤任务,Agent不能保证知识准确性(需要RAG提供可靠知识源)。两者是互补关系,而非替代关系。
下一篇我们将深入探讨医疗AI的多模态能力(文本+影像+结构化数据融合)以及可信AI的全栈实现,敬请期待。
💡 互动话题:你在实际开发医疗AI应用时遇到过哪些坑?欢迎在评论区分享交流。
