检索增强生成(RAG)入门

摘要:RAG是一个利用特定任务的外部知识来提高由生成模型驱动的应用性能的框架。RAG流水线的有不同组成部分,包括外部知识源、提示模板和生成模型,如何在检索、增强和生成。包括市场上流行的RAG使用案例和实现框架,例如LangChain、LlamaIndex和DSPy。最后本文涉及了一些专业的RAG技术,包括高级RAG方法、智能体RAG和图形RAG,以及用于评估RAG流水线的方法。

目录

1概要

1.1生成模型的限制

1.2检索增强生成 (RAG)是什么?

2RAG架构

3提示模板

4RAG是如何工作的?

4.1检索

4.2增强

5RAG使用案例

5.1实时信息检索(知识问答)

5.2内容推荐系统

5.3个人AI助手

6如何实现RAG

7RAG技术

7.1高级RAG

7.2智能体主动解析生成网络 (Agentic RAG)

7.3图 RAG

8如何评估RAG

8.1端对端评估

8.2RAG vs.微调

1 概要

在本文中,我们向您介绍了RAG,这是一个利用特定任务的外部知识来提高由生成模型驱动的应用性能的框架。我们了解了RAG流水线的不同组成部分,包括外部知识源、提示模板和生成模型,以及它们如何在检索、增强和生成中共同发挥作用。我们还讨论了流行的RAG使用案例和实现框架,例如LangChain、LlamaIndex和DSPy。最后,我们涉及了一些专业的RAG技术,包括高级RAG方法、智能体RAG和图形RAG,以及用于评估RAG流水线的方法。

尽管不断发布越来越大且更智能的模型,但目前最先进的生成式大型语言模型(LLMs)仍然存在一个大问题:它们在需要专业知识的任务上表现欠佳。这种缺乏专业知识可能会导致幻觉等问题,即模型生成不准确或虚构的信息。检索增强生成(RAG)通过允许模型从外部来源实时提取专业数据,增强其提供准确和详细回答的能力,有助于缓解这一问题。

尽管存在这些限制,生成模型是有影响力的工具,可以自动化琐碎的工作流程,协助我们在日常工作中,并使我们能够以新的方式与数据互动。那么我们如何能够利用它们的广泛知识,同时又使它们适用于我们的特定用例呢?答案在于向生成模型提供特定任务的数据。

在这篇文章中,我们深入探讨了检索增强生成(RAG)技术,这是一种通过让生成模型引用外部数据来增强其能力的框架。我们将探讨导致RAG创建的生成模型的局限性,解释RAG的工作原理,并解析RAG流水线背后的架构。我们还将实践并概述一些真实世界的RAG应用案例,提出实施RAG的具体方法,向您介绍一些高级RAG技术,并讨论RAG评估方法。

注意

LLM是一个广义术语,指的是在大型数据集上训练的能够执行各种文本和语言相关任务的语言模型对于对用户提示生成新文本的LLM,例如聊天机器人中使用的模型,被称为生成式LLM或生成模型将文本数据编码到语义空间中的LLM被称为嵌入模型(embedding model)。因此,在本文中我们使用生成模型和嵌入模型这两个术语来区分这两种模型。

1.1 生成模型的限制

生成模型是在大型数据集上训练的,包括(但不限于)社交媒体帖子、书籍、学术文章和抓取的网页,使它们能够获取一定程度的普遍知识。因此,这些模型可以生成类似人类的文本,回答各种问题,并协助回答、总结和创意写作等任务。

然而,生成模型的训练数据集不可避免地是不完整的,因为它们缺乏有关小众主题和数据集截止日期之后的新发展的信息。生成模型还无法访问来自内部数据库或存储库的专有数据。而且,当这些模型不知道问题的答案时,它们通常会猜测,有时并不很好。这种生成不正确或虚构信息的倾向以令人信服的方式被称为幻觉,可能在面向客户的AI应用中造成真实的声誉损害。

提高专业任务表现和减少幻觉的关键是为生成模型提供训练数据中未包含的额外信息。这就是RAG的作用所在。

1.2 检索增强生成(RAG)是什么?

检索增强生成(RAG)是一个框架,通过从外部数据源检索到与手头任务相关的附加数据,来增强生成式LLM的通用知识。

外部数据源可以包括内部数据库、文件和存储库,以及公开可用的数据,如新闻文章、网站或其他在线内容。访问这些数据使模型能够更具事实依据地回应,引用其回答中的信息来源,并在被询及模型原始训练数据集中未找到的信息时避免“猜测”。

RAG的常见用例包括获取最新信息,访问专业领域知识,回答复杂的、数据驱动的查询

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈


2RAG架构

RAG流水线的基本部分可以分为三个组件:外部知识源,提示模板和生成模型。这些组件共同使LLM动力的应用程序能够通过利用宝贵的任务特定数据生成更准确的响应。

外部知识源

外部数据源通常是任务特定的,很可能超出模型的原始训练数据或参数知识的范围。此外,它们通常存储在向量数据库中,并且在主题和格式上可能存在广泛的变化。

流行的外部数据来源包括内部公司数据库、法律法规和文件、医学和科学文献以及抓取的网页。私人数据源也可以在RAG中使用。个人AI助手,如微软的Copilot,利用多个个人数据来源,包括电子邮件、文档和即时消息,提供定制的回复并更高效地自动化任务。

3 提示模板

提示是我们用来向生成模型传达请求的工具。提示可能包含多个元素,但通常包括查询、指令和引导模型生成相关响应的上下文。

提示模板提供了一种结构化的方式来生成标准化的提示,在其中可以插入各种查询和上下文。在RAG流水线中,从外部数据源检索相关数据并将其插入提示模板中,从而增强提示。本质上,提示模板充当外部数据与模型之间的桥梁,在推理过程中向模型提供有关上下文的相关信息,以生成准确的响应。

上下文信息如下。

--------------------- {context_str} ---------------------根据上下文信息,不考虑先验知识,回答以下问题。 问题: {query_str}答案:

生成式大规模语言模型(LLM)

RAG模型中的最后一个组件是生成式LLM,或生成模型,用于生成对用户查询的最终回复。增强的提示信息,结合外部知识库中的信息,被发送到模型,该模型生成结合模型内部知识和新检索数据的响应。

现在我们已经介绍了RAG架构及其关键组件,让我们看看它们如何在RAG工作流中结合在一起。

4 RAG是如何工作的?

RAG****是一个多阶段框架,一般分为两个阶段。

首先,在摄取阶段对外部知识进行预处理和准备以供检索。接下来,在推理阶段,模型从外部知识库中检索相关数据,将其与用户的提示进行增强,并生成响应。现在,让我们更仔细地看看每个阶段。

阶段1:摄入

首先,需要准备外部知识源。基本上,外部数据需要清洁并转换为模型可以理解的格式。这称为摄取阶段。在摄取过程中,文本或图像数据通过一种称为矢量化的过程从其原始格式转换为嵌入。生成嵌入后,需要以一种可在以后检索时存储它们的方式存储。通常,这些嵌入存储在矢量数据库中,这允许对下游任务的信息进行快速、高效的检索。

阶段2:推理

外部数据编码并存储后,就可以在推理过程中检索,当模型生成响应或回答问题时。推理分为三个步骤:检索、增强和生成。

4.1 检索

推理阶段从检索开始,在这个阶段,会根据用户的查询从外部知识源中检索数据。检索方法在格式和复杂性上各不相同,然而在天真的RAG架构中,外部知识被嵌入和存储在向量数据库中,相似性搜索是最简单的检索形式。

进行相似性搜索时,用户查询必须首先嵌入到与外部数据相同的多维空间中,这样可以直接比较查询和嵌入的外部数据。在相似性搜索过程中,计算查询和外部数据点之间的距离,返回距离最短的数据点,完成检索过程。

4.2 增强

外部数据源中提取出最相关的数据点后,增强过程通过将这些外部信息插入预定义的提示模板中来集成这些外部信息。

4.3生成

在将增强提示注入模型的上下文窗口后,它开始生成对用户提示的最终响应。在生成阶段,模型结合其内部语言理解和增强外部数据,以生成连贯、符合上下文的答案。

这一步涉及到以流利自然的方式制作回复,同时利用丰富信息确保输出既准确又与用户查询相关。尽管增强是关于整合外部事实,生成则是将这些综合知识转化为一个形式良好、类人的输出,以满足特定请求。

5 RAG使用案例

现在我们已经介绍了RAG是什么,它是如何工作的,以及它的架构,让我们探讨一些实际应用案例,看看这个框架在现实场景中是如何应用的。通过使用最新的、任务特定的数据来增强生成式LLMs,可以提高它们的准确性、相关性和处理专门任务的能力。因此,RAG广泛应用于实时信息检索、创建内容推荐系统和构建个人AI助手。

5.1 实时信息检索(企业内知识问答QA)

当单独使用时,生成模型仅限于检索其训练数据集中的信息。然而,在RAG的背景下使用时,这些模型可以从外部来源检索数据和信息,确保更准确和及时的响应。一个例子是ChatGPT-4o能够实时从网络直接访问和检索信息。这是一个利用外部数据源的RAG用例示例,这些数据源未嵌入向量数据库中,对于回答用户有关新闻或其他当前事件的查询特别有用,如股票价格、旅行建议和天气更新。

5.2 内容推荐系统

**内容推荐系统分析用户数据和偏好,向用户推荐相关产品或内容。**传统上,这些系统需要复杂的集成模型和庞大的用户偏好数据集。RAG简化了推荐系统,直接将外部、与上下文相关的用户数据与模型的一般知识集成,从而生成个性化推荐。

5.3 个人AI助手

我们的个人数据,包括文件、电子邮件、Slack消息(IM,类似微信等)和笔记,是生成模型的宝贵数据来源。在我们的个人数据上运行RAG使我们能够以对话方式与其互动,提高效率,并实现日常任务的自动化。通过使用AI助手,如微软的Copilot和Notion的Ask AI,我们可以使用简单的提示来搜索相关文档,撰写个性化电子邮件,总结文档和会议记录,安排会议等。

6 如何实现RAG

现在我们知道了RAG是如何工作的,让我们探讨如何构建一个功能性的RAG流程。RAG可以通过多种不同的框架实现,这些框架通过提供预先构建的工具和模块来简化构建过程,以便集成单独的RAG组件以及外部服务,如向量数据库、嵌入生成工具和其他API。

LangChain, LlamaIndex和DSPy都是具有高度参与社区的稳健的开源Python库,为构建和优化RAG流水线和LLM应用提供了强大的工具和集成。

1.LangChain提供构建块、组件和第三方集成,以帮助开发基于LLM的应用程序。它可以与LangGraph一起用于构建主动式RAG流水线,与LangSmith一起用于RAG评估。

2.LlamaIndex是一个框架,提供了构建集成外部数据源的LLM动力应用程序的工具。LlamaIndex维护着LlamaHub,这是一个丰富的数据加载程序、智能体工具、数据集和其他组件的存储库,可以简化RAG流水线的创建。

3.DSPy是一个用于优化LLM流水线的模块化框架。在DSPy中可以配置LLMs和RMs(检索模型),从而实现对RAG流水线的无缝优化。

4.等等

注意

Weaviate(向量数据库之一)为每个框架提供集成和示例。具体示例,请查看我们的笔记本,展示如何使用Weaviate、LlamaIndex和DSPy构建RAG流水线。

如果您希望快速开始使用RAG,请查看Verba,这是一个开源的、具有现成前端的RAG应用程序。Verba使您能够在几个简单的步骤中对数据集进行可视化探索,提取见解,并构建可定制的RAG流水线,而无需学习全新的框架。Verba是一个多功能工具,可用作测试和实验RAG流水线的试验场所,也可用于个人任务,如协助研究、分析内部文件以及简化各种与RAG相关的任务。

Verba实现的开箱即用的RAG模型。

7 RAG技术

朴素RAG工作流程通常由嵌入在向量数据库中的外部数据源通过相似性搜索检索而得。然而,有几种方法可以增强RAG工作流程,以产生更准确和稳健的结果,总称为高级RAG。

RAG流水线的功能可以通过整合图数据库和智能体的使用进一步扩展,从而实现更高级的推理和动态数据检索。在接下来的部分中,我们将介绍一些常见的高级RAG技术,并为您概述智能体RAG和图形RAG。

7.1 高级RAG

高级RAG技术可以在流水线的各个阶段部署。像元数据过滤和文本分块这样的预检索策略可以通过缩小搜索空间和确保仅考虑最相关的数据部分来提高检索效率和相关性。采用更先进的检索技术,如混合搜索,将相似性搜索的优势与关键词搜索相结合,也可以产生更稳健的检索结果。最后,使用排名模型对检索结果重新排序,并使用在特定领域数据上进行微调的生成式LLM有助于提高生成结果的质量。

深入探讨这一主题,请查看我们关于高级RAG技术的博文。

7.2 智能体主动解析生成网络(Agentic RAG)

AI智能体是自主系统,能够解释信息,制定计划并做出决策。当添加到RAG流水线中时,智能体可以重新构造用户查询并重新检索更相关的信息,如果初始结果不准确或无关。智能体式RAG还可以处理需要多步推理的更复杂查询,比如跨多个文档比较信息,询问后续问题,并迭代地调整检索和生成策略。

查看集成了智能体的RAG流水线,请查看有关Agentic RAG的博客。

7.3 图RAG

传统的RAG在可以通过检索解决的简单问答任务上表现出色,但无法在整个外部知识库上回答问题并得出结论。图RAG旨在通过使用生成模型来创建一个知识图,提取并存储关键实体之间的关系,然后将其添加为RAG流水线的数据源。这使得RAG系统能够回应查询,要求比较和总结多个文档和数据源。

查看有关构建图RAG流水线的更多信息,请查看Microsoft的GraphRAG软件包和文档。

8 如何评估RAG

RAG是一个多阶段、多步骤的框架,需要进行整体和细致的评估。这种方法确保了组件级的可靠性和高水平的准确性。在这一部分,我们将探讨这两种评估方法,并涉及到RAGAS,一个流行的评估框架。

组件级评估

在组件级别上,RAG评估通常侧重于评估检索器和生成器的质量,因为它们在产生准确和相关响应方面都发挥着关键作用。

在这种情况下,准确性衡量的是检索器选择与查询直接相关信息的准确程度,而相关性评估的是检索到的数据与查询的特定需求和背景之间的密切关系。

另一方面,生成器的评估侧重于忠实度和正确性。忠实度评估模型生成的响应是否准确地代表相关文件中的信息,并检查响应与原始来源的一致性。正确性评估生成的响应是否真实且与基于查询上下文的地面真相或预期答案一致。

8.1 端对端评估

虽然检索器和生成器是两个独立的组件,但它们彼此依赖,以产生对用户查询的连贯响应。

计算答案语义相似度是评估检索器和生成器如何共同工作的一种简单而高效的方法。答案语义相似度计算生成的响应与基准样本之间的语义相似度。生成的响应与基准样本具有高度相似度的情况表明,流水线能够检索相关信息并生成语境适当的响应。

注意

RAG评估框架提供了结构化的方法、工具或平台来评估RAG流水线。RAGAS(检索增强生成评估)是一个特别受欢迎的框架,它提供了一套度量标准,以评估检索相关性、生成质量和忠实度,而无需人工标记的数据。收听Weaviate播客的这一集,了解更多关于RAGAS如何运作以及优化RAGAS分数的高级技术,直接从创作者口中获得。

8.2RAG vs.微调

RAG只是扩充生成式LLM能力并缓解其限制之一的方法。**微调LLMs是一种特别受欢迎的技术,通过在特定领域数据上训练来定制模型以执行高度专业化的任务。**虽然微调对于某些用例可能是理想的,比如训练LLM采用特定的语调或写作风格,但RAG通常是提高模型准确性、减少幻觉,以及为特定任务定制LLMs的最快捷途径。

RAG的美妙之处在于其基础生成模型的权重不需要更新,这可能是昂贵且耗时的。RAG允许模型动态访问外部数据,提高准确性而无需昂贵的重新训练。这使其成为需要实时信息的应用的实用解决方案。在接下来的部分中,我们将深入探讨RAG的架构,以及其组件如何共同工作以创建强大的检索增强系统。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值