如何减少大模型回答的虚假信息试试这个方法降低幻觉

Posted by 活水智能 on June 19, 2024 · 1 min read

来源:knime.com

编译:活水智能

AI产生幻觉是指大型语言模型(以下简称“LLM”)虚假、误导或无关的答案。这是我们在使用AI过程中,经常遇到的情况。比如,大模型生成虚假的新闻信息。

这是因为大模型缺乏相关训练数据或者误解训练数据。

AI幻觉的问题是,它们生成的信息,连贯、可信且有说服力,很容易让人信以为真。如果这些信息被用于关键决策(例如保险公司评估风险、分配或拒绝消费者贷款等),危险性非常大。

如果模型提供商定期用新数据重新训练模型,提高生成输出的准确性,并提供滚动更新版本,LLM出现幻觉的可能性会降低。

但是频繁重新训练模型常常因为时间、人力和金钱的成本并不可行。例如,OpenAI的ChatGPT(免费版)知识更新到2023年4月。

有没有可以减轻大模型幻觉的方法呢?

本文将首先简要介绍大模型可能出现的幻觉类型。接下来,深入探讨检索增强生成(RAG)的概念,这是一种无需重新训练模型就能减少AI幻觉的方法。

这部分知识我们在AI线下工作坊二期进行了深入讲解。

幻觉的类型

大模型中的幻觉有多种形式,有些容易检测到,有些则较难。我们可以通过对幻觉进行分类,根据其检测难度来组织,从而应对这些限制。

通过了解大模型偏离预期输出的不同方式,克服其局限性。

常见的幻觉类型包括:

  • 无意义输出 :LLM生成的响应缺乏逻辑一致性、可理解性或内容合理性。这种幻觉使LLM无用。

  • 无关或随机输出 :LLM生成的输出与输入毫无关系。这种幻觉削弱了LLM生成文本的实用性。

  • 提示矛盾 :LLM生成的响应与用于生成它的提示矛盾,令人质疑其可靠性和对预期意义或背景的遵从性。

  • 句子矛盾 :这种幻觉类似于前一种,但它在同一响应中与之前的陈述矛盾,引入了破坏内容整体连贯性的矛盾。

  • 事实矛盾 :这种幻觉导致生成虚构、不准确和误导性的陈述,并以事实的形式呈现。作为可靠信息呈现的事实矛盾有深远影响,因为它们助长了错误信息的传播,削弱了LLM生成内容的可信度。

需要注意的是,一种幻觉的存在并不排除其他类型共现的可能性。同样,严重类型的存在也不一定意味着较轻类型的共现。

用RAG减轻幻觉

为了解决这些不同类型的幻觉,一种被研究人员观察到既有效又易于实施的策略是检索增强生成(RAG)。

检索增强生成(RAG)是通过通过从知识库(如你独有的资料😄)中检索相关信息,增强响应生成的技术。

RAG可以用于为特定应用自定义LLM响应,显著减轻幻觉和不实陈述的风险。

RAG的工作原理

假设用户希望通过LLM了解上一届世界杯的冠军。

根据模型的最新知识,可能会指出缺乏该信息,或者更糟糕的是,即使没有重新训练,模型也会产生虚假或误导性的陈述。

RAG过程包括三个关键步骤。

第一步:检索

这一步涉及根据用户输入提示从知识源中检索相关信息。

换句话说,这意味着查询一个特定领域的数据库,根据输入查询的相似性(从最相似到最不相似)返回相关结果。

例如,一个想知道上一届世界杯冠军的用户可以查询包含足球队和比赛信息的知识库,并检索最相似的比赛信息。

第二步:增强

在这里,输入查询会被检索到的信息增强。如果回到足球的例子,用户的初始查询“谁赢得了世界杯?”会在提示LLM生成响应之前,被增强为“阿根廷赢得了世界杯”。

这一步增强了LLM对用户请求的理解。

第三步:生成

最后一步包括基于增强后的输入生成更有信息量和上下文丰富的响应,并利用模型的生成能力。

在足球的例子中,这意味着模型会基于增强后的提示生成一个类似人类的响应。

这最后一步使LLM生成的响应根植于检索到的额外上下文,从而减轻输出中的幻觉风险。

如何设计一个有效的RAG

基于RAG的原理,我们可以尝试优化RAG。我们需要四个关键组件。

1、提示词: 最佳的提示工程实践能最大限度地提高获取准确、相关和连贯的LLM响应的可能性。

2、知识库: 用户管理的特定领域的资源库(如词典、文本文档、指南、代码、图片、视频等)。

3、嵌入模型: 一个设计用于创建用户提示和知识库资源在高维空间中的向量表示的模型。嵌入能够有效捕捉对象和实体的句法和语义关系(如文档中的词和短语)。

具有相似含义或在类似上下文中使用的对象,其向量表示在向量空间中会更接近。利用嵌入可以识别用户提示和知识库资源之间的语义相似性并进行检索。

4、向量存储: 与传统数据库通常以行和列组织不同,向量数据库专门用于在多维空间中存储和管理对象的向量表示。

其结构允许快速有效地查找与特定对象相关的向量,便于检索。

有了这四个组件,让我们看看它们如何交互:

第一步:加载源数据。 这个步骤从导入、转换、清理和处理用户管理的特定领域知识库开始。接下来,创建知识库资源的嵌入并加载到向量存储中(如Chroma或FAISS)。

第二步:查询向量存储: 用户通过提示查询向量存储。为了有效处理查询,需要它的向量表示。

第三步:检索“最相似”: 利用知识库资源和用户提示的嵌入,识别对象之间的关系和相似性。最终,向量存储检索出与用户提示最相似的资源。

降低大模型的幻觉

那么,如果你想提高大模型在回答个人知识库中的准确性,可以怎么做呢?

你可以优化提示词、提高知识库中的数据质量、选择恰当的潜入模型、设置好相似性相关参数。

比如,优化提示词。

在检索阶段,可能会返回空结果或需要进一步澄清的结果,尽管用户尽最大努力创建了一个管理良好的知识库。这可能导致LLM为了生成答案,胡说八道。

在返回空结果或模糊结果的情况下,可以通过提示工程指示模型回答基于事实和知识库中的数据。

其次是,优化知识库。包括更细致的资源也可能提高准确性。

一个更昂贵的解决方案是对检索数据进行注释,对于给定的“查询-文档”对,确定文档是否与查询相关。

有了注释的检索数据,就可以制定定量指标来评估检索器的好坏并针对性调整。

需要注意的是,随着技术发展,大模型的能力越来越强。对个人而言,我们更应该积累个人数据。

推荐阅读

AI 如何变身知识侦探?人人都能懂的 RAG 科普

RAG系统是如何工作?附图及运用场景

提示工程 vs 微调 vs RAG?终于讲明白了