跳到正文

垂直领域 RAG 完整架构

垂直领域 RAG 的数据、检索、生成、权限与评估架构

原题:请详细描述如何为专业领域(如医疗或法律)构建一个高质量的检索增强生成(RAG)系统或智能助手,涵盖架构设计、数据源选择与处理、检索系统构建、生成模型优化、安全合规保障以及多环节集成等关键方面,并结合实际应用场景说明各模块的设计考量与协同机制。

RAG基础 · 字节真题

回答与解析

一、整体架构:四层分离设计

用户层 → 网关层(权限/审计)→ 编排层(Agent/Router)→ 服务层(检索+生成+知识管理)

核心原则:检索与生成解耦、领域知识分层管理、全链路可追溯


二、数据源与知识库构建

层级 内容 处理方式 更新频率
权威库 诊疗指南/法典/药品说明书 结构化抽取+人工审核 月度
案例库 判例/病例/专家经验 向量化+元数据标注 实时
实时库 最新文献/政策/新闻 爬虫+轻量审核 小时级

关键处理

  • 医疗:ICD编码对齐、药品相互作用图谱构建
  • 法律:法条层级关系(上位法/下位法)、时效性标记

三、检索系统:多路召回+领域精排

召回阶段

  • 稠密向量(领域Embedding微调,如MedEmbed/LawEmbed)
  • 稀疏向量(BM25 + 领域同义词扩展)
  • 图谱召回(实体链接→子图遍历)

精排阶段

  • 交叉编码器(领域数据微调)
  • 时效性/权威性加权
  • 用户画像过滤(科室/执业地域)

四、生成优化:领域适配与可控性

  1. 模型选择:基座模型+领域SFT(如Huatuo/LawGPT),非从零训练
  2. Prompt工程:强制引用格式[来源:指南名称/条款编号],便于溯源
  3. 生成后处理
    • 幻觉检测:检索内容与生成的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. 问法 1 · 场景切入

    假设我们要给三甲医院做一个智能问诊助手,医生输入症状后能快速推荐诊疗指南和相似病例。你觉得这个RAG系统该怎么搭?从数据来源到生成结果,整个链路怎么设计才靠谱?

  2. 问法 2 · 层层追问

    你做过RAG系统吧?……如果领域换成医疗或法律,你觉得难点在哪?……比如检索时怎么保证召回的内容权威又时效?生成时怎么避免幻觉?……你会怎么设计整个架构来应对这些挑战?

  3. 问法 3 · 直球架构

    给一个专业领域RAG系统的详细架构设计,包括数据源选择与处理、检索系统构建、生成模型优化、安全合规保障,以及各模块如何协同。你从整体架构开始说,再展开每个部分的关键设计。

同模块相关题目