在与大型语言模型(LLM)打交道时,“幻觉”是一个普遍且棘手的问题。它主要带来两方面的挑战:首先,显而易见的是,模型产生幻觉会导致用户获得不准确甚至错误的回答;其次,也是更严重的一点,幻觉会严重损害用户对系统的信任。如果用户无法相信您的问答系统能够提供可靠的信息,那么维持他们在平台上的活跃度将变得异常困难。
目录
为何需要最大程度减少幻觉?
当客户考虑利用大型语言模型(LLM)解决实际问题时,首先浮现在脑海的往往就是“幻觉”现象。他们普遍听说LLM有时会输出不真实,或者至少是无法完全信任的回答。不幸的是,这种担忧通常是合理的,因此,在您的问答系统中采取措施最大程度地减少幻觉至关重要。本文将重点讨论问答系统中的幻觉问题,但所有提及的技术同样适用于其他LLM应用,例如:
- 分类任务
- 信息提取
- 自动化流程
本文将深入探讨可用于减轻幻觉影响的实用技术,无论是从源头上预防幻觉发生,还是在幻觉发生后将其造成的损害降到最低。例如,当用户经历一次幻觉后,系统信任度下降就是一种显而易见的损害。
防范幻觉的策略
本节将分为两个子部分:
- 直接降低LLM产生幻觉数量的技术
- 减轻幻觉危害的技术
这种划分旨在提供一个清晰的概览,帮助开发者利用不同策略来最大程度地减少幻觉的影响。您可以尝试从根本上预防幻觉的发生(第一类技术),尽管要达到100%的准确性几乎不可能;或者,在幻觉一旦发生时,采取措施减轻其造成的损害(第二类技术)。
降低幻觉的发生频率
在本子部分,将涵盖以下技术:
- 验证步骤(LLM裁判)
- RAG优化
- 优化系统提示词
LLM裁判验证
首先介绍的技术是利用LLM作为裁判来验证LLM的响应。此技术基于以下概念:
验证一个响应通常比生成响应更简单
这个概念在数学问题中更容易理解:找到一个解决方案往往非常困难,但验证该解决方案是否正确则要简单得多。同样,这个概念也适用于问答系统。
为了生成响应,LLM需要阅读大量文本并解释用户的提问。然后,LLM必须根据所提供的上下文生成一个合适的响应。然而,验证答案通常更容易,因为LLM验证器只需要判断最终响应在给定问题和上下文的情况下是否合理。关于LLM验证的更多信息,可以在相关文章中找到,例如关于大规模LLM输出验证的讨论。
RAG优化
对RAG(检索增强生成)管道进行大量改进,也可以有效预防幻觉。第一步是获取正确的文档。最近有文章探讨了这一过程,提供了增加RAG检索文档的精确度和召回率的技术。主要方法包括通过重排序和LLM验证等技术过滤掉可能不相关的文档(提高精确度),以及通过上下文检索和获取更多文档块来确保包含相关文档(提高召回率)。

此图展示了一个传统的RAG管道:用户输入查询,系统嵌入该查询并通过嵌入相似性找到语义最相似的文档。这些文档随后被馈送给LLM,LLM根据所提供的文档为用户的查询提供答案。图片由原作者提供。
优化系统提示词
另一种可以降低幻觉数量的技术是改进系统提示词。Anthropic最近发表了一篇关于为AI代理编写工具的文章,其中强调了他们如何使用Claude Code来优化提示词。建议采用类似的方法,将所有提示词通过LLM进行处理,要求LLM全面改进提示词,并指出提示词成功和失败的案例。
此外,在提示词中应包含一句话,强调LLM只能利用提供的参考信息来回答用户问题。这样做的目的是防止模型基于其预训练知识生成信息,而是仅利用提供的上下文。
prompt = f"""
您应该只根据以下文档中提供的信息来回应用户的问题。
文档:{documents}
用户问题:{question}
"""
这将大幅减少LLM基于预训练知识进行响应的频率,而预训练知识正是LLM产生幻觉的常见来源。
减轻幻觉造成的损害
在上一子部分中,讨论了预防幻觉发生的技术。然而,LLM有时仍会产生幻觉,因此需要采取措施来减轻损害。在本子部分中,将涵盖以下有助于最大程度减少幻觉影响的技术:
- 引用来源
- 帮助用户高效利用系统
引用来源
一项强大的技术是让LLM在提供答案时引用其来源。例如,当向ChatGPT提问并要求其基于互联网内容回答问题时,ChatGPT在响应文本之后会提供一个指向答案来源网站的引用链接。
对于RAG系统,也可以采用同样的方法,无论是在回答问题时实时引用,还是在后处理阶段进行。要实现实时引用,例如可以为每个文档块分配唯一的ID,并要求LLM引用其用于生成答案的文档块。如果需要更高质量的引用,可以在后处理中完成,相关指南可以在Anthropic文档中找到。
引导用户高效使用
还需要强调的是,应当指导用户高效地利用应用程序。作为RAG问答系统的创建者,系统开发者准确了解其优势和劣势。也许系统在回答某一类问题时表现出色,但在处理其他类型问题时则表现较差。
当出现这种情况(这通常很常见)时,强烈建议提前告知用户。有人可能会认为不应让用户知道系统的弱点。然而,更好的做法是事先告知用户这些弱点,而不是让用户通过幻觉等方式亲身体验到这些不足。
因此,问答系统周围应有信息文本或一个新手引导流程,告知用户:
- 模型表现良好,但偶尔可能出错。
- 模型擅长回答哪些类型的问题,以及哪些类型的问题正在努力改进中。
总结
本文讨论了大型语言模型中的幻觉问题。幻觉是一个普遍存在且许多用户都意识到的重大问题。因此,有必要采取多项具体措施来减轻幻觉的影响。文章涵盖了从根本上减少幻觉发生的技术,例如改进RAG文档检索、优化系统提示词以及LLM验证。此外,还讨论了如何在幻觉发生后最大程度地减少其损害,例如通过提供来源引用和引导用户高效使用应用程序。
