目录
RAG的基础原理
如何更好地使用RAG技术?
RAG与微调之间的关系
RAG技术的发展趋势
总结
大语言模型,目前还无做到训练推理一体化(大白话就是大模型不能一边应用一边自身学习),训练的数据有一定的滞后性,无法即时学习新的数据。因此会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
正是这样的背景下,检索增强生成技术(Retrieval-Augmented Generation,RAG)应时而生,成为大语言模型利用外部知识库的一个有力的支撑工具。
RAG的基础原理
在大语言模型生成用户问题的答案之前,RAG先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信。

这是RAG技术的一个基础架构,我们详细分析下它的流程:
① Prompt + Query: 用户输入一个查询(Query),系统将其与一个预定义的提示(Prompt)结合,形成完整的查询语句。这个提示可以引导语言模型生成符合特定任务要求的回复。
② 形成的查询语句被发送到信息检索模块。
③ 信息检索模块在知识库(Knowledge Sources)中搜索与查询相关的信息片段,这些片段将被用于增强查询的上下文信息。知识库可以包括各种结构化或非结构化的数据源,如网页、文档、数据库等。
④ 检索出的相关信息片段被与原始的查询语句以及提示结合,形成增强后的上下文信息。
⑤ Generated Text Response: 增强后的上下文信息被输入到一个大型语言模型。大语言模型基于这个上下文生成最终的文本回复。
⑥ 生成的文本回复被返回给用户,完成一次查询-回复的过程。
RAG的基本结构有哪些呢?
要有一个向量化模块,用来将文档片段向量化。
要有一个文档加载和切分的模块,用来加载文档并切分成文档片段。
要有一个数据库来存放文档片段和对应的向量表示。
要有一个检索模块,用来根据 Query (问题)检索相关的文档片段。
要有一个大模型模块,用来根据检索出来的文档回答用户的问题。

如何更好地使用RAG技术?
首先明确一点的是,RAG技术依旧在快速的发展,需要持续跟踪它的发展动态。通常情况下,需要确保如下的优化来更好的使用RAG技术:
① 知识库的构建与维护:
RAG 系统的性能很大程度上取决于知识库的质量。知识库需要包含大量高质量、广覆盖的信息,以应对各种可能的查询。
知识库可以通过爬取网页、整合结构化数据库、人工标注等方式来构建。需要重点关注信息的准确性、相关性和时效性。
知识库需要定期更新以纳入新的信息。可以探索一些自动化的方法,如增量式爬虫、知识蒸馏等,来提高更新的效率。
② 信息检索的优化:
信息检索的目标是快速、准确地找到与查询最相关的信息片段。常用的方法包括关键词匹配、向量空间模型、语言模型等。
可以引入一些先进的检索技术,如 BERT 等预训练模型,来提高检索的精度,这些模型可以更好地捕捉查询和文档之间的语义关系。
在检索时,除了考虑查询与文档的相关性,还可以考虑一些额外的因素,如文档的质量、时效性、多样性等,以获得更全面、更可靠的上下文信息。
③ 提示的设计:
提示在引导语言模型生成特定风格和内容的回复中起关键作用。好的提示可以显著提高回复的质量和多样性。
提示可以手工设计,也可以通过一些自动化的方法来生成,如基于模板的方法、基于示例的方法等。
可以为不同的任务或场景设计不同的提示,如问答、对话、写作等。甚至可以动态地调整提示,以适应当前的对话状态。
④ 多轮对话的处理:
实际的对话系统通常需要处理多轮交互。这需要系统能够理解和跟踪对话的上下文,生成连贯、一致的回复。
可以引入一些对话管理技术,如对话状态跟踪、对话策略学习等,来增强系统处理多轮对话的能力。
还可以探索一些端到端的对话模型,如 DialoGPT、BlenderBot 等,它们可以在对话历史的基础上直接生成回复,无需显式的状态管理。
⑤ 人机协同:
尽管 RAG 系统可以自动生成高质量的回复,但在某些复杂的情况下,仍然需要人工的参与和干预。
可以设计一些人机协同的机制,如纠错、反馈、调节等,以持续提高系统的性能。人类专家可以帮助系统处理一些棘手的查询,也可以为系统提供更好的训练数据。
从长远来看,人机协同不仅可以提高系统的性能,也有助于我们更好地理解和优化人机交互的方式。
RAG与微调之间的关系
讨论了RAG技术,再聊聊RAG与FT之间的关系。什么是FT(Fine Tune)?FT中文翻译为微调,也称为精调。它指的是在大模型的预训练基础上进行额外的训练,以适应特定的任务或数据集。
RAG与FT的特点对比,如下图:

RAG 就像给模型一本教科书,用于定制的信息检索,非常适合特定的查询。另一方面,FT 就像一个学生随着时间的推移内化知识,更适合模仿特定的结构、风格或格式。FT 可以通过增强基础模型知识、调整输出和教授复杂指令来提高模型的性能和效率。然而,它不那么擅长整合新知识或快速迭代新的用例。RAG 和 FT,并不是相互排斥的,它们可以是互补的,联合使用可能会产生最佳性能。

RAG技术的发展趋势
RAG技术,对于大模型的实际应用,有着举足轻重、不可或缺的作用,尤其是协助大模型可以处理外部的知识库能力,以及实时的获取最新的知识和信息(搜索引擎与RAG相结合)。
RAG技术的信息检索,也并非简单的关键词搜索匹配,而是利用大模型能力捕捉用户语言的复杂模式和语义信息,从外部知识库中筛选出最匹配用户需求的知识块。
RAG技术使用的领域也非常广泛,RAG在文本、代码、音频、图像、视频、3D,结构化知识、以及AI4S等多个不同模态中不同具体任务上有着具体的应用。
RAG未来潜在的研究方向包括:
尝试探索更多关于RAG基础方法、提升方法、和应用的研究:未来的研究方向将关注开发更先进的方法来提升和应用RAG。由于检索器和生成器的优化目标不同,实际的增强过程对生成结果有很大影响。通过研究更先进的基础方法和提升方法,RAG的潜力有望被充分挖掘和利用。
更加高效的运行、部署RAG系统:目前已有几种基于查询的针对LLM的RAG部署解决方案,如LangChain和LLAMA-Index。但其他类型的RAG和生成任务,目前尚缺乏现成的解决方案。考虑到检索带来的额外开销,以及检索器和生成器复杂性的不断增加,实现高效运行、部署RAG仍是一个挑战,需要专门的系统优化。
更好的发挥RAG系统结合长尾和实时知识的能力:RAG的一个关键目标是利用实时和长尾知识,但如何更新和扩展知识库尚未得到充分研究。许多现有研究仅将生成器的训练数据作为检索源,忽视了检索信息源可以更加灵活动态的优势。因此,一个有前景的研究方向是设计一个能够不断更新知识或使用灵活知识源的RAG系统,并进行相应的系统优化。鉴于RAG能够利用长尾知识,我们期待它能够整合个性化信息和功能,以更好地适应当今的网络服务。
将RAG技术与其他先进AIGC技术结合使用:RAG技术与旨在提高AIGC有效性的其他技术(如微调、强化学习、思想链、基于Agent的生成和其他优化方法)是互补的。目前将RAG与这些技术结合的尝试还处于初期阶段,我们期待未来有更多研究来探索算法设计并最大化这些技术的潜力。
随着大型语言模型(LLMs)的上下文窗口不断增大,RAG模型需要进行相应的改进以适应这一变化,保持或提高其性能和效率:要更加高效的检索机制来快速处理和分析大量信息;增强RAG模型的上下文感知能力;改进信息融合策略,以更好地整合检索到的信息和模型自身的知识,特别是在处理大量信息时;增强RAG模型处理多模态数据的能力,如结合文本、图像和视频信息,以提供更丰富的上下文。
总结
要想用好大模型,需要充分理解RAG技术。RAG 的应用已经不仅仅局限于问答系统,其影响力正在扩展到更多领域。现在,推荐系统、信息抽取和报告生成等多种任务都开始受益于 RAG 技术的应用。与此同时,RAG 自身的新技术栈迭代也处于井喷状态。
code/s?__biz=MzU5NDI3Nzc0NA==&mid=2247483981&idx=1&sn=109c5e5b1d90fee0d5ce85c54a1fabc5&chksm=fe02e652c9756f44108b519a77f9762a45b94e65078122abd797490e8c71f7e2d4620326aba0#rd