这道题问的其实不是怎么搭一个[[RAG]]流水线,而是在专业领域里,怎么让模型既懂行又不敢乱说。医疗法律这种场景,胡说八道代价太大,所以核心不是模型多聪明,而是怎么把知识库、检索、生成和人工审核串起来,让系统知道什么时候该答、什么时候该说不知道。
先说边界。很多人一上来就想微调模型,但微调适合把领域风格或固定话术刻进去,不适合管理频繁更新的法规或指南。RAG正好补这块,知识变了你换文档就行,不用重新训练。检索也一样,纯关键词([[BM25]])匹配快但漏同义词,纯向量能理解语义但容易召回无关内容。所以我会**[[Hybrid Search]]**,把关键词和向量两条路结合起来,再加一层[[重排]],把高置信度的结果顶上去。
具体到业务,拿医疗场景举例。假设做一个辅助诊断的问答助手,知识库里得有临床指南、药品说明书、最新专家共识,还得按效力层级排:国家指南优先于地方共识,最新版本优先于旧版。检索时用户说“心梗”,你得自动扩成“心肌梗死”“急性冠脉综合征”,这是查询改写。召回后不是一股脑全塞给模型,得按相关性和时效性排序,控制token预算,并且强制模型输出引用标记,比如[来源:2024年ESC指南第3条]。如果检索置信度低于阈值,直接告诉用户“没找到权威依据”,绝不瞎编,这是拒绝机制。
这里有个坑,就是知识冲突。比如不同指南对同一病症的推荐方案不一样。我的做法是按效力层级取最新的,同时把差异并列展示给用户,让他自己选,而不是模型替用户做决定。还有模糊查询,用户说“我胸痛”,你不能直接给诊断,得先问清楚症状细节,再指向可能的检查和科室,这是意图澄清。
落地风险我特别关注两点。一是事实校验,模型生成的关键断言,比如“某药禁忌症是肝功能不全”,我会用[[NER]]提取出来,反向去知识库验证,如果对不上就标记并触发人工审核。二是高风险场景必须有人兜底,比如用药建议或法律意见,系统直接弹窗说“这是参考,请咨询医生/律师”,并且所有生成结果都留日志,方便追溯。
还有一个延伸点:反馈闭环。用户标记了错误答案,系统不能只记一笔,得自动归因到具体文档片段,是检索没召回对的,还是生成时引用了错的,或者知识库本身过时了。这其实引出一个更深的问题:怎么自动化地判断错误是检索问题还是生成问题,进而触发知识库更新?这涉及到[[Faithfulness]]评估和[[Corrective RAG]]的思路。
所以整体上,我更倾向把专业领域RAG看成一个知识管理工程,而不是模型优化工程。核心不只在算法,更在数据质量、分层索引、引用可信度和人工审核闭环。如果只让我设计一个最小可行系统,我会先保证检索召回率和引用可溯源,其他花哨功能往后放。