Advertisement

一文读懂RAG(检索增强生成)【大模型行业应用入门系列】

阅读量:

摘要

摘要

在大型语言模型(LLM)这一新时代到来之前,在过去的时间里我们通常会通过简单的微调来运用新数据以拓展模型的能力。然而如今随着所使用的模型规模日益增大 随之而来的是训练所需的数据量显著增加 仅靠微调已难以满足大部分应用场景的需求。尽管在调整模型语气与风格方面表现出色 但当需要向模型注入大量新知识时 效果便明显减弱。

以OpenAI公司的GPT-3.5-turbo(ChatGPT)模型为例。当用户询问"关于寒冷天气的帐篷信息"时,在完成式架构下可能需要进一步询问:"除了帐篷之外还有什么露营设备?"而在交流模式下生成的回答则更具亲和力:"当然!它们旨在承受低温、大风和雪……"在这种情况下, OpenAI的重点转向的是改进与用户的互动方式而非单纯的知识库更新。通过微调技术能够显著提升在对话模式下的表现。

然而,在向大型模型注入新知识这一更为普遍的业务需求面前,微调的表现就显得力不从心了。此外,在对LLM进行微调时不仅需要投入海量高质量标注数据而且需要具备可观的算力预算以及漫长的训练周期等这些要素都构成了较高的门槛对于大多数开发者而言这类资源往往显得捉襟见肘难以满足基本需求

鉴于此,在大型语言模型中高效整合新知识方面寻求替代方案是一项迫切需求。幸运的是,在2021年提出的"检索增强生成"(RAG)技术特别适用于这一挑战

1. 什么是RAG(Retrieval Augmented Generation)?

作为一项创新性技术方案,RAG(Retrieval Augmented Generation,检索增强生成)致力于通过整合外部知识库来提升生成型AI系统的准确度与稳定性。这种技术特别针对当前主流大语言模型(LLMs)的一个显著局限性:尽管它们在模仿人类语言模式方面表现出色,但在理解具体事实和细节方面存在明显不足

实际上,在LLM的内部机制下(即引擎盖部分),其主要功能由深度神经网络实现。这些功能通常通过大量参数数量来评估模型性能。这些参数反映了人类在构建句子时所遵循的语言模式与规律,并对应于自然语言处理中的参数化模型。它们的存在表明 LLM 具备这种深入且隐含的语言理解能力,并因此能够以高效的方式流畅响应各种通用提示。

然而,在用户希望深入探讨某一当下话题、具体领域时(即关注特定领域问题),单纯依赖LLM内部预设的知识体系就会显得力不从心。(因为)静态模型与训练数据集都存在局限性(即它们无法覆盖所有最新发展与专业知识细节),因而导致LLM在处理某些特定查询时往往会出现信息偏差或逻辑错误。

RAG技术应运而生, 目的是为了克服LLM固有的这一弱点. 其核心思路是将LLM与外部知识源进行整合. 让模型不仅依赖于内部参数化知识, 而且能够基于外部的最新权威知识进行响应和生成.

图片

高级RAG 架构参考示意图

作为新兴技术之一,在理论层面上讲,RAG应用于基于AI的应用程序通常会涉及五个关键环节:首先是由用户发起查询输入,随后通过检索相关资源,接着构建提示信息,再由模型生成响应内容,最后整合用户的反馈信息形成闭环流程.值得注意的是,RAG技术通过将LLM与外部知识库有机整合,在模型具备更强的知识驱动推理能力的同时,也使其不仅依靠自身参数化的语言理解能力,还能基于检索到的知识库内容进行深度分析与创意输出,从而带来明显的提升效果

值得指出的是,在实际应用场景中

2. 大型语言模型中对RAG的需求

LLM(大型语言模型)基于其强大的性能获得了人们的广泛注目;然而它也暴露出了自身存在的局限性。主要问题是输出的一致性和可靠性仍需进一步提升;尽管LLM能在部分问题上提供精准的答案但在应对其他类型的问题时常会引用训练数据中的随机事实片段;这种现象的根本原因在于LLM更多依赖于对单词之间统计关联关系的捕捉而非对语义内涵的深入理解。

为了解决LLM响应中存在的不一致问题,并增强其可靠性和可信度性性性性性性性性性性性性性

通常情况下,RAG框架的主要围绕以下两个核心要素进行活动开展:

1.检索 - Retrieval

在这一步骤中, RAG系统将根据用户的输入进行查询. 在这一阶段中, 系统会从预先构建的知识库(包括维基百科、专业文献等)中提取高度相关的文本片段. 知识库的建设至关重要, 必须整合最新的权威专业资源以保证检索效果.

2.生成 - Generation

在获取相关文本之后,在后续的过程中,RAG系统会整合用户的原始查询内容与检索到的相关文本数据,输入到LLM模型中进行综合分析和信息理解,从而系统能够精准地理解和生成符合用户需求的高质量回应内容。

通过两步的有效结合,RAG架构赋予了LLM获取外部知识的能力,从根本上解决了仅依赖内部训练数据导致的单一性和局限性问题.同时,该系统为用户提供更多灵活的控制和自定义选项,根据不同的应用场景选择合适的知识库和检索策略,从而进一步提升模型输出的质量.

值得注意的是,在当前人工智能快速发展的背景下

目前,在人工智能领域中基于RAG框架的实践与应用正方兴未艾,在智能问答系统、智能写作辅助以及知识图谱构建等方面取得了显著进展。越来越多的科技巨头与创业公司积极尝试将RAG技术融入其产品与服务之中以期提升性能与用户体验。有理由相信,在不远的将来该技术及其衍生形式必将在未来成为推动大型语言模型(LLM)能力发展的重要引擎从而加速人工智能技术的进步。

展望未来,在伴随着一系列创新技术的发展过程中,RAG 的发展态势将日益明显。具体而言,其与多种先进的记忆增强生成技术和相关模块的有效整合,将赋予其持续积累知识与经验的能力;此外,引入这一新型的知识追踪技术,能够使其实现自主学习新知识领域,从而不断扩大其专业知识体系。从某种程度上看,融合多种先进技术后,RAG 将展现出更强大潜能,充分挖掘出LLM 的巨大价值潜力,最终推动智能系统朝着通用人工智能方向稳步前进

3. RAG到底是如何工作的?

相较于传统方法而言,RAG的一大创新之处在于,它并未直接调整或微调LLM自身的核心参数,而是将其视为系统中的重要一员,有机整合于文档存储及检索系统之中.这种"嵌入式"架构得以保持LLM原有语言生成功能的同时,又为其提供了接入外部知识的能力,从而有效降低了重新训练模型所需计算资源的高昂消耗.

图片

RAG(检索增强生成)基本工作原理参考示意图

检索增强生成(Retrieval Augmented Generation, RAG)技术赋予大型语言模型(LLM)整合外部知识库的能力,并充分展现了LLM生成高质量响应与外部知识资源丰富性之间的协同效能。当我们在执行相关查询指令时,在LLM的背后运行着一系列关键步骤的操作序列:通过检索系统整合外部信息资源、结合模型推理能力完成响应生成、运用数据驱动优化结果质量等多维度机制协作运行。这些机制共同作用下确保输出结果既具有高度的相关性又保证了准确性的双重保障

通常而言,RAG的工作流程大致涉及如下几个关键阶段,具体可参考:

1.文档检索

当用户进行查询或输入提示指令时,RAG系统会在其预先建立的知识库中检索与查询结果紧密相关的上下文信息.该知识库通常由大量数字化的文本文件构成,涵盖广泛的专业领域和知识主题.

在该存储库中,每个文档都被划分为多个意义片段(chunks),并通过自然语言处理技术将其转化为向量形式来反映每个片段所承载的意义。这些向量及其相关元数据信息被高效地组织在一个专门的数据库中。通过先进的语义检索技术,在给定用户的查询下提取相关语义特征,并根据这些特征在高维空间中找到最相似的信息块。以便从海量信息中精准提取与用户需求高度相关的上下文内容。

2.提示构建与增强

在获取相关文本块之后,在RAG的作用下,我们的初始查询能够与这些上下文信息巧妙地融合在一起,并最终构建出一个既丰富又内涵深厚的LLM提示。这一操作的主要目的是为LLM提供足够的信息来源,并从而引导其生成符合您需求的高质量响应。

当构建提示时,在RAG模型中可以选择不同的方法来组织信息内容,例如进行直接连接式的整合,运用内嵌式引导的方式进行知识输入,以及采用整合型辅助形式来进行上下文组织等,从而保证LLM能够有效理解和利用存储的信息资源.此外,在构建过程中还可以加入一些辅助说明与注释来进一步提升指示效果.

3.LLM响应生成

丰富多样的提示作为输入后 fed 到 LLM 中时, 模型会全面评估查询内容, 相关背景知识以及其内部参数化的语言理解能力, 并基于深度学习算法结合推理机制生成我们所关心的问题或需求的最终输出结果.

值得注意的是,在整合外部知识库的基础上

4.响应输出与反馈

该系统通过RAG流程产生的响应被视为最终成果,并将被以适当的方式展示给我们。此外,在此框架下还提供了便捷的反馈渠道让用户对系统输出质量进行评价,并将这些评价用于持续优化RAG的各项功能:包括检索机制、构建流程以及生成过程。

总体来说,在结合先进语义检索技术和向量数据库方面上

4. RAG架构核心元素解析

该架构由一系列核心要素构成,并非单一要素所能完成的任务。这些要素共同作用于语言模型的增强能力,在提升其信息检索效率的同时也增强了其对复杂问题的理解与解决能力。

1.Vector Database向量数据库

该系统采用先进的向量数据库作为其关键组件,在基于对文档语义向量的存储与表示基础上支持了快速而精确的相似性检索功能。该功能通过精确匹配语义特征实现了高效的数据检索,并在这一过程中保证系统能够迅速获取最新且高度相关的数据来源以提升整体性能表现。

2.Prompt Engineering提示工程

提示工程构成RAG架构的核心模块。通过设计优化的指令序列,RAG能够通过指导大型语言模型(LLM)聚焦于提供的上下文内容,并输出高质量且符合预期的回答。

3.ETLPipeline数据管道

该ETL管道负责处理原始数据的提取与转换加载过程,并执行去重处理以及实现更新插入(Upsert)等功能。同时完成必要的转换工作例如将文本划分为块状结构并提取相关的元数据以便使存储于向量数据库中的数据达到最佳优化状态

4.LLM大型语言模型

RAG架构对各类LLM模型具有兼容性,并非局限于特定类型的LLM。建议开发者根据具体需求选择合适的LLM作为RAG系统的核心生成引擎。

5.Semantic Cache语义缓存

通过历史记录机制(例如GPT Cache)来存储LLM的历史响应,在提升用户体验的同时减少了系统在处理请求时所需计算资源的数量,并提升了处理效率和快速响应能力。对于大规模应用环境以及对成本敏感的领域而言这一技术方案具有重要的意义

6.RAG工具集

第三方RAG工具包(包括LangChain、LLamaIndex和Semantic Kernel等)为构建和部署RAG模型提供了全面的支持;这些工具集通常展现出卓越的LLM兼容性。

7.评估工具和指标

评估体系(如TruLens、DeepEval、LangSmith、Phoenix等)在监控与优化RAG系统性能方面起着不可或缺的作用。这些体系整合了多样的评价标准以及辅助语言模型,并旨在全面分析并提升生成内容的质量。

各环节相互配合共同构建了一个完整的RAG架构闭环。具体而言,
向量数据库系统负责提供高效的外部知识检索途径,
提示工程确保LLM能够充分利用所给上下文信息,
ETL管道负责对原始数据进行清洗与预处理,
从而为系统提供高质量的知识源;
此外,
第三方工具集不仅简化了系统的构建流程而且优化了部署过程;
评估机制与指标体系则为系统的持续优化与改进提供了有力支持。

值得注意的是,在生成式模型领域中,RAG架构不仅为LLM提供了外部知识获取的能力,而且开创性地打开了持续学习与自我进化的突破口。展望未来,随着记忆能力不断提升以及元学习技术的发展,相关前沿技术的应用逐步增多,并带动自动构建的知识库逐步完善。研究者推测,RAG有望赋予生成式模型自主的学习与进化能力,这种机制将帮助模型持续积累新的认知,从而使得其内部的知识体系得到不断更新和完善,并最终实现具备通用认知的学习型生成式模型

此外,在持续发展中,RAG架构也在不断地进化与完善。随着越来越多的创新机制和技术被引入,包括多元化的知识融合模式,基于上下文的提示优化方案,跨模态且分散式的知识库整合,以及通过人类反馈互动学习的优化方案等,这一技术体系的应用场景及能力范围得到了极大的扩展

5. RAG优势及挑战

RAG架构整合了创新的知识输入与更新流程,旨在改善现有缺陷的LLM。

在传统的LLM训练过程中,在线学习模型的参数化知识是固定不变的、静态的知识体系,在模型完成训练后便无法进行参数更新和调整。即使在线知识库发生变化或扩展时,默认情况下LLM系统也无法自主补充新的知识节点和语义信息,默认情况下只能通过完全重构模型架构来实现新的知识获取能力提升方式,在这种情况下不仅会引起巨大的计算资源消耗问题还会造成时间和效率上的显著浪费

为大型语言模型(LLM)提供了动态获取外部知识的新途径。通过整合先进的语义检索技术和向量数据库技术,RAG使LLM能够在回答问题时直接访问最新、最相关的知识资源,无需对模型进行任何修改或再训练。定期更新知识库后,LLM的输出结果能够实时反映最新的知识状态,展现出高度的即时性和准确性。

其核心优势在于RAG架构赋予了LLM一种创新性的响应机制——基于源知识生成(Source-grounded Generation)的技术框架。按照这一工作方式,在回答问题时LLM的所有回复都将局限于提供的上下文知识范围内,在此限定下有助于减少生成偏见或错误信息的可能性(Hallucination),从而提升输出结果的可靠性

该特性不仅适用于大规模通用LLM系统中,在促进特定领域小型高效LLM开发方面具有重要意义。这些模型在训练过程中主要依赖于获取通用语言知识,在结合RAG管道动态接入的知识源后,则能够实现高度精简化的同时显著降低了训练成本,并且确保了输出内容的质量与专业性

另一个显著优势在于,RAG架构能够为LLM的输出提供清晰的知识来源追踪机制。具体而言,在生成回答的过程中不仅能生成高质量的回答内容,并且还会详细记录生成回答所依赖的知识来源及其证据路径。这使得系统不仅具有较高的可信度保证还能提升结果分析的能力;在实际应用中,在敏感领域应用时提供了严格的合规保障并确保了知识来源的审计可控性。

然而,在实际应用过程中以及未来发展中,这项创新技术仍然面临诸多关键挑战,亟需我们去克服.

这些挑战涵盖了知识库搭建、检索运算机制、提示应用系统以及相关技术体系等多个关键领域。我们需要加大研发投入,在各个关键领域持续深耕并深入探索相关技术细节,以期实现技术创新与突破。唯有持续克服这些挑战障碍,在各个核心技术上取得实质性进展后方能真正实现技术的全面应用与创新发展。

全部评论 (0)

还没有任何评论哟~