大多数生产环境中的 RAG 应用都在自信地胡说八道,而这一现象却鲜有人讨论
摘要
文章指出了生产环境中 RAG 系统的一种关键故障模式:由于版本控制问题和缺乏不确定性机制,系统会生成自信但错误的回答。文章建议通过引入路由层、检索评分和幻觉检测等架构改进来缓解这些错误。
我曾与多个团队合作,将 RAG(检索增强生成)集成到内部工具、支持机器人、文档问答和合同搜索中,我发现自己不断遇到同一个问题,而这是你在跟随教程时没人会警告你的。基本的“先检索后生成”流程在演示中看起来还不错。问题清晰,文档清晰,答案清晰。然而,当真实用户出现时,情况就变了。让我头疼的故障模式是这样的:系统从同一政策文档的不同版本中提取文本块,无法识别它们来自不同版本,将它们混合在一起,然后以十足的自信返回答案。没有任何保留意见,没有“我不确定”,什么都没有。只是流畅但错误。更深层次的问题在于,标准的 RAG 没有任何不确定性机制。它检索,它生成,然后继续,无论它是精准命中还是完全捏造了一个看似合理的说法,其自信程度都相同。真正解决这个问题的方法(至少在我所处理的系统中)并不是更换模型,而是架构调整:**路由层** —— 在调用检索之前决定检索是否必要。有些问题不需要检索,强行检索只会浪费 token。**检索评分** —— 在将结果传递给模型之前评估返回的内容。如果上下文的评分较低,重新表述查询并再次尝试,而不是自信地生成垃圾内容。**幻觉检测** —— 第二次调用 LLM,同时读取生成的答案和检索到的文档,检查每一个声明是否都可以追溯。大多数团队没有这样做,而这可能是你能做出的投资回报率最高的改进。重试循环在我们的案例中尤其有帮助,因为用户提出问题的方式永远不会像你的嵌入模型期望的那样。系统默默地重新表述并重试,用户对此毫无察觉。这些都不复杂。这只是管道中的几个额外决策点。但是,如果你在生产环境中运行的是纯 RAG,并且想知道为什么用户对其失去信任,这几乎肯定就是原因。我很好奇是否有人也遇到了具体的版本控制/上下文混合问题,这个问题似乎被严重低估了。
相似文章
记录了不断破坏我的RAG系统的故障模式:分块、过期索引、混合搜索等
一位开发者分享了调试RAG系统时遇到的故障模式,包括分块、过期索引和混合搜索的问题,以及滑动窗口分块和上下文检索等实用修复方法。
RAG 幻觉烦得要命
团队发现 80% 的 RAG 幻觉是由检索不佳导致的,而非生成模型的问题,强调需要分别评估检索与生成环节,才能有效调试错误答案。
预算约束下RAG系统中的事实错误诊断与修复
本文提出D2R-RAG,一个模型无关且资源感知的框架,在延迟和VRAM约束下诊断和修复RAG系统中的事实错误,在FEVER和HotpotQA上实现了更好的准确性与效率权衡。
"大多数 RAG 基准测试对真实世界的语料库存在误导" 来自3个生产网站的测试数据。
本文认为,大多数 RAG 基准测试具有误导性,因为它们假设语料库质量均匀,而真实世界的语料库在内容密度上差异很大。利用来自三个生产网站的数据,本文展示了一种分层方法和“产出分数”可以更好地预测检索效果。
@LearnWithBrij:别再像2022年那样构建RAG了。分块→嵌入→检索→生成 这条流水线能用……直到你尝试上线……
一个帖子解释了构建生产级RAG超越简单分块-嵌入-检索-生成所需的四个关键层次:智能查询路由、高级索引、多类型检索和持续评估。