使用检索增强生成来减少AI幻觉

减少AI幻觉

在快速发展的人工智能领域中,大型语言模型取得了长足的进步,对我们周围的世界有着令人印象深刻的知识。然而,尽管这些智能模型非常聪明,它们经常难以识别自己知识的边界,这常常导致它们“产生幻觉”以填补空白。一种新设计的技术,称为检索增强生成(RAG),通过使提示信息与专有数据相结合,有效地增加了这些语言模型的知识,并减少了幻觉的影响。

LLM是能够理解和生成类似于人类文本的计算机模型。它们是您的数字助理、自动更正功能甚至某些电子邮件背后的人工智能。它们对世界的了解通常是巨大的,但并非完美。就像人类一样,LLM也会达到知识的极限,但与其停下来,它们往往会做出合理的猜测或“产生幻觉”来完成任务。这可能导致包含不准确或误导性信息的结果。

在一个简单的世界中,答案将是在查询时提供与模型相关的专有信息。然而,确定什么是“相关”信息并不总是直截了当的,需要理解LLM被要求完成的任务。这就是RAG发挥作用的地方。

在人工智能领域,嵌入模型就像翻译器一样。它们通过一个称为“文档编码”的过程,将文本文档转化为一系列大量的数字。这个列表代表了LLM对文档意义的内部“理解”。这一串数字被称为向量:数据属性的数值表示。每个数据点都被表示为一个带有许多数值的向量,其中每个值对应数据的特定特征或属性。

虽然一串数字对于普通人来说可能毫无意义,但这些数字在高维空间中充当坐标。就像纬度和经度可以描述物理空间中的位置一样,这一串数字描述了原始文本在语义空间中的位置,即所有可能意义的空间。

将这些数字视为坐标使我们能够度量两个文档之间的意义相似度。这个度量是它们在语义空间中各自点之间的距离。较小的距离表示更大的意义相似度,而较大的距离则意味着内容不一致。因此,可以通过在语义空间中搜索“接近”查询的文档来发现与查询相关的信息。这就是向量相似度搜索的魔力。

检索增强生成的思想

RAG是一种生成式人工智能架构,应用语义相似度自动发现与查询相关的信息。

在RAG系统中,您的文档存储在一个向量数据库(DB)中。每个文档都根据由嵌入模型生成的语义向量进行索引,以便快速查找与给定查询向量接近的文档。这基本上意味着每个文档被分配了一个数值表示(向量),表示其含义。

当查询进来时,相同的嵌入模型用于为查询生成一个语义向量。

然后,模型使用向量搜索从数据库中检索相似的文档,寻找其向量与查询向量接近的文档。

一旦检索到相关文档,查询与这些文档一起用于从模型生成响应。这样,模型不仅仅依靠自身的知识,还可以在适当的时候访问您提供的任何数据。因此,通过将存储在具备向量搜索功能的数据库中的专有数据融入,模型更能够提供更准确和上下文适宜的响应。

目前有一些所谓的“向量数据库”可供选择,包括DataStax Astra DB,其中向量搜索现已普遍可用。启用向量搜索的数据库的主要优势是速度。传统数据库必须将查询与数据库中的每个项进行比较。相比之下,集成的向量搜索实现了一种索引形式,并包括大大加速过程的搜索算法,使得能够在相同时间内搜索大量数据,而传统数据库需要更长的时间。

可以对查询编码器和结果生成器进行微调以优化性能。微调是一个将模型参数略微调整以更好地适应特定任务的过程。

RAG与Fine-Tuning的对比

Fine-Tuning对优化LLMs提供了许多好处。但它也有一些局限性。首先,它不允许动态集成新的或专有数据。模型的知识在训练后保持静态,导致在询问超出其训练集范围的数据时产生了幻觉。另一方面,RAG通过动态检索和整合来自外部数据库的最新和专有数据,减轻了幻觉问题,并提供了更具上下文准确性的回答。RAG使您能够在查询时对提供给模型的信息进行精确控制,允许根据特定用户在查询时定制提示。

RAG比Fine-Tuning在计算上更高效和灵活。Fine-Tuning需要为每个数据集更新重新训练整个模型,这是一项耗时和资源密集型的任务。相反,RAG只需要更新文档向量,使信息管理更加简单和高效。RAG的模块化方法还允许单独微调检索机制,使其能够适应不同的任务或领域而不改变基础语言模型。

RAG提升了大型语言模型的能力和准确性,使其成为Fine-Tuning的一个引人注目的替代方案。实际上,企业往往更频繁地使用RAG而不是Fine-Tuning。

通过RAG改变LLMs的角色

将RAG集成到LLMs中不仅提高了其响应的准确性,还最大限度地发挥了其潜力。该过程使LLMs能够聚焦于它们擅长的智能生成内容的能力。模型不再是唯一的信息来源,因为RAG在需要时为其提供相关的专有知识,并且可供模型访问的知识语料库可以扩展和更新,而无需进行昂贵的模型训练工作。

从本质上讲,RAG充当了一个桥梁,将LLM与超出其内部能力范围的知识库连接起来。结果,它大大减少了LLM产生“幻觉”的倾向,为用户提供了更准确和高效的模型。