天工一刻丨一文读懂大模型中必不可少的RAG技术
发布时间:2024-11-29 17:00分类: 无 浏览:213评论:0
昆仑万维推出《天工一刻》系列产业观察栏目。在本栏目中,我们将对大模型产业热点、技术创新、应用案例进行深度解读,同时邀请学术专家、行业领袖分享优秀的大模型行业趋势、技术进展,以飨读者。
大语言模型(LLMs)已然成为新生产力工具,这些模型以强大的语言理解和生成能力,为多样化to B/C应用场景提供了支持。随着应用的深化,LLMs在处理特定领域或知识密集型任务时的局限性也逐渐显现,如产生“幻觉”、知识过时以及推理过程的不透明和不可追溯等问题。
为克服这些挑战,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术应运而生,其核心思想是大模型在生成答案时,通过从外部知识库中检索相关信息,并将其作为提示输入给大语言模型(LLMs),从而增强模型处理知识密集型任务的能力,显著提升了生成的准确性和可信度。
01.
RAG演进历程与技术实现
RAG的概念首次于2020年被提出,RAG技术的起源可以追溯到Transformer架构的兴起,它通过预训练模型(PTM)增强语言模型,通过额外的知识来提升模型性能。
随着ChatGPT的出现,LLMs展示了强大的上下文学习能力,关于RAG的研究开始转向在推理阶段为LLMs提供更好的信息,以回答更复杂和知识密集型的任务。而近两年的发展也不再局限于推理阶段,而是开始与LLMs微调技术相结合,这些研究和工程进展使得RAG能更有效地处理特定知识、提高生成内容的准确性和相关性。
对一个通用的RAG架构来说,通常是用户给定一个输入查询,检索器识别相关的数据源,检索到的信息与生成器交互以改进生成过程。用户查询内容可能涵盖不同的模态,如文本、图片、音视频等作为检索器和生成器的输入。检索器从数据源中提取相关信息,生成器与检索结果进行交互,最终产生各种模态的输出内容。
具体从技术实现角度来说,RAG先使用嵌入模型(Embeddings Models)将文档切片转为向量,存入向量数据库。当有提问的时候,使用嵌入模型(如BERT)将问题转换为向量,然后在向量数据库中检索相关文档。再将检索到的文档作为上下文,结合原始问题输入到LLMs中以生成最终答案,从而提高回答的准确性和相关性。
例如,用户向ChatGPT提问一个热点新闻问题,鉴于ChatGPT依赖预训练数据,缺乏提供最新动态的能力。RAG通过从外部数据库获取和整合知识来弥补这一空白。在这种情况下,它收集与用户查询相关的新闻文章。这些文章与原始问题相结合,形成了一个全面的提示,使大模型能生成一个更有实效性的答案。
和其他信息检索和语言生成技术相比,RAG(检索增强生成)拥有天然的技术优势。
它不仅仅依赖模型自身的生成能力,还结合了检索功能,使得模型在生成文本时能够参考并利用外部知识库中的相关信息。这样一来,既缓解了幻觉问题、提高了响应的准确性,还能够在生成任务中更加灵活和有针对性地生成文本。此外,它的上下文感知能力更强、更擅长处理复杂任务、适用于不同领域的垂直和专有数据。
02.
三种技术范式和RAG增强方法
RAG研究范式不断迭代,可以将其分为三个阶段:Naive RAG、Advanced RAG
和Modular RAG。
(1) Naive RAG(基础RAG)
较早期使用的传统流程,包括索引、检索和生成,也称为“检索-阅读”框架。
索引阶段:从清理和提取原始数据开始,数据格式包括PDF、HTML、Word和Markdown,然后转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小、可消化的块(chunks)。使用嵌入模型将块编码为向量表示并存储在向量数据库中,此步骤对于在后续检索阶段实现高效的相似性搜索至关重要。
检索阶段:收到用户查询后,RAG系统采用与索引阶段相同的编码模型将查询转换为向量表示。接着计算查询向量与索引语料库中的块向量之间的相似度得分。系统会优先处理并检索与查询最相似的前K个块,这些块随后用作提示中的扩展上下文。
生成阶段:提出的查询和选定的文档被合成为一个连贯的提示,大型语言模型负责制定响应。模型的回答方法可能因任务特定的标准而异,允许它利用其固有的参数知识或将其响应限制在所提供文档中包含的信息上。在正在进行的对话的情况下,任何现有的对话历史都可以集成到提示中,使模型能够有效地参与多轮对话交互。
Naive RAG存在明显的短板,如精确度低、可靠性低、生成困难、一致性不理想等。
此外,面对复杂的问题,基于原始查询的单一检索不足以获取足够的上下文信息。用户也担心生成模型可能过度依赖增强信息,导致输出只是简单地回应检索到的内容,而不会添加更综合、更有建设性的信息。
(2)Advanced RAG(高级RAG)
为了改善上述提到的问题,Advanced RAG引入了特定的改进来克服Naive RAG的局限性。主要目的是为了提高检索质量,采用了预检索和后检索策略。
为了解决索引问题,Advanced RAG通过使用滑动窗口方法、细粒度语义分割和元数据合并来改进其索引技术。此外,还可以采用多种优化方法来简化检索过程。
预检索(Pre-retrieval)过程:在此阶段,主要关注优化索引结构和原始查询。优化索引的目标是提升被索引内容的质量,涉及的策略包括:增强数据粒度、优化索引结构、添加元数据、对齐优化、混合检索等。而查询优化的目标是使用户的原始问题更清楚,更适合检索任务,常用方法包括查询重写、查询转换、查询扩展等技术。
检索后(Post-Retrieval)过程:检索到相关上下文后,将其与提问有效地集成至关重要。检索后过程中涉及到法包括重新排序块和上下文压缩。
Rerank模型是此过程中最重要的策略,即使用一个新的模型对查询结果进行相关性的重排序,以期得到更准确的结果。此概念已在LlamaIndex2、LangChain3和HayStack等框架中实现。
(3)Modular RAG(模块化RAG)
模块化RAG架构在适应性和多功能性上超越了前两种RAG范式,采用了多种策略来改进其组件,例如添加用于相似性搜索的搜索模块、通过微调来优化检索器。为了应对特定挑战,引入了重组RAG模块、重新排列的RAG管道等方法。
通过将复杂的RAG系统分解为独立模块和专用操作符,此框架实现了高度灵活的系统配置。模块化RAG突破了传统线性架构,采用了包括路由、调度和融合机制在内的高级设计。
模块化RAG框架引入了额外的专用组件来增强检索和处理能力。例如搜索模块可以适应特定场景,使用大模型生成的代码和查询语言直接搜索跨数据源的(如搜索引擎、数据库和知识图谱)内容。RAG‑Fusion则通过采用“多查询策略”将用户查询扩展到不同的视角,利用并行向量搜索和智能重新排序来发现显式和变革性知识,从而解决了传统搜索的局限性。
上述三种范式的演进均是为了更好地提升RAG系统效果,除了常用的Rerank模型,行业中还存在诸多其他增强方法。根据增强目的不同,可将现存增强方法分为以下五类:输入增强、检索器增强、生成器增强、结果增强和整个管道增强。
03.
产业应用与未来挑战
RAG最突出的优势是能够及时更新大模型的知识。大模型的知识在训练阶段就已经固定了,RAG相当于为它接了数据库,它的知识可以随时更新和修改。
RAG技术目前应用于文字生成、图片和音视频生成、代码生成等多个方向。最常见的应用场景是知识密集型、且知识更新比较快的场合,例如AI搜索/对话、内容推荐系统、知识管理、自动化写作等。
天工AI搜索早已引入RAG技术,将信息检索与语言生成相结合,通过高效的检索和集成,它可以更好地理解用户查询的问题,提供准确的响应,并且适应不断变化的上下文和内容,全面重塑中文搜索体验。
RAG清晰的技术优势在过去一年中已经得以验证:知识库可以及时更新、无需充新训练、大模型学习新知识的成本低。并且它具有良好的可解释性,RAG过程是透明的(查到即查到,没查到即没查到),减少了幻觉问题,仅通过检索到的信息生成回答。
尽管RAG技术在过去几年中取得了显著进展,但仍面临一些挑战。
(1)检索结果中的噪声:信息检索本质上存在缺陷,不可避免的噪声(表现为不相关的内容或误导性信息)会在RAG系统中产生故障点。
直观来看,提高检索准确性对于RAG有效性有直观帮助,但最近也有相关研究发现,嘈杂的检索结果可能会提高生成质量。因此,我们对检索噪声的影响仍然不是非常清晰,以及它如何影响度量选择和检索器-生成器在实际应用中的交互,还是一个复杂且尚未完全明确的问题。
(2)额外开销:开销主要体现在检索和交互过程会增加延迟,尤其是在与复杂的增强方法结合时,如递归检索和迭代RAG。随着检索源规模的扩大,存储和访问复杂性也会增加。这些开销限制了RAG在对延迟敏感的实时服务中的实用性。
例如迭代RAG通过多轮迭代检索,每一轮迭代中使用上一轮生成的文本与问题拼接,进行检索,然后生成输入给LLM的prompt,从而得到本轮迭代的LLM生成。这些方法虽然提高了性能,但也增加了系统的复杂性和延迟。
(3)检索器和生成器之间的差距:由于检索器和生成器的目标不一致,并且它们的隐空间可能不同,因此设计它们之间的交互需要仔细的设计和优化。当前主要采用的方法一种是分离检索和生成,另一种是在中间阶段将它们集成。
前者更加模块化,而后者可以从联合训练中受益,但会阻碍通用性。这涉及到权衡模块化和集成方法的优缺点,以及考虑特定应用的需求和限制。对于需要快速响应的应用,可能更倾向于选择分离方法以减少延迟,而对于需要高度定制化输出的应用,则可能更倾向于选择集成方法以提高输出质量。
(4)系统复杂性增加和冗长的上下文:检索的引入不可避免地增加了系统复杂性和需要调整的超参数数量。RAG(尤其是基于查询的RAG)的主要缺点之一是它极大地延长了上下文,这使得上下文长度有限的生成器无法使用。此外,过长的上下文通常会减慢生成过程。
研究者们将继续探索更高效的RAG增强方法以提升RAG系统的性能,例如设计更新颖的检索器和生成器之间的交互模式、更灵活的RAG管道、特定垂直领域的RAG技术、高效的部署和处理框架等。
RAG系统正在逐步采用更灵活的管道,例如递归、自适应和迭代RAG。通过精确的调整和细致的工程设计,检索源、检索器、生成器和RAG子系统的独特融合有望解决复杂任务并提高整体性能。
即使目前已经存在多种基于查询的RAG部署解决方案,例如LangChain、LLAMA-Index 和PipeRAG。但是,对于其他RAG生成任务,仍缺乏即插即用的解决方案。此外,由于检索开销以及检索器和生成器的复杂性不断增加,实现高效的RAG仍然具有挑战性,需要进一步的系统级优化。
未来,RAG与其他技术有望高效结合,例如微调、强化学习、思维链和agent-based生成。这些方法的融合仍处于早期阶段,在技术结合的过程中RAG将持续发挥在管理动态信息方面的灵活性,包括最新知识和长尾知识。
参考资料:
https://arxiv.org/pdf/2312.10997
https://arxiv.org/pdf/2402.19473
https://arxiv.org/pdf/2407.13193
https://arxiv.org/pdf/2407.21059
https://www.llamaindex.ai
https://www.langchain.com/
https://www.jiemian.com/article/10904005.html