垂直领域 RAG 完整架构
垂直领域 RAG 的数据、检索、生成、权限与评估架构
原题:请详细描述如何为专业领域(如医疗或法律)构建一个高质量的检索增强生成(RAG)系统或智能助手,涵盖架构设计、数据源选择与处理、检索系统构建、生成模型优化、安全合规保障以及多环节集成等关键方面,并结合实际应用场景说明各模块的设计考量与协同机制。
RAG基础 · 字节真题
回答与解析
一、整体架构:四层分离设计
用户层 → 网关层(权限/审计)→ 编排层(Agent/Router)→ 服务层(检索+生成+知识管理)
核心原则:检索与生成解耦、领域知识分层管理、全链路可追溯
二、数据源与知识库构建
| 层级 | 内容 | 处理方式 | 更新频率 |
|---|---|---|---|
| 权威库 | 诊疗指南/法典/药品说明书 | 结构化抽取+人工审核 | 月度 |
| 案例库 | 判例/病例/专家经验 | 向量化+元数据标注 | 实时 |
| 实时库 | 最新文献/政策/新闻 | 爬虫+轻量审核 | 小时级 |
关键处理:
- 医疗:ICD编码对齐、药品相互作用图谱构建
- 法律:法条层级关系(上位法/下位法)、时效性标记
三、检索系统:多路召回+领域精排
召回阶段
- 稠密向量(领域Embedding微调,如MedEmbed/LawEmbed)
- 稀疏向量(BM25 + 领域同义词扩展)
- 图谱召回(实体链接→子图遍历)
精排阶段
- 交叉编码器(领域数据微调)
- 时效性/权威性加权
- 用户画像过滤(科室/执业地域)
四、生成优化:领域适配与可控性
- 模型选择:基座模型+领域SFT(如Huatuo/LawGPT),非从零训练
- Prompt工程:强制引用格式
[来源:指南名称/条款编号],便于溯源 - 生成后处理:
- 幻觉检测:检索内容与生成的N-gram重叠度校验
- 置信度分级:高置信直接回答/中置信建议复核/低置信拒答
五、安全合规体系
| 维度 | 机制 |
|---|---|
| 权限隔离 | RBAC:实习医生/主治/主任可见范围分级 |
| 内容安全 | 诊断建议必须含"仅供参考,请遵医嘱" |
| 审计追踪 | 查询-检索片段-生成结果全链路ID绑定 |
| 人工兜底 | 复杂case自动转人工复核队列 |
六、协同机制示例(医疗问诊)
用户症状描述 → 实体识别(症状/病史)→ 图谱召回相似病例
↓
生成初步分析 ← 指南条款精排 ← 向量召回诊疗规范
↓
置信度评估 → 高:输出+引用 | 低:触发多轮追问/转人工
核心指标:事实准确率>95%、引用完整率>90%、平均响应<2s
学习建议
建议先掌握RAG基础流程,再深入学习向量检索、领域数据清洗、提示工程和合规要求,结合真实案例进行系统设计练习。
口语版讲法(约4分钟)
- 本质是领域知识与通用能力的平衡
- 数据分层与边界划分
- 检索召回的多路协同与精排
- 生成阶段的可控性与风险兜底
- 整体协同与取舍判断
这道题其实问的是,怎么把一个通用的RAG系统真正落地到专业领域。本质上是解决领域知识深度和通用模型能力之间的平衡问题。我理解,核心就三件事:数据怎么管,检索怎么准,生成怎么控。
先说数据。专业领域的数据不能一把抓,得分层。我一般分成三层:权威库、案例库、实时库。权威库,比如医疗的诊疗指南、法律的成文法典,这些是黄金标准,我会做结构化抽取加人工审核,更新频率不会太高,按月就行。案例库,比如历史病例或判例,这些需要向量化加元数据标注,更新可以实时。实时库,像最新文献或政策,用爬虫加轻量审核,小时级更新。这里有个边界:如果领域知识更新很慢,比如法律条文,那权威库就是核心;如果领域知识变化快,比如医疗新药,那实时库就得优先保证。落地时常见失败场景是,把所有数据混在一起,导致权威性和时效性打架,用户拿到过时的指南还以为是金标准。
检索这块,我不会只用一种方式。真正落地往往是多路召回加领域精排。召回我会走三条路:稠密向量,用领域微调过的 Embedding 模型,比如医疗的MedEmbed;稀疏向量,就是 BM25 加领域同义词扩展,比如法律里“撤销”和“撤回”是同义;还有图谱召回,通过 Entity Linking 做实体链接后走 Knowledge Graph 子图遍历。三条路并行,召回率才能上去。精排阶段,我会用 Cross-Encoder 做领域微调,再加时效性和权威性加权。举个例子,医疗问诊里,用户说“头痛三天”,向量召回可能找到一堆偏头痛病例,但图谱召回能关联到“高血压危象”这种急症,精排时权威性高的指南会排前面。这里有个坑:纯向量检索在专业术语上容易跑偏,比如“心肌梗死”和“心梗”语义相似但和“胸痛”的向量距离可能更近,所以稀疏向量和图谱一定要补上。
生成优化,我关注的是可控性。模型我会选基座加领域 SFT,比如用Huatuo或LawGPT,而不是从头训练。Prompt里我会强制要求引用格式,比如 [来源:指南名称/条款编号],这样能溯源。生成后我会做两步:一是幻觉检测,计算检索内容和生成的N-gram重叠度,太低就拒答或降级。二是置信度分级,高置信直接回答,中置信建议复核,低置信就转人工。说白了,生成不是越聪明越好,而是越可靠越好。
安全合规这块,其实是整个系统的底线。权限隔离是必须的,比如医疗系统里实习医生和主任医师能看到的内容不一样。内容安全上,所有诊断建议必须带“请遵医嘱”这类风险提示。审计追踪要全链路ID绑定,从查询到检索片段到生成结果,出了问题能回溯。上线前我会特别关注人工兜底机制,复杂case自动转人工复核队列,这是最后的防线。
这里有个延伸点,我其实更倾向用 Self-RAG 这类方案,让模型在生成时自己反思检索结果够不够用,而不是靠外部规则硬切。但这会带来额外的计算开销和延迟,所以落地时得权衡。
整体协同举个例子,医疗问诊场景:用户描述症状,先做NER抽实体,然后图谱召回相似病例,同时向量召回诊疗规范,精排后生成初步分析,置信度评估后决定是直接输出还是追问或转人工。我最后会看三个指标:事实准确率95%以上、引用完整率90%以上、响应时间2秒以内。达不到就调,比如延迟超了就降级为只召回权威库。所以我会把整个系统看成一个平衡工程,不是叠技术模块,而是根据业务场景做取舍。
关键一句:我更倾向用Self-RAG这类方案让模型自己反思检索结果,而不是靠外部规则硬切,但会带来额外开销和延迟。
面试官还可能这样问
- 问法 1 · 场景切入
假设我们要给三甲医院做一个智能问诊助手,医生输入症状后能快速推荐诊疗指南和相似病例。你觉得这个RAG系统该怎么搭?从数据来源到生成结果,整个链路怎么设计才靠谱?
- 问法 2 · 层层追问
你做过RAG系统吧?……如果领域换成医疗或法律,你觉得难点在哪?……比如检索时怎么保证召回的内容权威又时效?生成时怎么避免幻觉?……你会怎么设计整个架构来应对这些挑战?
- 问法 3 · 直球架构
给一个专业领域RAG系统的详细架构设计,包括数据源选择与处理、检索系统构建、生成模型优化、安全合规保障,以及各模块如何协同。你从整体架构开始说,再展开每个部分的关键设计。