LLM 在接收正确与不正确上下文时的行为差异 当语言模型(LLM)接收到正确的检索上下文时,它通常会生成准确、具体且与上下文相关的响应。例如,如果上下文包含技术概念的精确定义(例如,“Python 的 sorted()
函数返回一个新的列表”),模型可以自信地通过引用正确的细节来回答相关问题(“sorted()
与 list.sort()
有何不同?”)。其输出与提供的信息一致,避免矛盾。然而,当上下文不正确或不相关时——例如,一个误导性的关于 sorted()
的解释,声称它会修改原始列表——LLM 可能会传播该错误,或产生模糊、矛盾或偏离主题的响应。例如,它可能会错误地指出 sorted()
具有副作用,即使其内部知识与有缺陷的上下文相悖。不相关的上下文(例如,不相关的代码片段)可能导致模型忽略输入或混淆不相关的想法,从而降低答案质量。
评估对噪声检索的鲁棒性 为了评估 LLM 处理噪声上下文的能力,开发者可以设计测试,向检索流水线中注入受控噪声。一种方法是创建基准,针对相同的查询系统性地提供正确、不正确和不相关的上下文。例如,要求模型解释一个编程概念,同时向其提供准确文档和误导性论坛帖子的混合信息。诸如答案准确性(与真实情况对比)、上下文遵循度(响应在多大程度上依赖于提供的上下文)和矛盾率(答案与已知事实之间的冲突)等指标可以量化鲁棒性。TruthfulQA 或自定义对抗性数据集等工具可以模拟模型必须从噪声中辨别有用信息的场景。此外,通过极端情况进行压力测试——比如针对技术问题提供完全不相关的上下文——可以揭示模型是默认为其内部知识,还是变得过度依赖于有缺陷的输入。
改进的实用策略 开发者可以通过微调模型来识别和拒绝低质量上下文,从而提高鲁棒性。例如,训练 LLM 在上下文矛盾或不相关时输出“我不知道”或请求更清晰的输入,可以降低产生幻觉的风险。另一种策略是增强检索系统,增加置信度分数——将低置信度的上下文标记出来,让模型持怀疑态度处理。诸如检索增强生成(RAG)评估框架(例如 RAGAS)等工具可以同时衡量上下文相关性和答案正确性。对于实际应用测试,在应用程序中集成 A/B 测试——比较有噪声检索和无噪声检索时的输出——可以提供可行的见解。例如,如果一个代码助手在给定过时 API 文档时答案质量下降,这表明需要更好的上下文过滤或模型训练,以优先考虑经过验证的来源。