AI 模型与平台

深入探索大型语言模型中的检索增强生成

mm
将 Unite.AI 添加到您在 Google 上的首选来源

想象一下,你是一名分析师,并且你有机会使用大型语言模型。你对它带来的前景感到兴奋。但是,当你询问它关于最新的股票价格或当前的通货膨胀率时,它会回答你说:

“抱歉,我无法提供实时或截止日期后的数据。我的最后一次训练数据仅限于2022年1月。”

大型语言模型尽管具有强大的语言能力,但缺乏对“现在”的理解。在快速变化的世界中,“现在”是最重要的。

研究表明,大型预训练语言模型(LLM)也是事实知识的仓库。它们被训练了大量的数据,因此吸收了很多事实和数字。当微调后,它们可以在各种NLP任务中取得显著的成果。

但是,这里有一个问题:它们访问和操作存储知识的能力有时不完善。特别是在知识密集型任务中,这些模型可能会落后于更专业的架构。就像拥有一个包含所有书籍的图书馆,但没有目录来找到你需要的东西。

OpenAI的ChatGPT获得了浏览升级

OpenAI最近宣布ChatGPT具有浏览功能,这是检索增强生成(RAG)的一个重大进步。通过ChatGPT现在可以在互联网上搜索当前和权威的信息,它反映了RAG方法的动态数据拉取,以提供丰富的响应。

https://twitter.com/OpenAI/status/1707077710047216095

目前,该功能仅适用于Plus和企业用户,OpenAI计划很快将其推广到所有用户。用户可以通过在GPT-4选项下选择“使用Bing浏览”来激活此功能。

Chatgpt新的浏览功能

Chatgpt新的浏览功能

提示工程是有效的,但不够

提示是LLM知识的入口。它们引导模型,提供响应的方向。然而,制作一个有效的提示并不是从LLM中获得你想要的东西的完整解决方案。让我们来看看一些提示工程的好实践:

  1. 清晰度:一个明确定义的提示消除了歧义。它应该直接,确保模型理解用户的意图。这种清晰度通常转化为更连贯和相关的响应。
  2. 上下文:特别是对于广泛的输入,指令的位置会影响输出。例如,将指令移到长提示的末尾通常会产生更好的结果。
  3. 指令的精确性:问题的力量,通常通过“谁,什么,哪里,何时,为什么,怎么”框架传达,指导模型朝着更集中的响应。另外,指定所需的输出格式或大小可以进一步完善模型的输出。
  4. 处理不确定性:指导模型如何在不确定时响应是至关重要的。例如,指示模型在不确定时用“我不知道”来响应,可以防止它生成不准确或“幻觉”的响应。
  5. 一步一步的思考:对于复杂的指令,指导模型系统地思考或将任务分解为子任务,可以带来更全面的和准确的输出。

关于ChatGPT中提示工程的重要性,Unite.ai上有一篇综合文章。

生成式AI模型的挑战

提示工程涉及微调给模型的指令,以增强其性能。这是一种非常经济有效的方式来提高生成式AI应用的准确性,仅需要进行一些小的代码调整。虽然提示工程可以显著提高输出,但了解大型语言模型(LLM)的固有局限性至关重要。两个主要的挑战是“幻觉”和“知识截止”。

  • 幻觉:这指的是模型自信地返回一个不正确或虚构的响应。尽管高级LLM有内置的机制来识别和避免此类输出。
LLM中的幻觉

LLM中的幻觉

  • 知识截止:每个LLM模型都有一个训练截止日期,此后它将不知道事件或发展。这种限制意味着模型的知识在其最后一次训练日期时就被冻结。例如,一个训练到2022年的模型将不知道2023年的事件。
LLM中的知识截止

LLM中的知识截止

检索增强生成(RAG)为这些挑战提供了一个解决方案。它允许模型访问外部信息,减轻幻觉问题,并提供实时数据,使输出保持最新。

它还允许LLM从外部来源实时拉取数据。这可能是知识库、数据库,甚至互联网的广阔空间。

检索增强生成介绍

检索增强生成(RAG)是一个框架,而不是特定的技术,允许大型语言模型访问它们没有被训练的数据。有多种方法可以实现RAG,最佳的方法取决于您的特定任务和数据的性质。

RAG框架以结构化的方式运作:

提示输入

该过程从用户的输入或提示开始。这可能是一个问题或一个寻求特定信息的陈述。

从外部源检索

与其直接根据其训练生成响应,模型使用检索组件搜索外部数据源。这些源可以从知识库、数据库和文档存储到互联网可访问的数据。

理解检索

在其本质上,检索反映了一个搜索操作。它是关于提取最相关的信息以响应用户的输入。这个过程可以分解为两个阶段:

  1. 索引:这是检索增强生成旅程中最具挑战性的部分,即索引您的知识库。索引过程可以大致分为两个阶段:加载和拆分。在工具如LangChain中,这些过程被称为“加载器”和“拆分器”。加载器从各种源(如网页或PDF)获取内容。一旦获取,拆分器将此内容分成小块,优化它们以进行嵌入和搜索。
  2. 查询:这是根据搜索词提取最相关的知识片段的行为。

虽然有多种方法可以进行检索,但现代检索增强生成(RAG)系统依赖于语义搜索。在语义搜索的核心是嵌入的概念。

嵌入对于大型语言模型(LLM)理解语言至关重要。当人类试图阐明他们如何从单词中推导出意义时,解释通常会回到固有的理解。深入我们的认知结构,我们认识到“孩子”和“小孩”是同义词,或者“红色”和“绿色”都表示颜色。

增强提示

检索到的信息然后与原始提示结合,创建一个增强或扩展的提示。这个增强的提示为模型提供了额外的上下文,这在数据是特定领域或不是模型原始训练语料库的一部分时尤其有价值。

生成完成

拥有增强的提示后,模型然后生成一个完成或响应。这个响应不仅仅基于模型的训练,还受到检索的实时数据的影响。

检索增强生成

检索增强生成

第一个RAG LLM的架构

2020年发表的Meta研究论文《用于知识密集型NLP任务的检索增强生成》提供了对该技术的深入了解。检索增强生成模型通过外部检索或搜索机制增强了传统的生成过程。这种方法允许模型从大量数据中拉取相关信息,增强其生成上下文准确响应的能力。

以下是其工作原理:

  1. 参数记忆:这是传统的语言模型,如序列到序列模型。它已经在大量数据上进行了训练,并且知道很多东西。
  2. 非参数记忆:可以将其视为搜索引擎。它是某个数据集(例如维基百科)的密集向量索引,可以使用神经检索器访问。

当结合在一起时,这两个组件创建了一个准确的模型。RAG模型首先从其非参数记忆中检索相关信息,然后使用其参数知识来提供连贯的响应。

Meta的原始RAG模型

Meta的原始RAG模型

1. 两步过程:

RAG LLM以两步过程运行:

  • 检索:模型首先使用密集检索机制搜索大型数据集中的相关文档。这种机制使用嵌入来表示查询和文档。然后使用这些嵌入来计算相似度得分,并检索排名最高的文档。
  • 生成:拥有相关的前k个文档后,它们与初始查询一起被输入到序列到序列生成器中。然后生成器根据查询和检索的文档的上下文创建最终输出。

2. 密集检索:

传统的检索系统通常依赖于稀疏表示,如TF-IDF。然而,RAG LLM采用密集表示,其中查询和文档都被嵌入到连续的向量空间中。这使得可以进行更细致的相似度比较,捕捉到超越简单关键字匹配的语义关系。

3. 序列到序列生成:

检索到的文档作为生成模型的扩展上下文。然后,这个模型,通常基于Transformer架构,生成最终输出,确保它是连贯的和上下文相关的。

文档搜索

文档索引和检索

为了高效地检索信息,特别是来自大型文档,数据通常存储在向量数据库中。每个数据或文档根据其内容的语义本质进行索引。高效的索引确保根据输入提示快速检索相关信息。

向量数据库

向量数据库

来源:Redis

向量数据库,也被称为向量存储,是专门为存储和检索向量数据而设计的数据库。在AI和计算机科学领域,向量本质上是表示多维空间中点的数字列表。与传统数据库相比,传统数据库更适合表格数据,向量数据库在管理自然适合向量格式的数据(如AI模型的嵌入)方面表现出色。

一些值得注意的向量数据库包括Annoy、Meta的Faiss、Milvus和Pinecone。这些数据库在AI应用中至关重要,帮助完成从推荐系统到图像搜索等任务。像AWS这样的平台还提供了针对向量数据库需求的服务,例如Amazon OpenSearch Service和Amazon RDS for PostgreSQL。这些服务针对特定的用例进行了优化,确保索引和查询的高效性。

分块以实现相关性

由于许多文档可能很大,因此通常使用一种称为“分块”的技术。这涉及将大型文档分解为较小的、语义上连贯的块。然后这些块被索引和检索,如有需要,确保文档中最相关的部分用于提示增强。

上下文窗口考虑

每个LLM都在一个上下文窗口中运行,这基本上是它可以同时考虑的最大信息量。如果外部数据源提供的信息超过了这个窗口,则需要将其分解为适合模型上下文窗口的小块。

使用检索增强生成的好处

  1. 增强准确性:通过利用外部数据源,RAG LLM可以生成不仅基于其训练数据,还基于检索语料库中最相关和最新的信息的响应。
  2. 克服知识缺口:RAG有效地解决了LLM的固有知识限制,无论是由于模型的训练截止日期还是由于特定领域的数据在其训练语料库中不存在。
  3. 多功能性:RAG可以与各种外部数据源集成,从组织内部的专有数据库到公开可访问的互联网数据。这使其适用于广泛的应用和行业。
  4. 减少幻觉:LLM面临的一个挑战是“幻觉”或生成事实上不正确或虚构的信息的可能性。通过提供实时数据的上下文,RAG可以显著减少此类输出的可能性。
  5. 可扩展性:RAG LLM的一个主要优势是其可扩展性。通过分离检索和生成过程,模型可以高效地处理大量数据,使其适合于数据丰富的现实世界应用。

挑战和考虑

  • 计算开销:两步过程可能在处理大型数据集时计算量很大。
  • 数据依赖:检索到的文档的质量直接影响生成的质量。因此,拥有一个全面且精心策划的检索语料库至关重要。

结论

通过整合检索和生成过程,检索增强生成为知识密集型任务提供了一个强大的解决方案,确保输出既有信息又有上下文相关性。

RAG的真正前景在于其潜在的现实世界应用。对于医疗保健等领域,及时准确的信息至关重要,RAG提供了从大量医学文献中提取和生成见解的能力。在金融领域,市场每分钟都在变化,RAG可以提供实时数据驱动的见解,帮助做出明智的决策。此外,在学术和研究领域,学者可以利用RAG来扫描大量信息库,使文献综述和数据分析更加高效。

我已经沉浸在了令人着迷的机器学习和深度学习世界中五年了。我的热情和专业知识让我为超过50个不同的软件工程项目做出了贡献,特别关注AI/ML。我的持续的好奇心也让我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。