How to Use Retrieval Augmented Generation (RAG)
2025-2-12
| 2025-2-13
Words 5356Read Time 14 min
type
status
date
slug
summary
tags
category
icon
password

What is Retrieval-Augmented Retrieval (RAG)?

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

那么,检索增强生成(RAG)到底是怎么回事呢?首先,我们需要明确大型语言模型(LLM)擅长的任务——通过自然语言处理(NLP)生成内容。如果你要求一个大型语言模型基于它从未接触过的数据生成回答(比如只有你知道的、特定领域的信息,或者是LLM尚未训练到的最新信息),它将无法生成准确的答案,因为它没有关于这些相关信息的知识。
 

Enter Retrieval Augmented Generation

引入检索增强生成(RAG)

检索增强生成(RAG)作为一种框架,帮助大型语言模型在生成回答时提供准确和相关的信息。为了更好地解释“RAG”,我们首先来看一下其中的“G”。在“RAG”中,“G”代表的是大型语言模型(LLM)根据用户的查询(即提示)生成文本。然而,不幸的是,有时模型生成的回答可能并不理想。
例如:
问题:第一次人类登陆火星是在什么年份?
错误回答(幻觉式回答):第一次人类登陆火星是在2025年。
在这个例子中,语言模型提供了一个虚构的答案,因为截至2024年,人类还没有登陆火星!该模型可能根据从训练数据中学到的模式生成回答。如果它遇到一个尚未发生的事件问题,它仍然可能尝试提供答案,从而导致不准确或“幻觉式”回答。
此外,这个答案也缺少来源,没有来源的情况下,你很难确信这个答案的可靠性。而且,答案通常是过时的。在我们的案例中,LLM没有经过最新的公共数据训练,比如NASA发布的关于其将人类送上火星的准备工作。无论如何,在依赖语言模型获取信息时,重要的是意识到并解决这些问题。
下面是我们遇到的几个问题:
  • 没有列出来源,因此我们对这个答案的来源缺乏信心。
  • 信息过时。
  • 回答可能是基于LLM训练的数据编造出来的,我们称之为AI幻觉。
  • 内容可能并不在公共互联网上,这也是大多数LLM训练数据的来源。
当我在NASA网站上查找关于人类登陆火星的信息时,我可以看到NASA提供了大量关于如何准备人类探索火星的信息。深入查看NASA网站,你会发现2023年6月开始了一项为期378天的火星表面模拟任务。最终,这项任务会结束,所以关于人类登陆火星的信息会不断变化。因此,我现在可以通过更可信的来源来支持我的回答(比如NASA网站),并且我没有像LLM那样编造答案。
那么,如果使用LLM会有这些问题,它的意义何在呢?这就是“RAG”中的“RA”部分的作用。检索增强意味着我们不再依赖LLM所训练的数据,而是为LLM提供包含正确答案和来源的训练数据,并要求其生成总结并列出来源。通过这种方式,我们帮助LLM避免生成虚假的答案。
我们通过将内容(如文档、PDF等)存储在结构化数据中,例如向量数据库,来实现这一点。在这种情况下,我们将创建一个聊天机器人界面,让用户通过这个界面与系统互动,而不是直接使用LLM。然后,我们将我们的内容转换为向量嵌入并存储在向量数据库中。当用户向聊天机器人界面提出问题时,我们指示LLM从向量数据库中检索与查询相关的信息。LLM会将问题转换为向量嵌入,并使用存储在数据库中的数据进行语义相似性搜索。然后,带有检索增强的答案,聊天机器人应用程序可以将其与来源一同发送给LLM,要求其根据用户问题、提供的数据和证据生成总结。
希望你能看到RAG如何帮助LLM克服上述挑战。首先,对于不准确的数据,我们提供了一个包含正确数据的数据存储,应用程序可以从中检索信息,并将其与原始问题一起发送给LLM,严格指示只使用这些数据生成回答。其次,我们可以指示LLM注意数据来源并提供证据。我们甚至可以进一步要求LLM在无法根据存储在向量数据库中的数据可靠地回答问题时,回答“我不知道”。

How Does RAG Work?

notion image

检索增强生成(RAG)的工作原理

检索增强生成(RAG)从选择你希望用于RAG应用程序的数据源开始,以提供上下文相关的结果。这些数据源可以包括从文本文件、数据库到多媒体文件的任何内容,具体取决于你希望检索的信息类型。然后,这些数据源的内容会被转换成向量嵌入,这些向量是数据的数值表示。这个转换是通过选择的机器学习模型完成的,通常是一个预训练模型,能够捕捉数据的语义意义。一旦生成了向量嵌入,它们会被存储在向量数据库中,这是一种专门的数据库类型,优化了处理高维向量和高效相似性搜索。
当应用程序接收到一个查询(例如,向聊天机器人提出的问题)时,它会在向量数据库中触发语义搜索。首先,这个查询会被转换为一个向量嵌入,类似于数据库中存储的数据,从而实现基于语义相似性的比较,而不是精确的关键词匹配。然后,向量数据库会进行搜索,根据这些嵌入在向量空间中的接近程度来识别最相关的文档或数据点。搜索结果,即上下文相关的文档或数据片段,将与最初的查询和提示结合,形成一个完整的输入,并发送到大型语言模型(LLM)。
LLM使用这个输入生成一个回答,这个回答不仅是基于上下文的,而且与用户的原始查询高度相关。这个过程不仅确保生成的信息是基于可靠的数据源,还利用机器学习的力量来解释和回答复杂的查询,确保高准确度。通过结合向量数据库和LLM,RAG系统能够提供更细致、精准的信息检索,特别适用于那些需要复杂、上下文感知响应的应用。

RAG vs. Fine tuning a Model

RAG与模型微调的对比

从检索增强生成(RAG)开始,通常是一个有效的入门点,它提供了一种直接而强大的方法,适用于许多应用。RAG允许你通过利用外部数据源来增强大型语言模型(LLM)的性能,这使得它成为开发者在不深度修改基础模型的情况下提高回答质量的一个可行选项。通过结合精心设计的提示,你还可以进一步优化回答,确保它们更紧密地与预期的使用场景对接。
另一方面,模型微调是一种更具针对性的方法,特别适用于需要调整语言模型本身行为,或使其理解某种专业“语言”或领域的情况。当任务要求模型生成高度特定于某一领域的输出时,比如法律文档、医学报告或其他专业内容,微调就显得尤为重要。通过微调,你可以修改模型的固有能力,使其更好地与应用的独特需求对接。
与其将RAG和微调视为互相排斥的选择,不如将它们视为互补的策略。一个全面的方法可以包括微调LLM,以改善它对特定领域语言的理解,确保它生成符合你应用需求的输出。同时,使用RAG可以通过提供最新的、上下文相关的信息来进一步提升回答的质量和相关性,这些信息来自外部数据源。通过结合这两种策略,你可以充分发挥两者的优势,从而得到一个更加稳健和有效的解决方案,既能满足一般需求,也能应对专业需求。

Addressing RAG Challenges Head-On

大型语言模型(LLMs)对您的数据一无所知

传统大型语言模型(LLM)的一大局限性是它们依赖静态数据集。这些模型虽然经过大量数据的训练,但它们的知识本质上受限于训练数据的截止点。换句话说,当面对涉及新发展、 emerging趋势或未包含在原始训练数据中的领域特定知识的查询时,LLM可能会提供过时、常常不准确,甚至是无关的回答。这些模型的静态特性限制了它们保持最新或动态适应变化的能力,使得它们在需要最新信息的应用场景中可靠性较差。

AI应用需要定制数据才能有效

要真正发挥LLM的潜力,特别是在专业领域,组织必须确保这些模型能够访问和理解特定于其领域的数据。单纯依赖通用的预训练模型对于那些需要精准和上下文准确回答的使用场景来说是不够的。例如,客户支持机器人需要根据公司产品、服务和政策提供量身定制的回答。同样,内部问答机器人应该能够提供符合公司现行实践和协议的详细、公司特定的信息。为了达到这种具体性,组织需要将其独特的数据集与LLM结合,允许模型生成不仅相关且与组织不断变化的需求相契合的回答。这种方法减少了广泛重新训练的需要,从而使得AI应用程序保持准确性和高效性。

Retrieval Augmentation as an Industry Standard

检索增强生成(RAG)作为行业标准

检索增强生成(RAG)已经成为各个行业的标准实践,展示了它在克服传统大型语言模型(LLM)固有局限性方面的价值。传统的LLM功能强大,但受限于其训练数据的静态特性,这些数据不会实时更新,且无法在训练后纳入新信息。这种静态特性限制了它们提供准确和最新回答的能力,尤其是在快速发展的行业或需要最新数据的场景中。
RAG通过将LLM与实时数据检索系统动态连接,解决了这一挑战。通过将相关的、最新的数据直接集成到提供给LLM的提示中,RAG有效地弥合了静态知识库与实时信息之间的差距。这个过程确保了生成的回答不仅在上下文上相关,而且是最新的,使得组织能够利用AI完成那些需要最准确和及时信息的任务。因此,RAG迅速成为依赖AI来增强决策过程、客户互动和整体运营效率的行业中的关键工具。

Retrieval Augmented Generation Use Cases

以下是最流行的RAG应用场景:
  1. 问答聊天机器人:通过从公司文档和知识库中提取准确答案,自动化客户支持并解决查询。
  1. 搜索增强:通过LLM生成的答案增强搜索引擎,改善信息查询响应,并促进更轻松的信息检索。
  1. 内部查询知识引擎:使员工能够询问公司数据相关问题,如人力资源、财务政策或合规文档等。

Benefits of RAG

RAG的优势
  1. 最新且准确的回答:RAG确保LLM的回答基于当前的外部数据源,减少了对静态训练数据的依赖。
  1. 减少不准确性和幻觉:通过将LLM的输出基于相关的外部知识,RAG最大程度地减少了提供不正确或虚构信息的风险,提供了具有可验证引用的输出。
  1. 领域特定且相关的回答:利用RAG,LLM能够提供根据组织专有或领域特定数据量身定制的上下文相关回答。
  1. 高效且具成本效益:与其他定制化方法相比,RAG简单且具成本效益,使得组织能够在无需大量模型定制的情况下部署这一技术。

Reference Architecture for RAG Applications

外部数据的准备工作

构建检索增强生成(RAG)应用的第一步是收集选定数据源中的内容。这些内容必须经过预处理,确保它们能够以适合应用程序使用的格式进行处理。根据分块策略,数据会被分割成适当的长度,以优化检索和处理效率。接着,数据会通过与所选下游LLM应用相对接的嵌入模型转换为向量嵌入。这一步为后续的准确高效数据检索奠定了基础。

索引相关信息

数据处理和嵌入完成后,下一步是对这些数据进行索引,以便快速和相关的搜索。生成文档嵌入,并使用这些数据创建向量搜索索引。向量数据库(Vector db)自动创建这些索引,提供多种数据管理功能,简化了索引内容的组织、检索和更新。

上下文检索(相关数据)

RAG系统的核心功能是能够检索与用户查询最相关的数据。当用户发出查询时,向量数据库会进行语义搜索,检索相关数据并将其融入到用于LLM总结和生成过程的提示中。这确保了LLM能够访问最相关的上下文,从而生成更加准确和上下文恰当的回答。

构建AI应用

在建立检索系统和查询机制后,下一步是将这些组件集成到功能性的AI应用程序中。这涉及到将现在经过增强的相关内容的提示以及LLM查询组件包装成一个端点。这个端点可以通过REST API暴露给各种应用程序,如问答聊天机器人,允许用户与RAG驱动的系统进行无缝交互。

评估

为了确保RAG系统的持续有效性和可靠性,定期评估至关重要。这包括评估LLM对用户查询生成的回答质量。通过与预设正确答案进行比较,使用地面真值指标来评估RAG生成的回答,而像RAG三重奏(RAG Triad)等指标用于评估用户查询、检索上下文和LLM相关响应之间的相关性。此外,还使用特定的LLM响应指标,如友好性、有害性和简洁性,来微调和优化系统输出。这个持续的评估过程对保持和提高RAG应用程序的性能至关重要。

Key Elements of RAG Architecture

向量数据库

向量数据库在检索增强生成(RAG)架构中起着核心作用,通过启用快速高效的相似性搜索,确保AI应用能够访问最相关的数据和最新的专有业务数据。这些数据库使得基于关键词的搜索变得更加精确和上下文适当,从而提高了响应的质量和准确性。

提示工程

提示工程涉及创建复杂且精准的指令,引导LLM仅根据提供的内容生成响应。有效的提示工程对于保持回答的相关性和准确性非常重要,尤其是在处理复杂或领域特定查询时。

ETL管道

An Extract, Transform, Load (ETL) pipeline is needed for handling data ingestion.提取、转换、加载(ETL)管道用于处理数据摄取。它管理诸如消除重复数据、处理更新(upserts)以及进行必要的转换(如文本拆分和元数据提取)等任务,然后将处理后的数据存储到向量数据库中。这一步确保数据干净、组织良好,并且准备好进行高效检索。

LLM

有多种LLM可供选择,包括开源和专有选项。选择哪个LLM取决于应用的具体需求,比如计算和财务成本、是否需要领域特定知识、语言支持和回答准确性等因素。

语义缓存

语义缓存(如GPT Cache)存储LLM生成的回答。该缓存机制有助于减少运营成本并提高性能,通过重用先前生成的回答来处理类似查询,从而减少冗余计算的需求。

RAG工具

第三方工具如 LangChainLLamaIndexSemantic Kernel 在构建检索增强生成(RAG)系统中非常宝贵。这些工具通常是与LLM无关的,为集成不同的LLM提供了灵活性,使得开发者能够构建强大且可扩展的RAG系统。

评估工具与指标

为了确保检索增强生成应用的质量和有效性,使用评估工具和指标至关重要。像 TruLensDeepEvalLangSmithPhoenix 这样的工具帮助评估LLM和RAG系统的性能,提供改进方向的见解,并确保生成的输出符合预期标准。

治理与安全

实施强有力的治理和安全措施对于维护RAG系统的完整性至关重要。这包括保护敏感数据、确保合规性以及建立管理和监控RAG基础设施访问的协议。

Navigating the RAG Architectural Landscape

探索RAG架构的全貌

在AI领域,越来越多的公司认识到,检索增强生成(RAG)不仅仅是一个工具,而是一个颠覆性的变革。它将大型语言模型(LLM)与向量数据库(vector db)无缝结合,能够检索最新的信息,提供准确、当前且行业特定的响应。RAG推动AI向着一个精确与灵活并存的未来发展,在这个未来中,今天的语言模型将成为明天的智能对话者。
了解检索增强生成的工作原理至关重要,尤其是当我们着手将生成式AI应用推向生产环境时,这一过程尤为重要。
这场旅程才刚刚开始,随着RAG的引领,现代信息检索系统的可能性是无限的。

Resources for Building RAG Applications

 
  • llm
  • RAG
  • How the CPU Translates Virtual Addresses to Physical Addresses ?DeepSeek 15-Day Guide: From Beginner to Mastery
    Loading...