在人工智能的动态格局中,检索增强生成(Retrieval Augmented Generation - RAG)已经成为游戏规则的改变者,彻底改变了我们生成文本和与文本交互的方式。 RAG 使用大型语言模型 (LLMs) 等工具将信息检索的能力与自然语言生成无缝结合起来,为内容创建提供了一种变革性的方法。
起源与演变
在 2020 年的关键论文中,Facebook 研究人员解决了大型预训练语言模型的局限性。 他们引入了 RAG,这是一种结合了两种类型记忆的方法:一种类似于模型的先验知识,另一种类似于搜索引擎,使其能够更智能地访问和使用信息。 RAG 令人印象深刻的是,它在需要大量知识的任务(例如回答问题)中表现优于其他模型,并且生成了更准确和多样化的文本。 这一突破已得到研究人员和从业者的认可和扩展,是构建生成式人工智能(Generative AI)应用程序的强大工具。
在这篇文章中,我们将深入研究 RAG 的世界。 阅读完本书后,你将对 RAG、其演变历程及其多样化的现实应用有更好的了解。 我们的目标是阐明 RAG 如何增强人工智能系统的能力,增强自然语言理解和生成能力,最终使它们能够制作上下文相关且信息丰富的内容。
无论你是经验丰富的 AI 专家还是该领域的新手,本指南都将为你提供利用 RAG 功能并保持在 AI 创新前沿所需的知识。
RAG 简介
RAG 一直在自然语言处理 (NLP) 领域掀起波澜。 RAG 的核心是一个混合框架,它集成了检索模型和生成模型,生成的文本不仅上下文准确,而且信息丰富。
RAG 在 NLP 中的重要性怎么强调都不为过。 传统的语言模型,尤其是早期的语言模型,可以根据训练的数据生成文本,但通常缺乏在生成过程中获取额外的特定信息的能力。 RAG 有效地填补了这一空白,在检索模型的广泛功能和生成模型(例如 LLMs)的文本生成过程之间架起了一座桥梁。 通过这样做,RAG 突破了 NLP 的可能性界限,使其成为问答、总结等任务不可或缺的工具。
检索和生成模型的协同作用
尽管我们将在下面深入探讨更多技术细节,但值得注意的是 RAG 如何将检索模型与生成模型结合起来。 简而言之,检索模型充当专门的 “图书馆员”,从数据库或文档语料库中提取相关信息。 然后,这些信息被输入生成模型(generative model),该模型充当 “作家”,根据检索到的数据制作连贯且内容丰富的文本。 两者协同工作,提供的答案不仅准确,而且上下文丰富。
关键组件和优点
RAG 框架有两个主要组件:检索模型和生成模型。 这些组件可以根据应用进行不同的配置和微调。 它们共同使 RAG 模型成为极其灵活且强大的工具。
至于优点,RAG 的用途非常广泛。 它可用于各种应用,例如实时新闻摘要、自动化客户服务,甚至用于需要理解和集成多个来源信息的复杂研究任务。 此外,它的适应性使其能够融入不同类型的系统中,使其成为现代 NLP 任务中的宝贵资产。
总之,检索增强生成通过利用检索模型和生成模型的优势,正在彻底改变 NLP。 无论你是在学术、工业还是创业领域,了解 RAG 对于任何想要充分利用 NLP 力量的人来说都是至关重要的。
RAG 的关键组件
了解 RAG 的内部工作原理需要深入研究它的两个基本元素:检索模型和生成模型。 这两个组件是 RAG 卓越的获取、合成和生成信息丰富文本能力的基石。 让我们来分析一下每个模型带来的好处以及它们在 RAG 框架中带来的协同作用。
检索模型
检索模型充当 RAG 架构中的信息看门人。 它们的主要功能是搜索大量数据以查找可用于文本生成的相关信息。 将他们视为专业的图书馆员,当你提出问题时,他们确切地知道要从 “书架”上取下哪些 “书”。 这些模型使用算法来排序和选择最相关的数据,提供了一种将外部知识引入文本生成过程的方法。 通过这样做,检索模型为更明智、上下文丰富的语言生成奠定了基础,从而提升了传统语言模型的能力。
检索模型可以通过多种机制来实现。 最常见的技术之一是使用向量嵌入和向量搜索,但也常用的是采用 BM25(最佳匹配 25)和 TF-IDF(词频 - 逆文档频率)等技术的文档索引数据库。
生成模型
一旦检索模型找到了适当的信息,生成模型就开始发挥作用。 这些模型充当创意作家,将检索到的信息合成为连贯且上下文相关的文本。 生成模型通常建立在 LLMs 的基础上,能够创建语法正确、语义有意义且与初始查询或提示一致的文本。 他们采用检索模型选择的原始数据,并赋予其叙述结构,使信息易于理解和操作。 在 RAG 框架中,生成模型是拼图的最后一块,提供我们与之交互的文本输出。
为生成式人工智能制作即时三明治
为什么使用 RAG?
在不断发展的 NLP 领域,人们一直在寻求更智能、上下文感知的系统。 这就是 RAG 发挥作用的地方,它解决了传统生成模型的一些局限性。 那么,是什么推动了 RAG 的日益普及呢?
首先,RAG 提供了一种生成文本的解决方案,该文本不仅流畅,而且事实准确且信息丰富。 通过将检索模型与生成模型相结合,RAG 确保其生成的文本既消息灵通又编写良好。 检索模型带来 “什么” —— 事实内容 —— 而生成模型则贡献 “如何” —— 将这些事实组成连贯且有意义的语言的艺术。
其次,RAG 的双重性质在需要外部知识或上下文理解的任务中提供了固有的优势。 例如,在问答系统中,传统的生成模型可能难以提供精确的答案。 相比之下,RAG 可以通过其检索组件提取实时信息,使其响应更加准确和详细。
最后,需要多步骤推理或综合各种来源信息的场景才是 RAG 真正的亮点。 想想法律研究、科学文献评论,甚至复杂的客户服务查询。 RAG 搜索、选择和综合信息的能力使其在处理此类复杂任务方面无与伦比。
总之,RAG 的混合架构提供了卓越的文本生成功能,使其成为需要深度、上下文和事实准确性的应用程序的理想选择。
与 LLMs 一起探索 RAG 的技术实施
如果 RAG 的概念激起了你的兴趣,那么深入研究其技术实现将提供宝贵的见解。 RAG 以 LLMs 为骨干,采用从数据源到最终输出的复杂流程。 让我们层层揭开,揭开 RAG 的机制,并了解它如何利用 LLM 来执行其强大的检索和生成功能。
源数据
任何 RAG 系统的起点都是其源数据,通常由大量文本文档、网站或数据库组成。 这些数据充当检索模型扫描以查找相关信息的知识库。 拥有多样化、准确和高质量的源数据对于实现最佳功能至关重要。 管理和减少源数据中的冗余也很重要 - 例如,版本 1 和版本 1.1 之间的软件文档几乎彼此完全相同。
数据分块
在检索模型可以搜索数据之前,通常会将其划分为可管理的 “块 (chunk)” 或段。 这种分块过程确保系统可以有效地扫描数据并能够快速检索相关内容。 有效的分块策略可以极大地提高模型的速度和准确性:文档可能是它自己的块,但它也可以分为章节/部分、段落、句子,甚至只是 “单词块”。 请记住:目标是能够为生成模型提供增强其生成的信息。可以参考文章 “使用 LangChain 和 Elasticsearch 对私人数据进行人工智能搜索” 如何进行分块的。
文本到矢量的转换(嵌入)
下一步涉及将文本数据转换为模型可以轻松使用的格式。 使用向量数据库时,这意味着通过称为 “嵌入” 的过程将文本转换为数学向量。 这些几乎总是使用机器学习技术构建的复杂软件模型生成的。 这些向量封装了文本的语义和上下文,使检索模型更容易识别相关数据点。 许多嵌入模型可以进行微调以创建良好的语义匹配; 例如,Elasticsearch 可以很方便地将文本数据转换为向量。请参阅文章 “Elasticsearch:如何部署 NLP:文本嵌入和向量搜索”。
源数据和嵌入之间的链接
源数据和嵌入之间的链接是 RAG 架构的关键。 它们之间精心策划的匹配可确保检索模型获取最相关的信息,从而通知生成模型生成有意义且准确的文本。 从本质上讲,这种链接促进了检索组件和生成组件之间的无缝集成,使 RAG 模型成为一个统一的系统。
RAG 的示例和应用
RAG 拥有多种应用程序,跨越需要复杂 NLP 功能的多个领域。 其将检索和生成组件相结合的独特方法不仅使其有别于传统模型,而且还为无数 NLP 任务提供了全面的解决方案。 以下是一些引人注目的示例和应用程序,展示了 RAG 的多功能性。
文字摘要
如前所述,RAG 的杰出应用之一是文本摘要。 想象一下一个人工智能驱动的新闻聚合平台,它不仅可以获取最新新闻,还可以将复杂的文章总结为易于理解的片段。 通过利用 RAG,该平台可以生成简洁、连贯且与上下文相关的摘要,从而提供丰富的用户体验。
问答系统
RAG 在问答系统方面表现出了非凡的能力。 传统上,当查询需要深入了解多个文档或数据集时,QA 模型可能会失败。 然而,RAG 可以扫描广泛的语料库来检索最相关的信息并制定详细、准确的答案。 这使其成为为客户服务应用程序构建智能聊天机器人不可或缺的工具。
内容生成
在内容生成领域,RAG 提供了前所未有的灵活性。 无论是自动生成电子邮件、制作社交媒体帖子,甚至编写代码,RAG 的检索和生成双重方法都确保输出不仅语法正确,而且具有丰富的上下文和相关性。
应对 NLP 挑战
RAG 的架构使其能够应对从情感分析到机器翻译的各种 NLP 挑战。 它理解上下文、分析大型数据集和生成有意义的输出的能力使其成为任何依赖于语言理解的应用程序的基石技术。
要开始构建具有这些功能的应用程序,你可以详细阅读文章
- ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(一)
-
ChatGPT 和 Elasticsearch:分面、过滤和更多上下文
这些例子只是触及了表面。 RAG 的应用仅受我们的想象力和 NLP 领域持续呈现的挑战的限制。
RAG 的潜在挑战和局限性
尽管 RAG 具有诸多优势,但它也存在一些挑战和限制。 最明显的缺点之一是模型的复杂性。 鉴于 RAG 结合了检索和生成组件,整体架构变得更加复杂,需要更多的计算能力,并使调试更加复杂。
另一个困难在于数据准备:提供干净、非冗余的文本,然后开发和测试一种将文本分块为对生成模型有用的片段的方法,这并不是一项简单的活动。 完成所有这些工作后,你必须找到一个在潜在的大量且多样化的信息中表现良好的嵌入模型!
LLMs 通常需要 prompt 的工程设计 —— 虽然 RAG 能够更好地为生成模型提供高质量的检索信息,但该信息通常需要正确构建,以便 LLMs 能够生成高质量的响应。
最后,还有性能权衡。 RAG 的双重性质(检索然后生成文本)可能会增加实时应用程序中的延迟。 必须决定如何平衡检索深度和响应速度,尤其是在时间敏感的情况下。
RAG 实施的最佳实践
当冒险进入 RAG 领域时,从业者必须应对复杂的环境,以确保有效实施。 下面,我们概述了一些关键的最佳实践,作为通过 RAG 优化 LLMs 能力的指南。
数据准备
成功实施 RAG 的基石是数据质量。 必须投入时间和精力进行数据清理和预处理,以实现最佳模型性能。 这需要文本规范化,其中涉及标准化文本格式以及实体识别和解析,这有助于模型识别文本中的关键元素并将其置于上下文中。 此外,消除不相关或敏感信息(例如个人身份信息 (PII))对于符合隐私标准至关重要。
定期更新
RAG 依靠实时或频繁更新的信息而蓬勃发展。 建立强大的数据管道,允许定期更新数据源。 这些更新的频率可以从每天到每季度不等,具体取决于你的具体使用案例。 强烈建议使用自动化工作流程来处理此过程。 开源 Langstream 等框架可以将流媒体与嵌入模型结合起来,使这项任务变得更容易。
输出评估
这可能需要一个领域专家小组仔细审查模型输出的样本集。
连续的提高
人工智能的世界在不断发展,持续改进不仅是一种理想,而且是一种必然。 这可能意味着任何事情,从更新训练数据、修改模型参数,甚至根据最新的研究和性能指标调整架构设置。
端到端集成
为了获得流畅的操作体验,将 RAG 工作流程集成到现有的 MLOps 协议中至关重要。 这包括遵循持续集成和持续部署 (CI/CD) 方面的最佳实践、实施强大的监控系统以及进行定期模型审核。
通过遵循这些最佳实践,你不仅可以优化 RAG 模型的性能,还可以使其与更广泛的机器学习和数据管理生态系统保持一致。 这种整体方法可确保吗从 RAG 实施中获得最大效用。
使用 Elasticsearch 拥抱 RAG
RAG 是 NLP 领域的一项关键创新,它集成了检索模型和生成模型的功能,以生成连贯、上下文丰富的文本。
RAG 将检索模型(如我们上面所描述的)与生成模型相结合,检索模型充当 “图书馆员”,扫描大型数据库以获取相关信息,生成模型充当 “作家”,将这些信息合成为与任务更相关的文本。 它用途广泛,适用于实时新闻摘要、自动化客户服务和复杂研究任务等多种领域。
RAG 需要检索模型,例如跨嵌入的向量搜索,与通常基于 LLMs 构建的生成模型相结合,该模型能够将检索到的信息合成为有用的响应。