微信扫码
添加专属顾问
我要投稿
“这段代码明明是对的啊,为什么ChatGPT还给出了错误的解释?我都把相关文档放进去了!”
“用户问的是2024年的新闻,我也给了最新的新闻报道作为上下文,但模型回答的还是2022年的旧闻...”
相信做RAG应用开发的同学都遇到过类似的困扰。明明提供了相关的上下文,为什么大模型还是会产生幻觉...是大模型没有好好利用上下文,还是上下文本身就不足以回答问题?
最近Google、UCSD等机构的研究者提出了一个新的视角来看待这个问题。他们在论文《SUFFICIENT CONTEXT: A NEW LENS ON RETRIEVAL AUGMENTED GENERATION SYSTEMS》中,首次提出了“充分上下文”的概念,并基于此深入分析了RAG系统中大模型的行为表现。
论文链接:https://arxiv.org/abs/2411.06037
在传统的RAG系统中,我们往往用“相关性”来评价检索到的文档质量。比如用户问“特斯拉Model 3的价格是多少?”,检索系统可能会返回以下几种文档:
文档A:
特斯拉Model 3是一款纯电动轿车,由特斯拉公司生产,采用了最新的电池技术...
文档B:
2024年1月,特斯拉官方宣布Model 3在中国市场的官方指导价为23.59万元起...
文档C:
据悉,特斯拉计划在2024年第二季度推出Model 3的改款版本,预计将对价格进行调整...
从相关性的角度看,这三段文本都与特斯拉Model 3有关,但它们对回答价格问题的帮助程度却大不相同。文档A虽然介绍了Model 3,但完全没有价格信息;文档B给出了明确的当前价格;文档C提到了价格会调整,但没有具体数字。
研究者认为,我们需要一个更严格的标准:上下文是否“充分”支持回答问题。换句话说:如果基于给定的上下文能推理出一个合理的答案,那这个上下文就是充分的。在上面的例子中,只有文档B提供了充分的上下文。
这个概念看似简单,但实际判断起来并不容易。比如对于多跳推理类的问题:
问题:2024年特斯拉在中国的市值超过了哪家传统车企?
可能需要同时具备以下信息才算充分上下文:
特斯拉2024年在中国的市值数据
主要传统车企2024年在中国的市值数据
这些数据的对比关系
研究者基于“充分上下文”的概念,分析了各种大模型在实际场景中的表现。举个例子,假设问题是:“2024年2月举办的第96届奥斯卡最佳影片是哪部?”
场景一:提供充分上下文
第96届奥斯卡金像奖于2024年3月10日举行,电影《奥本海默》获得最佳影片奖...
场景二:提供不充分但相关的上下文
《奥本海默》《巴比》《如何优雅地炸掉一艘船》等影片入围第96届奥斯卡最佳影片奖提名...
在论文中,他们研究发现,面对这两种场景,不同类型的模型表现出明显的差异:
专有模型(如Gemini、GPT)在场景一中能准确回答“《奥本海默》”。但在场景二中,它们倾向于自信地“预测”获奖影片,而不是承认信息不足。这反映出这类模型可能过度依赖自身的预训练知识。
而开源模型(如Llama、Mistral)即使在场景一中也表现得不够稳定,有时会产生幻觉(比如说是《巴比》获奖),有时又会过于保守而拒绝回答。这说明这些模型在整合上下文信息方面还有提升空间。
在论文中,存在一个比较有趣的发现:即使在上下文不充分的情况下,模型也能在35%-62%的情况下给出正确答案。这是不是就比较unbelievable。
例如,假设问题是:“爱因斯坦是在哪个国家出生的?”,给出的上下文是:
爱因斯坦在欧洲度过了他的童年时期,后来移居美国...
这个上下文并不充分,因为没有直接说明出生地。但模型可能还是会正确回答“德国”,猜测可能的原因是:
这是一个众所周知的事实,存在于模型的预训练知识中
上下文中提到“欧洲”提供了地理范围的线索
“童年时期”暗示了这可能与出生地有关
研究者通过分析发现,模型在没有充分上下文时得到正确答案,主要有这么几种情况:
对于是非题,比如“爱因斯坦去过中国吗?”,即使上下文不充分,模型也有50%的机会猜对。
而对于简单的选择题,从有限选项中选择也会提高正确率。
更有意思的是多跳推理题。有时候上下文提供了部分关键信息,模型能够结合自身知识进行推理。比如问“谁是第一个登上月球的美国宇航员?”,即使上下文只提到“阿姆斯特朗是阿波罗11号任务的指挥官”,模型也可能通过预训练知识推断出正确答案。
在理解了大模型的行为模式后,那么,能不能进一步探索如何利用这些发现来改进RAG系统?论文的作者他们提出了一个核心问题:既然知道了上下文的充分性如此重要,那么,能否构建一个自动化的机制来判断上下文是否充分,并据此来指导模型的回答策略?这就面临下一个核心问题:如何让自动判断上下文是否充分?
这个问题看起来就毫无头绪。就像我们人类,面对同一个问题和上下文,不同的人可能会有不同的判断。比如问:“特斯拉2024年第一季度的营收是多少?”,给出上下文:
特斯拉公布2024年第一季度财报:
- 营收同比下降9%
- 毛利率为17.4%
- 交付量达到38.6万辆
有人可能认为这个上下文不充分,因为没有给出具体的营收数字。但也有人可能认为通过同比下降9%,如果知道去年同期数据,是可以算出具体数字的。
好在论文作者们没有放弃,他们搞了一些实验,得到如下的一些自动评估方法:
使用Gemini 1.5 Pro配合精心设计的提示词。这种方法在人工标注的测试集上达到了93%的准确率,显示出了最好的表现。
使用FLAMe(一个24B参数的评估模型)。虽然模型相对较小,但通过将长文本分块评估的策略,也取得了不错的效果。
使用传统的蕴含关系判断模型TRUE-NLI。这种方法的特点是需要参考标准答案,实用性相对较差。
从实验结果来看,大模型确实能够相当准确地判断上下文是否充分。这为我们构建更智能的RAG系统打开了一扇门。
上面我们提到了:模型既然在信息不充分的时候,可能回答错误。那么,顺理成章的想法就是:能否让模型在上下文不充分时,主动选择不回答问题?
这个想法听起来很自然,但实现起来好像并不容易。因为如前所述,即使在上下文不充分的情况下,模型有时也能给出正确答案。如果简单地让模型在上下文不充分时都拒绝回答,反而会损失这部分正确答案。
为了能够达到这个目的,论文作者们设计了一个方案计算如下的两个结果:
上下文是否充分的判断结果
模型对自己答案的确信度评分
也就是说,对于每个问题,他们会:
用FLAMe模型判断上下文是否充分
让主模型生成答案和确信度
将这两个信号输入到一个简单的逻辑回归模型中
根据逻辑回归的预测分数决定是否输出答案
这个方案的高明之处在于:它不是简单地依据单一因素做决定,而是学习了在什么情况下模型更容易给出正确答案。比如,即使上下文不充分,如果模型的确信度特别高,可能也值得冒险输出答案。
论文中的实验结果显示,这种方法能在保持一定回答覆盖率的同时,将正确答案的比例提高2-10%。这个提升看似不大,但考虑到基线系统已经相当强大,这样的改进仍然很有意义。
除了在推理阶段加入控制机制,作者也尝试了另一个直观的想法:能否通过微调让模型天生就更懂得在上下文不充分时保持谨慎?
他们设计了三种训练数据混合策略:
保持原始答案不变
随机选择20%的样本,将答案改为“不知道”
选择20%上下文不充分的样本,将答案改为“不知道”
然而,实验结果有出人意料了。虽然微调后的模型确实会更多地说“不知道”,但这似乎是以牺牲某些场景下的表现为代价的。比如,有些原本能正确回答的问题,现在模型反而选择了放弃。从这里我们可以看出:模型行为的改进并不是简单的“多说不知道”就行了,而是需要在各种场景下都保持合理的判断。
这项工作不仅能让我们更好地理解RAG系统中的行为模式,也给改进RAG系统提供了一些新的思路:
在构建RAG系统时,除了关注检索的相关性,还应该评估上下文是否充分。可以考虑:
使用自动评估工具(如FLAMe)判断上下文充分性
在检索时增加迭代策略,当上下文不充分时尝试检索更多信息
设计更好的提示词,引导模型在上下文不充分时主动说“不知道”
在评估RAG系统时,应该分层次看待性能:
上下文充分时的表现
上下文不充分时是否能合理拒答
即使上下文不充分,利用预训练知识作答的准确率
选择合适的基座模型:
如果任务要求高准确率,专有模型在有充分上下文时表现更好
如果希望模型在信息不足时更谨慎,可能需要额外的机制来约束模型行为
还记得文章开头我们提到的困扰吗?“明明提供了相关上下文,为什么模型还是会出错”。通过这篇论文,我们似乎找到了一些答案:上下文不只是要相关,还要充分;模型不只是要会用上下文,还要懂得合理取舍。
就像我们人类在回答问题时,有时会说“让我查查资料”,有时会说“这个我知道”,有时会说“抱歉,我没有足够的信息来回答”。
那 RAG 系统能否更加智能一点呢?想象一下,如果你的大模型不只会判断手上的资料够不够用,还能主动告诉你:“这个问题要回答准确的话,我还需要知道XX和YY”,是不是会更贴心?或者更进一步,它能说:“基于目前的信息我只能给出一个大致的答案,如果你需要更准确的信息,我建议查看最新的XX”,这样的体验是不是会更好?
如果要实现这些yy 的功能,需要我们在“充分上下文”的基础上继续探索。比如:
在检索阶段,不只是找相关的文档,而是要理解问题需要哪些具体信息点,有针对性地进行检索。
在回答阶段,不只是决定说还是不说,而是要能够进行信息完整性的评估,给出恰当的限定语和建议。
在交互阶段,不只是被动地接受上下文,而是要能主动询问,逐步完善必要的信息。
期待 RAG 系统在智能化的道路上更进一步...
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-19
基于Embedding分块 - 文本分块(Text Splitting),RAG不可缺失的重要环节
2025-04-19
RAG升级-基于知识图谱+deepseek打造强大的个人知识库问答机器人
2025-04-19
RAG vs. CAG vs. Fine-Tuning:如何为你的大语言模型选择最合适的“脑力升级”?
2025-04-19
低代码 RAG 只是信息搬运工,Graph RAG 让 AI 具备垂直深度推理能力!
2025-04-18
微软PIKE-RAG全面解析:解锁工业级应用领域知识理解与推理
2025-04-18
AI 记忆不等于 RAG:对话式 AI 为何需要超越检索增强
2025-04-18
Firecrawl:颠覆传统爬虫的AI黑科技,如何为LLM时代赋能
2025-04-18
什么是RAG与为什么要RAG?
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-04-19
2025-04-18
2025-04-16
2025-04-14
2025-04-13
2025-04-11
2025-04-09
2025-04-07