你的RAG因为垃圾检索而出现幻觉——这里有3行代码的修复方案(附真实得分)
摘要
针对噪声检索导致的RAG幻觉问题的实用修复方案:使用交叉编码器重新排序,过滤掉得分低于1.5的文本块,平均相关性从-0.28提升至+3.80。
我的RAG代理出现了幻觉。不是因为LLM不好——而是因为检索系统给它喂了噪声。查询:"什么是Python装饰器?" 我的检索器在修复前返回的内容:
| 排名 | 得分 | 内容 | 是否相关? |
|---|---|---|---|
| 1 | +5.80 | 装饰器定义 | 是 |
| 2 | +1.40 | 致谢页面 | 否 |
| 3 | +1.13 | u/staticmethod示例 | 是 |
| 4 | -4.69 | 类练习 | 否 |
| 5 | -11.0 | Monty Python引用 | 否 |
LLM接收了全部5个文本块。它之所以产生幻觉,是因为它相信了噪声。修复方案——交叉编码器重新排序(3行代码):
scores = cross_encoder.score(pairs)
ranked = sorted(zip(scores, candidates), reverse=True)
filtered = [doc for score, doc in ranked if score > 1.5]
修复后:只有得分超过1.5的文本块才能到达LLM。整体结果(10次查询):平均相关性从-0.28提升至+3.80。胜率80%。模型:cross-encoder/ms-marco-MiniLM-L-6-v2(免费,本地,HuggingFace)。如果你的聊天机器人出现幻觉,检查你的检索系统,不要先责怪LLM。你的重排序器使用的阈值是多少?
相似文章
RAG 幻觉烦得要命
团队发现 80% 的 RAG 幻觉是由检索不佳导致的,而非生成模型的问题,强调需要分别评估检索与生成环节,才能有效调试错误答案。
@h100envy:这篇论文彻底改变了我对 RAG 中信任检索的看法:获取文档 -> 评估质量 -> 得…
本文提出了一种5步蓝图,通过使用轻量级检索评估器来提高 RAG 中的信任度。该评估器对文档质量进行评分,并触发(正确、错误、模糊)三种动作来处理检索失败,具有即插即用的集成特性。
RAGless:基于分数聚合的Q-Q检索,用于封闭域FAQ [P]
RAGless 是一种语义检索系统,它将用户问题与预生成的问题变体进行匹配,适用于封闭域 FAQ,省去了标准 RAG 中的 LLM 生成步骤,从而提高了精确度。
RAGognizer:通过检测头集成实现幻觉感知微调
RAGognizer 提出了一种幻觉感知微调方法,该方法将轻量级检测头集成到大语言模型(LLMs)中,以实现语言建模与幻觉检测的联合优化,适用于 RAG 系统。论文介绍了 RAGognize,一个包含自然发生的闭域幻觉及其词元级标注的数据集,并展示了在降低幻觉率的同时,实现了最先进的幻觉检测性能,且不损害语言质量。
我见到的大多数智能体RAG问题都是检索问题,而非模型问题
作者认为大多数智能体RAG失败源于检索问题——具体包括分块错误、缺乏新鲜度信号以及依赖纯向量搜索——而非大语言模型本身,并建议采用结构化分块、基于衰减的排序以及BM25+向量的混合搜索。