大型语言模型是一种旨在理解和生成人类语言的人工智能。它处理海量文本数据,学习模式和结构以执行翻译、摘要和文本生成等任务。这些模型基于先进的算法构建,可以处理复杂的语言任务,使其在聊天机器人、虚拟助手和内容创建等应用中非常有用。
RAG 旨在解决传统语言模型的局限性,这些模型仅根据接收到的输入和训练数据生成响应。虽然这些模型在许多场景下有效,但在需要特定事实知识或引用多个信息源的任务中可能表现不佳。
在继续之前,了解一些相关概念很重要
检索:指从存储位置获取或抓取数据或信息的过程。在数据库或搜索引擎的语境下,它是指根据特定查询获取相关数据。
向量相似性搜索:其核心是 向量相似性搜索,它涉及比较向量(数字列表)以确定它们的相似程度。它常用于机器学习和人工智能中,根据给定输入查找数据库中最相似的项目。
向量数据库:一种设计用于存储向量的数据库,通常与机器学习模型结合使用。这些数据库针对向量相似性搜索进行了优化。
LLM:它是“大型语言模型”(Large Language Model)的缩写,是一种旨在处理文本的机器学习模型。LLM 在海量文本数据上进行训练,以理解并根据它们识别的模式生成类似人类的文本。
分块 (Chunking):这是将输入数据(如文本)分成更小、更易于管理的片段或“块”的过程。这可以提高处理效率,特别是在自然语言处理等输入可能非常长的场景中。
嵌入 (Embeddings)/向量 (Vectors):在机器学习中,嵌入是指将离散项目(如单词或产品)转换为连续向量。这些向量以算法可以处理的方式捕获项目之间的语义意义或关系。
K 近邻 (KNN):这是一种用于分类和回归的算法。给定一个输入,KNN 找到与该输入最接近的“k”个训练样本,并根据它们的值或标签做出决策。
令牌限制 (Token Limit):在自然语言处理和机器学习模型的语境下,令牌是文本的一个单元(如一个单词或一个字符)。令牌限制是指模型在单个输入中可以处理的最大令牌数量。
微调 (Fine Tuning):机器学习模型在通用任务上预训练后,可以在更具体的任务上进行“微调”。这涉及在一个与您试图解决的特定问题更相关的较小数据集上进一步训练模型,从而改进其能力。
RAG 的概念相对简单。它包含两个主要组件:文档检索器和大型语言模型 (LLM)。文档检索器负责使用语义搜索根据输入问题从大量文档语料库中查找相关信息。然后将此信息传递给 LLM,由其生成响应。
RAG 的独特之处在于它结合这两个组件的方式。RAG 不像分开的两步那样先检索文档再生成响应,而是采用一个联合过程,将文档检索和响应生成步骤连接起来。这使得模型在生成响应时可以同时考虑多个文档,从而产生更准确和与上下文相关的输出。
RAG 方法对于需要深入理解上下文和引用多个信息源的任务特别有效。这包括问答等任务,模型需要考虑多个知识来源并根据问题的上下文选择最合适的一个。
总而言之,检索增强生成代表了生成式 AI 和基于 LLM 的应用领域的重大进步,为需要结合深入理解、上下文感知和事实准确性的任务提供了强大的工具。
要更深入地了解 RAG,请查看:Redis Cloud 与 Amazon Bedrock 集成现已可用
将检索增强生成 (RAG) 应用于大型语言模型 (LLM) 是自然语言处理领域的一个重大进展。本节提供了关于如何将 RAG 与 LLM 结合使用的技术概述。
RAG 是一种结合了预训练 Transformer 和高效信息检索方法的优势的方法。当应用于 LLM 时,它通过从大量文本语料库中检索相关文档并利用这些文档指导生成过程,从而增强模型生成更准确响应的能力并减少幻觉。
将 RAG 集成到 LLM 中涉及两个主要组件:检索器和生成器。检索器负责根据输入查询查找相关文档,而生成器则使用检索到的文档和原始查询来生成响应。
在 RAG-LLM 设置中,检索器能够捕获查询与文档之间更复杂的语义关系,从而获得更准确的检索结果。 检索器可以将文档和查询嵌入到高维向量空间中,其中向量之间的距离对应于文档与查询的相关性。 与输入查询相关性较低的文档将具有更大的“距离”,因此应被视为不相关而被忽略。设置此阈值是设计的一部分,并基于应用程序要求。这些密集嵌入通常存储在向量数据库中,用于执行向量相似性搜索。
检索器接收输入查询,使用查询编码器将其转换为向量,然后查找语料库中最相似的文档向量。与这些向量相关的文档随后被传递给生成器。
在任何给定步骤中检索的文档数量可以根据任务的具体要求进行调整。对于需要广泛理解某个主题的任务,可能会调用更广泛的文档集。反之,对于侧重于精确性的任务,较窄的文档集可能就足够了。
在检索过程中需要考虑的一个重要方面是获取文档的准确性。检索准确性通常可以使用距离度量来量化,例如在机器学习模型的上下文中使用的向量相似性。本质上,与输入查询不相关的文档将与查询向量表现出更大的“距离”,这表明它们的不相关性。此距离可用作区分文档与查询相关性的指标。
设置此距离的阈值至关重要。超出此阈值的文档可以被忽略,以确保只考虑最相关的文档。值得注意的是,确定此阈值并非纯粹的技术决策,它也是一项业务选择。阈值应与总体目标保持一致,无论是提供全面的概览还是准确定位特定细节。
RAG-LLM 设置中的生成器是大型 Transformer 模型,例如 GPT3.5、GPT4、Llama2、Falcon、PaLM 和 BERT。生成器接收输入查询和检索到的文档,然后生成响应。
检索到的文档和输入查询被串联起来并输入到生成器中。然后生成器使用此组合输入生成响应,检索到的文档提供了额外的上下文和信息,有助于生成器产生更准确的响应,减少幻觉。
训练 RAG-LLM 模型包括在问答数据集上对检索器和生成器进行微调。训练检索器以检索与输入查询相关的文档,而训练生成器以根据输入查询和检索到的文档生成准确的响应。
检索增强生成 (RAG) 与 LLM 在生成式 AI 和自然语言处理 (NLP) 领域具有广泛的应用。它们在需要深入理解上下文和引用多个信息源的任务中特别有效。
问答:RAG 擅长问答任务。它们可以根据输入问题检索相关文档并生成精确答案。同时考虑多个文档的能力使 RAG 模型能够生成不仅准确而且与上下文相关的答案。
文本摘要:RAG 可用于生成长文档的摘要。文档检索组件可以识别文档中最重要的部分,而 LLM 可以生成捕捉主要观点的简洁摘要。
文本补全:RAG 模型可用于以与现有内容一致且与上下文相关的方式补全部分文本。这在电子邮件起草、代码补全等任务中非常有用。
翻译:虽然不是主要用例,但 RAG 模型也可用于翻译任务。文档检索组件可以从语料库中检索相关翻译,而 LLM 可以生成与这些示例一致的翻译。
使用 RAG 与 LLM 的主要优势在于,它使模型能够利用存储在大量文本语料库中的外部知识。这可以显著提高模型生成准确且信息丰富的响应的能力,特别是对于需要模型预训练数据中不存在的知识的查询。
RAG 通过将模型基于检索到的上下文来减少幻觉,从而提高事实准确性。此外,保持检索索引最新比持续预训练 LLM 成本更低。这种成本效益使得通过 RAG 更容易让 LLM 访问最新数据。最后,如果我们需要更新或删除数据,更新检索索引比微调或提示 LLM 不生成错误输出更容易。
此外,由于检索器和生成器是分开训练的,因此可以独立更新。这意味着可以在无需重新训练整个模型的情况下,将检索或生成方法的改进纳入模型中。