下面是RAG应用的典型工作流程:
具体步骤如下:
-
输入: 是指LLM系统需要回答的问题。如果不使用RAG,问题直接由LLM回答。
-
索引: 使用RAG时,会先将相关文档分块,为这些块生成嵌入向量,并将它们索引到向量库中。在进行查询时,查询内容也会以相似的方式进行嵌入。
-
检索: 通过比较查询内容与索引向量,找到相关的文档。
-
生成: 将找到的相关文档与原始提示结合作为额外上下文,然后传递给模型进行回应生成,最终形成系统对用户的回答。
例如,直接使用模型可能因为不了解最新事件而无法回答问题。但是,通过使用RAG,系统能够提取模型回答问题所需的相关信息。
RAG 范式演变
近几年来,RAG(检索增强生成)系统经历了从初级阶段到高级阶段,再到模块化阶段的演变。这一进化过程旨在克服性能、成本和效率方面的挑战。
方式一
朴素 RAG(Naive RAG)
初级 RAG 采用了一个传统过程,包括索引建立、文档检索和内容生成。简单来说,系统根据用户的输入查询相关文档,然后将这些文档和一个提示语结合起来,交给模型生成最终的回答。如果涉及到多轮对话,还可以将对话历史整合到提示语中。
初级 RAG 的局限性包括低精确度(检索到的信息不够准确)和低召回率(有时候无法检索到所有相关的信息)。此外,有时候模型可能会接收到过时的信息,这正是 RAG 系统希望首先解决的问题之一。这可能会导致模型产生不基于事实的幻想性回答,从而影响回答的准确性和可靠性。
当引入额外信息以增强回答时,还可能出现信息重复或冗余的问题。处理多个检索到的文档时,如何排列它们的优先级以及如何使生成的内容风格和语调一致也是需要考虑的挑战。我们还需要确保生成的任务不会过分依赖于这些额外信息,避免模型仅仅重复这些信息而缺乏创新。
方式二
高级 RAG(Advanced RAG)
高级 RAG 解决了初级 RAG 面临的问题,尤其是在提高检索质量方面,包括优化检索前、检索时和检索后的各个过程。
在检索前的准备阶段,我们通过优化数据的索引建立来提高数据质量,包括_**改善数据的细节度、优化索引结构、添加元数据、改进对齐方式以及混合检索方法。
在检索阶段,我们可以通过改进嵌入模型来提高上下文片段的质量。例如,通过对嵌入模型进行微调,以提高检索的相关性,或者使用能够更好理解上下文的动态嵌入模型(如 OpenAI 的 embeddings-ada-02 模型)。
在检索后的优化过程中,我们专注于解决上下文窗口限制和减少噪音或分散注意力的信息。常用的方法包括重新排列文档,以将更相关的内容放在提示的前后,或者重新计算查询与文档片段之间的语义相似度。此外,通过压缩提示信息也有助于解决这些问题。
方式三
模块化RAG(Modular RAG)
模块化 RAG,顾名思义,通过增强其功能模块来提升性能,例如加入相似性检索的搜索模块,以及在检索工具上进行精细调整。模块化 RAG 能够根据具体的任务需求,添加、替换或调整模块之间的工作流程,从而实现更高的多样性和灵活性。这种设计让模块化 RAG 不仅包括了朴素 RAG 和高级 RAG 这两种固定模式,还扩展了包括搜索、记忆、融合、路由、预测和任务适配等多种模块,以解决各种问题。
随着 RAG 系统构建变得更加灵活,一系列优化技术相继被提出,用于进一步优化 RAG 流程,包括:
-
混合式搜索探索: 结合了关键词搜索与语义搜索等多种搜索技术,以便检索到既相关又富含上下文的信息,特别适用于处理多样化的查询类型和信息需求。
-
递归式检索与查询引擎: 通过从小的语义片段开始,逐步检索更大的内容块以丰富上下文的递归过程,有效平衡了检索效率与信息的丰富度。
-
StepBack-prompt 提示技术: 一种特殊的提示方法,能让大语言模型进行概念和原则的抽象化处理,从而引导更加深入的推理过程。当应用于 RAG 框架时,能够帮助模型超越具体事例,进行更广泛的推理。
-
子查询策略: 采用树状查询或按序查询小块信息的不同策略,适用于多种场景。LlamaIndex 提供的子问题查询引擎允许将大的查询任务拆分成多个小问题,分别利用不同的数据源进行解答。
-
假设性文档嵌入技术 (HyDE): 通过生成查询的假设性回答并嵌入,来检索与这个假设回答相似的文档,而不是直接使用查询本身,以此来优化检索效果。
▲ RAG 范式对比图
RAG框架概述
在这一部分,我们将概述 RAG 系统的核心组成部分,包括检索、生成和增强三大环节的最新进展。这些组件共同构成了 RAG 的基础,使其能够有效处理各种信息检索和内容生成的任务,进而提升系统的整体性能和应用灵活性。
关键技术一
检索技术
在RAG系统中,检索是关键环节,负责从大数据中找出最有价值的信息。我们可以通过多种方法提升检索器的效能,包括:
1.提升语义理解
改善检索器背后的语义理解能力至关重要。这里有一些改进策略:
-
数据分块策略: 确定合适的数据分块方式非常关键,这依赖于你的数据内容和应用需求。例如,针对单句效果更佳的句子转换器,与处理256或512个词元的文本时,使用文本嵌入-ada-002模型会更加出色。此外,还需考虑用户提问的长度、应用需求和词元数量上限。实际应用中,通过尝试不同的数据分块策略来发现最优的检索效率是常见做法。
-
专业领域的嵌入模型微调: 确定了有效的数据分块策略后,如果你的工作聚焦于特定领域,可能还需要对嵌入模型进行微调。否则,可能会导致系统无法正确理解用户查询。可针对广泛的领域知识或特定的下游任务进行微调。例如,BGE-large-EN 开发的 BAAI(opens in a new tab) 模型,就能通过微调来提高检索的相关性。
2.查询与文档的精准匹配
确保用户查询与数据库中文档的匹配度,特别是在查询可能缺少具体语义信息或措辞不够精确的情况下,显得尤为重要。实现这一目标的方法包括:
-
查询重写: 通过多种技术改写查询,以提高匹配的准确性,例如利用Query2Doc、ITER-RETGEN和HyDE等工具。
-
查询嵌入的优化: 通过调整查询的嵌入表示,使其更好地与任务相关的潜在空间对齐,从而提升查询效果。
3.检索器与大语言模型的协同优化
此外,还需要确保检索器产出的结果与大语言模型(LLM)的预期一致,以实现最佳的协同工作效果。
-
优化检索技术: 通过分析大语言模型(LLM)提供的反馈,进一步完善检索系统。例如,通过适应性增强检索技术(AAR(opens in a new tab)),REPLUG(opens in a new tab),和UPRISE(opens in a new tab)等方式来实现。
-
引入辅助工具: 通过加入外部工具,如PRCA(opens in a new tab),RECOMP(opens in a new tab),和PKG(opens in a new tab),辅助优化信息对齐过程。
关键技术二
文本生成
在RAG系统中,负责将检索到的信息转化为流畅文本的生成器扮演着关键角色,该文本将成为模型输出的最终成果。这个转换过程涉及到复杂多变的输入信息,有时候需要特别努力来调整语言模型以更好地适应从查询和文档中得到的输入数据。这一挑战可以通过后期检索处理和模型微调来克服:
-
检索后处理与模型固定: 在保持大语言模型(LLM)不变的情况下,通过后处理技术改善检索结果的质量,如通过信息简化和结果优先排序等手段。信息简化有助于减少冗余信息,解决模型处理长文本的限制,并提升最终文本的生成质量。优先排序则是将最相关的信息排在前面,以提高检索的准确性。
-
针对RAG系统的LLM微调: 为了提高RAG系统的效率,可以对生成文本的过程进行细致调整或微调,确保生成的文本既自然流畅又能有效地结合检索到的文档信息。
关键技术三
增强技术
增强技术指的是将检索到的信息内容有效融入当前任务生成过程的方法。在深入探讨增强技术的过程、阶段及数据之前,先来看一下 RAG(检索增强生成模型)的核心组成部分分类:
在预训练、微调和推理等多个阶段,都可以应用检索增强技术。
-
增强阶段: RETRO(opens in a new tab) 示例展示了如何从零开始利用检索增强进行大规模预训练;它额外引入了一个基于外部知识构建的编码器。此外,通过结合 RAG 进行微调,可以进一步提升系统的性能。在推理阶段,根据具体任务需求采取多种技术将检索内容有效融入,以优化 RAG 的应用效果。
-
增强数据源: 选择何种增强数据对 RAG 模型的效果影响极大。数据源主要分为三类:非结构化数据、结构化数据以及由大语言模型生成的数据。
-
增强过程: 对于一些需要多步骤推理的问题,单次检索可能不足以解决,因此提出了以下几种方法:
-
迭代检索:模型通过多轮检索,不断深化和丰富信息内容。例如,RETRO(opens in a new tab) 和 GAR-meets-RAG(opens in a new tab) 就是采用这种方法。
-
递归检索:在这种方法中,一次检索的输出成为另一次检索的输入,逐步深入挖掘复杂查询的相关信息,适用于学术研究和法律案例分析等场景。著名实践包括 IRCoT(opens in a new tab) 和 Tree of Clarifications(opens in a new tab)。
-
自适应检索:根据特定需求调整检索过程,选择最合适的时机和内容进行检索,以达到最佳效果。这种方法的代表性研究包括 FLARE(opens in a new tab) 和 Self-RAG(opens in a new tab)。
-
下图详细描绘了 RAG 研究的不同增强方面,涵盖了增强的阶段、数据源和具体过程。
核心区别
RAG 与 微调 区别
RAG 和微调之间的差异,以及它们各自适用的场景,一直是热门话题。研究显示,RAG 特别适合于_融合新知识,而微调则能够通过优化模型内部知识、输出格式以及提升复杂指令的执行能力,来增强模型的性能和效率。这两种方法可以相辅相成,共同推动大语言模型在处理复杂的知识密集型任务和需要快速适应新知识、定制化反馈(遵循特定格式、语调和风格)的可扩展应用中的使用。另外,提示工程(Prompting Engineering)_通过发挥模型本身的优势,也能在优化结果方面发挥作用。下面这张图表展示了RAG在与其他模型优化方法相比时的独特特性:
RAG 模型评估
就像衡量大语言模型(LLM)在不同维度的表现一样,评估对于深入理解和提升 RAG(检索增强生成)模型在各种应用场景下的性能至关重要。传统上,人们通过特定任务的指标,如 F1 分数和准确率(EM),来评价 RAG 系统在下游任务上的表现。例如,RaLLe(opens in a new tab) 就是一个评估知识密集型任务中检索增强型大语言模型性能的著名框架。
在 RAG 模型的评估中,我们既关注_检索的内容质量,也关注生成的文本质量。为了评估检索的效果,我们采用了推荐系统和信息检索等知识密集领域的评估指标,比如归一化折扣累计增益(NDCG)和命中率_。而在生成质量的评估上,可以从相关性、有害内容的筛选(对未标记内容)或准确性(对已标记内容)等不同维度进行考量。整体上,RAG 模型的评估可以采用手动或自动的方法进行。
具体来说,RAG 框架的评估着眼于三个主要质量指标和四大能力。这三个质量指标包括:上下文相关性(即检索到的信息的精确度和相关度)、答案忠实度(即答案对于检索到的上下文的忠实反映)、以及_答案相关性(即答案与提出的问题的契合度)。此外,还有四项能力评估 RAG 系统的适应性和效率,包括:对噪声的鲁棒性、负面信息的排除、信息整合能力和面对假设情况的鲁棒性_。下面是一个评估 RAG 系统不同方面所用指标的概览:
为了全面评估 RAG 模型的性能,人们使用了如 RGB(opens in a new tab) 和 RECALL(opens in a new tab) 等多个基准测试。同时,开发了如 **RAGAS(opens in a new tab)****、**ARES(opens in a new tab) 和 TruLens(opens in a new tab) 等多种工具,以自动化 RAG 系统评估流程。一些系统还利用大语言模型来确定上述某些质量指标。
RAG 研究的挑战与前景
我们在这次概述中讨论了 RAG 研究的多个方面,以及如何通过不同的方法来增强检索、补充和生成过程。以下是 Gao et al., 2023(opens in a new tab) 强调的,随着我们不断开发和完善 RAG 系统,将会面临的几个关键挑战:
-
上下文长度问题: 随着大语言模型不断扩大其处理的上下文范围,我们需要对 RAG 进行调整,以确保它能够有效捕获到最相关和关键的上下文信息。
-
系统的鲁棒性: 如何处理与现实相反的信息和对抗性信息,对于提高 RAG 的性能至关重要。
-
混合方法的探索: 目前,研究者正在努力更好地理解如何将 RAG 与专门调整过的模型结合使用,以实现最佳效果。
-
扩展大语言模型的作用: 如何进一步提升大语言模型在 RAG 系统中的作用和能力,是一个高度关注的领域。
-
规模化法则的探究: 大语言模型的规模化法则及其在 RAG 系统中的应用仍然是一个未完全解决的问题。
-
生产级 RAG 的挑战: 要实现可投入生产使用的 RAG 系统,需要在性能、效率、数据安全性、隐私保护等方面达到工程上的卓越。
-
多模态 RAG 的发展: 尽管已有大量研究集中于文本任务的 RAG 系统,但现在我们正开始探索如何将 RAG 应用到更多领域,比如图像、音频、视频和编码等。
-
评价机制的完善: 随着 RAG 被用于构建更为复杂的应用,开发能够细致评估上下文相关性、创新性、内容多样性、准确性等方面的评价工具变得尤为重要。此外,提高对 RAG 的解释性研究和工具开发也是必要的。
构建 RAG 系统工具
在全体营销团队的翘首企盼中,我们迎来了年度营销会议,来自全国各地的营销精英汇聚一堂,互通有无,共谋发展。
构建 RAG 系统时,可以选择多种_综合工具如 LangChain、LlamaIndex 和 DSPy,这些工具提供了强大的功能来支持不同的需求。此外,还有一些专门平台,比如 Flowise AI、fastGPT和Dify,它们提供了一个低代码平台,使得构建 RAG 应用变得更加简单。其他值得关注的技术还包括 HayStack、Meltano 和 Cohere Coral 等_,这些技术为特定的需求提供了解决方案。同时,一些软件和云服务提供商也开始提供以 RAG 为中心的服务,例如 Weaviate 的 Verba 适合构建个人助理应用,而亚马逊的 Kendra 则提供智能企业搜索服务。
这些工具和服务的开发,不仅推动了 RAG 技术的应用范围扩展,也为研究人员和开发者提供了更多的可能性,使他们能够更容易地探索和实现复杂的 RAG 应用。随着技术的不断进步,我们期待看到更多创新的应用出现,为用户带来更加丰富和深入的交互体验。
结论
在总结中,我们看到了 RAG(检索增强生成)系统的快速进步,这包括了能够定制并推动 RAG 在多个领域性能和实用性进一步提高的先进范式的开发。RAG 应用的需求极为旺盛,这促使了对于改进 RAG 系统各个组件的方法的快速发展。无论是融合不同技术的方法还是自我检索技术,这些都是目前 RAG 模型研究中正在探索的领域。
对于更优秀的评估工具和衡量指标的需求也在不断增长。下图提供了一个关于 RAG 生态系统、提升 RAG 性能的技术、面临的挑战及本综述讨论的其他相关内容的概览:
_图片来源:_为大语言模型增强检索生成:一项调查(opens in a new tab)
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。