RAG evaluation

增加分层拒答能力,减少错误回答发生

一个优秀的RAG系统不仅要“答得准”,更要“知之为知之,不知为不知”。不能一本正经的胡说八道,如果是这样的话,那我和直接问豆包有啥区别? 尤其是一些专业领域、比如医疗、金融、法律等场景下,一旦回答错误,后果有可能不堪设想。 所以,在…

TL;DR

一个优秀的RAG系统不仅要“答得准”,更要“知之为知之,不知为不知”。不能一本正经的胡说八道,如果是这样的话,那我和直接问豆包有啥区别? 尤其是一些专业领域、比如医疗、金融、法律等场景下,一旦回答错误,后果有可能不堪设想。 所以,在…

一个优秀的RAG系统不仅要“答得准”,更要“知之为知之,不知为不知”。不能一本正经的胡说八道,如果是这样的话,那我和直接问豆包有啥区别? 尤其是一些专业领域、比如医疗、金融、法律等场景下,一旦回答错误,后果有可能不堪设想。 所以,在绝大多数企业级或垂直领域的RAG系统中,拒答是必须且核心的机制。甚至在RAG系统的评估体系中,还会有拒答率这样的指标。 有了拒答之后,可以提升用户对于这个系统的信任度。 大家不要以为拒答就是直接拒绝用户了,不一定的。有的时候,拒答的实现,可以通过提示词来做约束。比如: 这种就是直接告知用户无法回答。还有一种方式,那就是拒答的时候,前端可以直接转人工客服。让人工客服接管用户问题。 或者是引导用户拨打官方客服电话咨询。

提示词优化

在优化前,我们的拒答逻辑散落在提示词各处,只有两条笼统规则: - "若参考资料中无法找到相关信息,请引导用户通过正式渠道..." - "如果参考资料中没有相关信息,请直接告知用户你暂时无法回答..." 问题是,模型可能无法区分"完全无关的问题"和"领域内但资料不足的问题",容易出现: - 该拒答时不拒(对无关问题也试图回答) - 不该拒答时全拒(参考资料部分覆盖时也一刀切拒答) 于是,我们的提示词可以做如下优化。 针对 售前、投诉、维保、技术支持等场景的提示词统一引入了 ## 拒答规则(优先级从高到低) 结构化分级体系,替代了原来散落在正文中的零散拒答指令。并且建立 4~5 级优先级递减的拒答规则,每一级都有明确的判断条件和标准话术模板: | 优先级 | 规则 | 处理方式 | | --- | --- | --- | | 1 (最高) | 完全无关问题 (娱乐八卦、金融投资、编程等) | 直接拒答+声明服务范围 | | 2 | 需实时确认/人工介入的场景 | 引导到正式渠道 | | 3 | 领域相关但参考资料无覆盖 | 坦诚告知无资料+引导渠道 | | 4 | 参考资料仅部分覆盖 | 回答有据部分+补充引导 | | 5 (最低) | 严禁编造兜底 | "宁可拒答也不可杜撰" |

每个场景(售前/投诉/维保/技术支持)的拒答话术都根据业务特点做了定制化,例如: - 售前引导"到店咨询、官网预约" - 投诉引导"官方客服热线、服务站" - 技术支持引导"鸿蒙智行授权用户中心、400-008-2888" 针对【怎么给小艺改名字】这个该拒答的问题,优化后的问题的回答效果如下: 另外,针对拒答的问题,我们一般就不再去评测他的召回率、准确率这些指标了,我们一般是看拒答率。 找出那些拒答的问题,分析为什么拒答,以及如果是真的缺少资料,那就补充更多的知识进去,让他变成非拒答问题。

版本提示

模型、框架与接口会持续变化。涉及版本号、参数与生产配置时,请在实践前对照对应官方文档。

LLMentor系统化学习大模型应用工程

内容来自个人课程知识库备份,并经过结构化整理。技术版本持续演进,生产使用前请结合官方文档验证。