*本文来自【大模型行业应用入门系列】← 点击可阅读该全系列内容
在LLM(大型语言模型)新时代的到来之前,我们通常会通过简单的微调来使用新数据扩展模型的能力。然而,如今我们使用的模型规模越来越大,训练所使用的数据量也随之增加,仅仅依赖微调已经无法满足大部分场景的需求。微调虽然在调整模型的语气和风格方面表现出色,但在向模型添加大量新知识时,其效果就显得乏力了。
以OpenAI 的 GPT-3.5-turbo(ChatGPT)模型为例。如果我们输入"你能告诉我关于寒冷天气的帐篷吗"这样的问题,完成式模型可能会通过扩展提示回复:"以及任何其他寒冷天气的露营设备?"而聊天式模型则会给出一个更加人性化的回答:"当然!它们旨在承受低温、大风和雪......"在这种情况下,OpenAI 的重点不在于更新模型可以访问的知识库,而是改变了模型与用户交互的方式。对于这种调整模型风格和语气的任务,微调确实展现出了卓越的效果。
然而,对于向大型模型添加新知识这一更加常见的业务需求,微调的效果就显得乏善可陈了。此外,对LLM 进行微调需要大量高质量的数据、可观的计算资源预算,以及漫长的训练时间等,这对于大多数用户来说都是稀缺资源,通常却无法满足。
1. 什么是RAG(Retrieval Augmented Generation)?
RAG(Retrieval Augmented Generation,检索增强生成)是一种创新技术,旨在通过融合外部知识源来提高生成式人工智能模型的准确性和可靠性。这种方法针对了大型语言模型(LLM)的一个固有缺陷:LLM虽然擅长捕捉语言的统计模式,但缺乏对具体事实知识的深入理解。
事实上,在LLM的引擎盖下,其核心是基于深度神经网络,通常以巨大的参数量来衡量模型的能力。这些参数代表了人类使用语言构建句子的一般模式和规律,是对自然语言处理的参数化理解。正是这种深刻的、隐性的语言理解能力,使得LLM能够以惊人的速度流畅响应各种一般性提示。
然而,当用户希望深入了解某一当前主题、具体领域时,单纯依赖LLM内置的参数化知识就显得力有未逮了。毕竟,任何静态的模型和训练数据库都是有限的,无法涵盖所有最新、专业、细致入微的知识点。从而导致了LLM在处理某些特定查询时会给出不准确、不一致的响应,削弱了其可信赖性。
RAG技术应运而生,旨在克服LLM固有的这一弱点。其核心思路是将LLM与外部知识源相结合,让模型不仅依赖内部参数化知识,还能够基于外部的最新权威知识进行响应和生成。
高级RAG 架构参考示意图
作为一种创新技术,虽然RAG在不同系统实现细节上可能有所差异,但在概念层面上,将RAG应用于基于AI的应用程序通常包括查询输入、检索、提示构建、响应生成以及反馈等核心步骤。通过上述步骤,RAG技术巧妙地将LLM与外部知识源相结合,让模型不仅依赖内部的参数化语言理解能力,还能够基于检索到的最新权威知识进行综合推理和生成,从而显著提高了响应的准确性和信息丰富度。
2. 大型语言模型中对RAG的需求
LLM(大型语言模型)凭借其强大的表现能力赢得了广泛关注,但同时也暴露出了一些固有的缺陷。其中一个突出问题便是输出响应的一致性和可靠性有待提高。LLM虽然对某些问题能够给出准确回答,但在面对其他问题时常常会搬空子、重复训练数据中的随机事实。造成这一现象的根本原因在于,LLM更多是捕捉单词之间的统计关联关系,而无法真正理解语义内涵。
为了解决LLM响应中的不一致性,提升其可信赖程度,研究人员们开发了一种名为"检索增强生成"(Retrieval Augmented Generation, RAG)的创新框架。RAG的核心思路是通过结合外部知识源,来增强LLM生成响应的质量。这种方法不仅确保了LLM对最新、最可靠的事实知识拥有访问权限,还使得用户能够根据实际需求,对模型输出的准确性和可信度提出要求并进行验证。
通常情况下,RAG框架的主要围绕以下两个核心要素进行活动开展:
1.检索 - Retrieval
在这一步骤中,RAG会基于用户的输入查询,从预先构建的知识库(如维基百科、专业文献等)中检索与之高度相关的文本片段。知识库的构建十分关键,需要包含最新、权威、专业的信息源,以确保检索质量。
2.生成 - Generation
在获取相关文本后,RAG将结合用户的原始查询与检索到的文本信息,喂入LLM模型进行综合处理和理解,最终生成满足用户需求的高质量响应输出。
通过上述两步的紧密结合,RAG架构赋予了LLM获取外部知识的能力,从根本上解决了仅依赖内部训练数据导致的单一性和局限性问题。同时,RAG也为用户提供了更多的可控性和定制空间,他们可以根据不同场景的需要,选择合适的知识库和检索策略,进一步优化模型的输出质量。
值得一提的是,RAG作为一种创新框架,不仅能够提高LLM输出的一致性和可靠性,更重要的是为大型语言模型开辟了融入外部知识、不断学习进化的途径。在当前的人工智能发展阶段,如何使LLM超越静态知识库的限制,具备持续学习和知识累积的能力,是亟待解决的重大挑战之一。RAG的出现为这一目标提供了有力支撑,开启了LLM向真正通用人工智能系统演进的新方向。
当前,基于RAG框架的研究和应用正在多个领域热火朝天地展开,包括智能问答系统、智能写作辅助、知识图谱构建等。越来越多的科技巨头和创业公司正在探索和实践将RAG融入其产品和服务的可能性。相信在不久的将来,RAG及其变体必将成为增强LLM能力、推动人工智能发展的关键驱动力量之一。
3. RAG到底是如何工作的?
与传统方法相比,RAG的一大创新之处在于,其并不直接修改或微调LLM本身的模型参数,而是将LLM作为系统中的一个组成部分,与文档存储和检索模块紧密集成。这种"插入式"设计保留了LLM原有的语言生成能力,同时赋予其访问外部知识的新 技能,避免了完全重新训练模型所需的昂贵计算资源开销。
RAG(检索增强生成)基本工作原理参考示意图
检索增强生成(Retrieval Augmented Generation, RAG)技术为大型语言模型(LLM)注入了外部知识的能力,充分发挥了LLM生成高质量响应和外部知识库信息丰富的协同优势。在我们进行相关查询操作时,RAG在LLM的幕后完成了一系列关键步骤,确保了最终响应的准确性和相关性。
通常而言,RAG的工作流程大致涉及如下几个关键阶段,具体可参考:
1.文档检索
当输入查询或提示时,RAG系统会首先在预先构建的文档存储库中搜索与之高度相关的上下文信息。这一存储库通常由数字化的文本文件组成,内容涵盖了广泛的专业领域和知识主题。
在该存储库中,每个文档都被分割成多个语义单元(chunks),并使用自然语言处理技术转换为向量形式,对应每个单元的语义内涵。这些向量表征及其元数据信息被存储在一个高效的向量数据库中。RAG使用领先的语义检索算法,基于我们所给出的查询计算其语义向量表示,并在向量空间中寻找与之最为相似的文本块,从而从海量数据中精确检索出与我们的需求高度相关的上下文信息。
2.提示构建与增强
获取相关文本块后,RAG会将我们的初始查询与这些上下文信息巧妙地融合,构建出一个丰富和内涵丰富的LLM提示。这一步的目标是为LLM提供充分的信息来源,引导其生成满足您需求的高质量响应。
在提示构建过程中,RAG可采用多种策略,如简单拼接、注入式提示、汇总式提示等,以确保上下文信息能够被LLM有效地捕捉和利用。同时,RAG还可结合一些辅助说明和注释,进一步增强提示的指导作用。
3.LLM响应生成
丰富的提示被输入LLM后,模型会综合考虑查询本身、相关上下文知识以及内部的参数化语言理解能力,通过深度学习和推理生成对我们的问题或需求的最终响应。
值得注意的是,由于融合了外部知识源,RAG赋予了LLM更准确、更具针对性的生成能力。LLM的响应不再局限于其有限的训练集知识,而是基于您特定场景和需求的相关信息进行了定制化的生成。这使得RAG系统的输出不仅信息丰富翔实,还与我们的具体查询高度相关,从而大大提高了可解释性和可信赖性。
4.响应输出与反馈
LLM生成的响应是RAG流程的最终产出,系统会以合适的形式将其呈现给我们。同时,RAG还为用户提供了方便的反馈机制,我们可以根据需要对系统输出的质量给予评价,这些反馈将用于持续优化RAG的检索、构建和生成策略。
4. RAG架构核心元素解析
检索增强生成(RAG)架构由以下关键元素组成,共同赋予语言模型获取和利用外部知识的能力,具体如下所示:
1.Vector Database向量数据库
高性能的向量数据库是RAG系统的核心基础设施。它通过存储文档的语义向量表征,实现了快速高效的相似性搜索,确保了系统能够及时访问最新、最相关的信息源。
2.Prompt Engineering提示工程
提示工程是RAG架构中的重要环节。通过精心设计指令,RAG能够引导大型语言模型(LLM)专注于所提供的上下文内容,生成高质量、符合预期的响应。
3.ETLPipeline数据管道
数据提取、转换和加载(ETL)管道负责处理原始数据,包括去重、更新插入(Upsert)等操作,并进行必要的转换,如文本分块、元数据提取等,以确保数据以最优格式存储在向量数据库中。
4.LLM大型语言模型
RAG架构可与各种LLM模型兼容,包括商业闭源模型和开源模型。开发者可根据具体需求选择合适的LLM作为RAG系统的核心生成引擎。
5.Semantic Cache语义缓存
语义缓存(如GPT Cache)通过存储LLM的历史响应,降低了系统的计算开销,提高了响应性能。这对于大规模应用以及成本敏感的场景来说尤为重要。
6.RAG工具集
第三方RAG工具集(如LangChain、LLamaIndex、Semantic Kernel等)为构建和部署RAG模型提供了便利,这些工具通常具有良好的LLM兼容性。
7.评估工具和指标
评估工具和指标(如TruLens、DeepEval、LangSmith、Phoenix等)对于监控和优化RAG系统的性能至关重要。它们结合了多种评价指标和辅助LLM,帮助全面分析系统输出的质量。
上述各个元素相互协同,构筑了RAG架构的完整闭环。其中,向量数据库和语义缓存为LLM提供了高效获取外部知识的途径;提示工程确保了LLM能够充分利用所提供的上下文信息;ETL管道负责清理和预处理原始数据,为系统提供高质量的知识源;第三方工具集简化了RAG系统的构建和部署;而评估工具和指标则支撑了系统的持续优化和改进。
值得一提的是,RAG架构不仅为LLM注入了外部知识获取能力,更重要的是为其开辟了持续学习和自我进化的大门。未来,随着记忆增强、元学习、自动知识库构建等前沿技术的加入,RAG有望赋予语言模型真正的主动学习能力,使其能够不断吸收新知识,持续扩充和优化内部知识库,最终突破静态知识库的限制,成为具备通用智能的学习智能体。
5. RAG优势及挑战
RAG架构为LLM提供了一种全新的知识注入和更新机制,有助于解决传统LLM固有的一些局限性。
在传统的LLM训练过程中,模型的参数化知识是静态的、固定的,一旦训练完成便无法直接更新。这意味着:即便基础知识库发生变化,LLM也无法自主吸收新知识,唯一的方式是从头开始重新训练模型,这无疑代价高昂、效率低下。
而RAG架构则为LLM提供了一种动态获取外部知识的新路径。通过与先进的语义检索和向量数据库技术相结合,RAG使LLM能够在回答查询时直接访问最新、最相关的知识源,而无需对模型本身进行任何修改或重新训练。只要持续更新知识库,LLM的输出响应就会自动反映最新的知识状态,保持了极高的时效性和准确性。
更重要的是,RAG架构赋予了LLM一种新的响应模式——基于源知识生成(Source-grounded Generation)。在这种模式下,LLM的回复将严格限制在提供的上下文知识范围内,有助于降低幻觉(Hallucination)风险,提高输出的可信赖性。
该特性不仅可应用于大型通用LLM,更有利于催生出一类特定领域的小型高效LLM。这些模型在训练时仅需获取通用语言知识,而专门的领域知识则来自于RAG管道提供的动态知识源,从而实现了模型结构的精简和训练成本的降低,同时保留了输出的高质量和专业性。
另一个突出优势在于,RAG架构能够为LLM的输出响应提供清晰的源跟踪(Source Tracing)功能。也就是说,系统不仅会生成高质量的答复内容,还会同时输出贡献该答复的具体知识源和证据路径。这一方面提高了系统输出的可解释性和可追溯性,有助于发现和诊断LLM可能产生的幻觉行为;另一方面,也为敏感领域的监管合规提供了坚实的技术支撑,确保了知识来源的可审计性。
然而,在实践应用和未来发展过程中,这一创新技术仍然面临着一系列重大挑战需要我们亟待攻克。
这些挑战涉及到知识库构建、检索算法、提示工程、解释技术、隐私与安全、系统效率等多个关键领域。我们需要投入更多的研究和开发资源,持续关注并深入研究这些关键领域,以推动技术的进一步突破和创新。只有通过不断攻克这些挑战,才能实现技术的全面应用和发展。
参考:
https://bea.stollnitz.com/blog/rag/
https://blog.gopenai.com/retrieval-augmented-generation-101-de05e5dc21e
https://blog.roboflow.com/what-is-retrieval-augmented-generation/
点击文末阅读原文,可以到原文下留言交流
觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
本文来自【大模型行业应用入门系列】← 点击可阅读该全系列内容