01 RAG的场景及技术原理
本门课程为精品小课,不标配音频
你好,我是常扬。
在探讨RAG技术之前,我们先看在开发大语言模型(LLM)应用时会遇到的典型场景问题。比如,当设计一个LLM问答应用,模型需要处理用户的领域问题时,尽管大模型通常表现出色,但有时提供的答案并不准确,甚至可能出现错误。当用户需要获取实时信息时,模型无法及时提供最新的答案。这种现象在LLM应用中较为常见。
随着ChatGPT、文心一言、通义千问、LLama系列等大模型的广泛应用,各行业尝试将其引入业务流程。这些模型在知识、理解和推理方面展现了卓越的能力,在复杂交互场景中表现尤为突出。
然而,这些模型仍然存在一些无法忽视的局限性。其中, 领域知识缺乏 是最明显的问题。大模型的知识来源于训练数据,这些数据主要来自公开的互联网和开源数据集,无法覆盖特定领域或高度专业化的内部知识。 信息过时 则指模型难以处理实时信息,因为训练过程耗时且成本高昂,模型一旦训练完成,就难以获取和处理新信息。
此外, 幻觉问题 是另一个显著的局限,模型基于概率生成文本,有时会输出看似合理但实际错误的答案。最后, 数据安全性 在企业应用中尤为重要,如何在确保数据安全的前提下,使大模型有效利用私有数据进行推理和生成,是一个具有挑战性的问题。
为了解决这些问题,仅依赖LLM本身是不足的。RAG(Retrieval-Augmented Generation,检索增强生成)技术应运而生。通过将非参数化的外部知识库、文档与大模型相结合,RAG使模型在生成内容之前,能够先检索相关信息,从而弥补模型在知识专业性和时效性上的不足,减少生成不确定性,在确保数据安全的同时,充分利用领域知识和私有数据。
选择RAG而不是直接将所有知识库数据交给大模型处理,主要是因为模型能够处理的token数有限,输入过多token会增加成本。更重要的是,提供少量相关的关键信息能够带来更优质的回答。
在图中RAG的案例中,用户提出了一个涉及OpenAI公司CEO Sam Altman的实时问题,询问其在短时间内被解雇和重聘的事件。在不使用RAG的情况下,由于大语言模型(LLM)无法访问实时更新的外部信息,用户只能得到一个无法提供有效回答的结果。而通过RAG技术,将相关的实时信息转化为知识库内容,并通过检索模块检索到与用户查询高度相关的文档片段,最终生成的回答不仅准确,而且涵盖了实时信息的背景和细节,为用户提供了有价值的解答。
RAG技术的定义
RAG技术是一种结合检索与生成的自然语言处理(NLP)模型架构。这个技术由Facebook AI于2022年提出,旨在提升生成式模型在处理开放域问答、对话生成等复杂任务中的性能。RAG通过引入外部知识库,利用检索模块(Retriever)从大量文档中提取相关信息,并将这些信息传递给生成模块(Generator),从而生成更准确且有用的回答。
RAG模型的核心思想在于通过检索与生成的有机结合,弥补大模型在处理领域问题和实时任务时的不足。 传统的生成模型在面对复杂问题时,往往由于知识储备不足,生成出错误或无关的回答。而RAG通过检索模块获取相关的背景信息,使生成模块能够参考这些信息,从而生成更具可信度和准确性的答案。这种方法不仅增强了生成内容的准确性,还提高了模型在应对特定领域知识和动态信息时的适应能力。
RAG技术应用场景
RAG技术凭借其将检索与生成相结合的优势,可广泛应用于多个领域和场景,满足了在大模型应用中实时性、高准确性和领域专有知识获取的需求。
在企业或领域知识管理与问答系统中,RAG能够实时从企业或领域的私有知识库中检索相关信息,确保生成的回答不仅准确且符合企业内部的最新动态,解决了大模型在处理特定领域知识时的局限性。
其次,在客户支持与智能客服系统中,RAG可以动态地将用户的询问与最新的产品信息、客服知识等外部数据相结合,生成的回答更加贴合客户的实际需求,且满足企业要求。
此外,RAG在医疗、金融等对数据准确性、时效性要求极高的专业领域中尤为重要。通过实时检索最新的研究成果、市场动态或文档资料,RAG确保了生成的内容不仅基于最新信息,同时具备领域专有知识的深度分析能力。这些场景中,RAG的应用有效优化了大模型的固有缺陷,为大模型应用提供了更高的可靠性和场景可落地性。
RAG标准技术流程
RAG标准流程由 索引(Indexing)、 检索(Retriever)和 生成(Generation)三个核心阶段组成。
- 索引阶段,通过处理多种来源多种格式的文档提取其中文本,将其切分为标准长度的文本块(chunk),并进行嵌入向量化(embedding),向量存储在向量数据库(vector database)中。
- 检索阶段,用户输入的查询(query)被转化为向量表示,通过相似度匹配从向量数据库中检索出最相关的文本块。
- 最后生成阶段,检索到的相关文本与原始查询共同构成提示词(Prompt),输入大语言模型(LLM),生成精确且具备上下文关联的回答。
通过这一流程,RAG实现了检索与生成的有机结合,显著提升了LLM在领域任务中的准确性和实时性。
索引是RAG系统的基础环节,包含四个关键步骤。
- 首先,将各类数据源及其格式(如书籍、教材、领域数据、企业文档等,txt、markdown、doc、ppt、excel、pdf、html、json等格式)统一解析为纯文本格式。
- 接着,根据文本的语义或文档结构,将文档分割为小而语义完整的文本块(chunks),确保系统能够高效检索和利用这些块中包含的信息。
- 然后,使用文本嵌入模型(embedding model),将这些文本块向量化,生成高维稠密向量,转换为计算机可理解的语义表示。
- 最后,将这些向量存储在向量数据库(vector database)中,并构建索引,完成知识库的构建。这一流程成功将外部文档转化为可检索的向量,支撑后续的检索和生成环节。
检索是连接用户查询与知识库的核心环节。 首先,用户输入的问题通过同样的文本嵌入模型转换为向量表示,将查询映射到与知识库内容相同的向量空间中。通过相似度度量方法,检索模块从向量数据库中筛选出与查询最相关的前K个文本块,这些文本块将作为生成阶段输入的一部分。通过相似性搜索,检索模块有效获取了与用户查询切实相关的外部知识,为生成阶段提供了精确且有意义的上下文支持。
生成是RAG流程中的最终环节,将检索到的相关文本块与用户的原始查询整合为增强提示词(Prompt),并输入到大语言模型(LLM)中。LLM基于这些输入生成最终的回答,确保生成内容既符合用户的查询意图,又充分利用了检索到的上下文信息,使得回答更加准确和相关,充分使用到知识库中的知识。通过这一过程,RAG实现了具备领域知识和私有信息的精确内容生成。
RAG与微调的选择
在大模型专业领域场景的应用中,RAG与微调都是可行的选择,选择的关键在于应用场景更注重外部知识的需求还是模型领域能力的需求。RAG擅长于高效整合外部知识,尤其在频繁处理实时信息,或者需要回答复杂且依赖外部知识的问题、回答需要具备可解释性需求时,RAG通过结合检索系统和生成模型,能够实时利用最新信息,生成上下文相关且准确的答案。因此,当应用场景对外部知识的利用有较高需求时,RAG是更为适宜的方案。
微调更适合需求稳定、领域知识固定且不需要频繁更新知识库的场景。通过使用特定领域的数据对模型进行深度优化,微调可以提升模型在特定任务或领域中的推理能力,确保输出内容的专业性和一致性。因此,当任务侧重于某一特定领域,并且对实时信息的依赖较低时,微调更能满足这些需求。
总的来说,RAG更适用于需要动态响应、频繁更新外部知识的场景,而微调则适合固定领域内的深度优化与推理。当应用场景中既需要利用最新的外部知识,又需要保持高水平的领域推理能力时,可以考虑结合使用RAG和微调,以实现最优的性能和效果。
小结
这节课我们探讨了在开发LLM应用时所面临的挑战及RAG技术价值,介绍了RAG技术的定义、应用场景、标准技术流程及与微调的选择。主要内容如下:
-
LLM的局限性:LLM应用场景存在领域知识缺乏、信息过时、幻觉问题和数据安全问题。
-
RAG技术价值:为了解决这些局限性,RAG利用检索外部文档提升生成结果质量,充分利用领域知识和私有数据、实时数据,减少生成不确定性,并增强数据安全。
-
RAG技术定义:通过引入外部知识库,利用检索模型从大量文档中提取相关信息,Prompt组合问题和外部信息,生成更精准且实时的回答。
-
RAG应用场景:企业或领域知识管理与问答、客户支持与智能客服系统,以及医疗、金融等对数据实时性、精准性要求极高的专业领域等等。
-
RAG标准流程:索引流程、检索流程、生成流程3个关键环节。
-
RAG与微调的选择:RAG注重高效整合外部知识,微调适合领域知识固定且对领域推理能力要求高的场景,综合上述需求的场景可以选择RAG与微调结合。
思考题
这节课我们介绍了RAG、微调、以及RAG+微调这三种模式。你能不能针对每种模式举出更多适用的场景,并说明该场景选择该模式的原因?期待在留言区看到你的思考,如果你觉得这节课的内容对你有帮助的话,欢迎你分享给其他朋友,我们下节课再见!