趋近智
幻觉 (hallucination)是检索增强生成(RAG)系统中的主要问题,指生成器大型语言模型(LLM)生成听起来合理但事实不正确、未被提供文档支持或完全虚构的文本。即使LLM收到了相关语境,这些不准确信息也可能发生。将这些虚构内容降到最低,对于优先考虑准确性和可信赖性的生产RAG系统而言,是一项重大的工程挑战。检测和减轻此类不准确信息的策略将得到审视,旨在确保RAG系统输出始终以检索到的证据为依据。
RAG输出中的幻觉并非源于单一原因;它们通常是多种因素综合作用的结果:
temperature),会增加幻觉的可能性。LLM可能会生成在上下文中补充的细节。有效解决幻觉问题需要多方面的方法,针对RAG流程中这些不同的原因进行处理。
减少幻觉的策略包括在提示工程 (prompt engineering)阶段、模型微调 (fine-tuning)、生成后验证以及生成参数 (parameter)的审慎选择中进行干预。
您通过提示指导LLM的方式,是控制其输出的一种直接且有效手段。为最大限度减少幻觉:
System: 您是一个乐于助人的助手。请仅根据提供的上下文文档回答用户的问题。如果信息不在上下文中,请说明“我无法根据提供的文档回答此问题。”不要添加上下文中未明确说明的任何信息。
Context:
<retrieved_document_1_content>
<retrieved_document_2_content>
User: <user_question>
Assistant:
System: ... 对于您回答中的每个事实陈述,请引用信息来源的文档ID(例如,[Doc1]、[Doc2])。
Context:
[Doc1] Alpha项目的截止日期是8月15日。
[Doc2] 所有团队成员必须在周五前提交进度报告。
User: Alpha项目何时到期,周五前需要完成什么?
Assistant: Alpha项目截止日期是8月15日 [Doc1]。团队成员必须在周五前提交进度报告 [Doc2]。
System: ... 首先,识别并列出所有与回答问题相关的上下文句子。然后,仅根据这些提取的句子合成答案。
Context: <文档>
User: <问题>
Assistant:
Relevant sentences:
1. <sentence_A_from_context>
2. <sentence_B_from_context>
Answer: <synthesized_answer_based_on_A_and_B>
虽然通用LLM功能强大,但在特定领域或特定任务数据上对其进行微调可以大幅提高其在RAG框架内生成事实一致响应的能力。
期望答案严格来源于上下文。在此类数据集上微调LLM,可以使其学会优先考虑所提供的证据。即使经过精心的提示和微调,幻觉仍可能发生。在生成后实施验证步骤可以捕获这些错误。
利用自然语言推断 (NLI) 进行事实验证: NLI 模型经过训练,用于判断前提与假设之间的关系(蕴含、矛盾或中立)。在RAG中,检索到的上下文(或其中相关片段)可作为前提,生成答案中的一个句子可作为假设。
图示了基于NLI的RAG输出后置验证流程。
查询上下文以进行确认: 一种更简单的方法是根据生成的陈述提出问题,并再次查询原始上下文(可能使用不同的、更简单的LLM,甚至是关键词搜索)以查看其是否可以被确认。
使用LLM作为验证器: 一个单独的、可能更强大或经过特定提示的LLM,可用于评估主生成器输出与所提供上下文的一致性。例如,您可以向GPT-4这样的模型提示:“给定以下上下文和响应,响应是否包含上下文中不存在的任何信息?请识别任何此类陈述。”
{
"model": "gpt-4",
"messages": [
{"role": "system", "content": "您是一名专业的事实核查员。您的任务是确定“响应”是否包含“上下文”中未明确支持的任何信息或主张。如果响应中的所有信息都得到上下文的支持,则回答“忠实”。否则,回答“不忠实”并列出未得到支持的具体主张。"},
{"role": "user", "content": "上下文:白天天空因瑞利散射而呈蓝色。夜晚,它显得黑暗。\n响应:天空因瑞利散射而呈蓝色,有时白天也能看到月亮。"}
]
}
在此示例中,验证器LLM应将“有时白天也能看到月亮”识别为不忠实,因为它不在上下文中。
LLM的生成过程可以调整以偏向事实性:
temperature(例如,降至0.0或0.2)会使输出更具确定性且随机性更小,从而减少虚构内容的出现。top_p值(例如0.9)会有帮助,但过高的值可能会允许采样更多样化且可能缺乏依据的词元 (token)。请注意,过于严格的设置可能导致平淡或过于简洁的响应。这是在创造性/流畅性与事实性之间的一种平衡。
如果知识库的某些部分可以表示为结构化数据(例如,在知识图谱中),RAG系统可以被设计为查询这些结构化数据以获取精确事实。当答案组件可以从知识图谱中获取时,它本身比自由形式的文本生成更不容易出现LLM幻觉。LLM随后可以负责将这些检索到的事实表述出来。
例如,如果问题是“X公司是何时成立的?”,直接从知识图谱元组(CompanyX, foundedDate, YYYY-MM-DD)中检索此信息比要求LLM从长篇文档中查找和解析它更可靠。
没有任何系统一开始就是完美的。实施反馈循环是必要的:
重要的是要认识到,激进的幻觉 (hallucination)减轻措施有时会付出代价。例如:
可接受的幻觉水平以及您愿意做出的权衡将取决于您的具体应用。对于医疗或金融咨询的RAG系统,对幻觉的容忍度接近于零。对于更具自由度或风险较低的应用,某些程度的不完美可能是可接受的,以换取更流畅或更全面的答案。
通过系统地应用这些策略,您可以大大减少幻觉的发生率,从而使RAG系统更加可信和可靠,适合生产部署。这种方法通常是分层防御,将主动措施(提示、微调 (fine-tuning))与被动措施(验证)相结合。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•