1、 为什么需要 RAG 技术?
1.1 传统语言模型的局限性
传统的语言模型,比如 GPT-3,虽然在生成文本方面表现出色,但它们有一个显著的局限性:它们依赖于预训练的参数,无法动态访问外部知识。这意味着这些模型在处理实时信息、领域特定知识或罕见实体时表现不佳。举个例子,在问答任务中,模型可能会生成不准确或过时的答案,因为它无法访问最新的数据。就像你问一个朋友“今天天气怎么样?”,但他只能告诉你去年的天气情况,显然这样的信息对你来说毫无用处。
这种局限性在需要精确答案的场景中尤为明显。例如,在医疗领域,医生可能需要最新的研究数据来做出诊断,而传统的语言模型无法提供这些信息。同样,在法律领域,律师需要引用最新的法律条文,而模型只能基于过去的知识生成答案,这显然是不够的。
1.2 检索增强生成(RAG)的诞生
为了解决传统语言模型的局限性,检索增强生成(Retrieval-Augmented Generation, RAG)技术应运而生。RAG 通过将大规模检索系统与生成模型相结合,解决了传统模型的局限性。它能够动态地从外部知识源(如文档、数据库或结构化数据)中检索信息,并在生成过程中利用这些信息,从而生成更准确、上下文相关的输出。
这种结合不仅提升了模型的性能,还使其能够处理更复杂的任务,如多跳推理和跨领域知识整合。举个例子,如果你问 RAG 模型“量子计算的最新进展是什么?”,它可以从最新的研究论文中检索相关信息,并生成一个基于这些信息的详细答案。这种能力使得 RAG 在需要精确和实时信息的场景中表现出色。
1.3 RAG 的应用场景
RAG 技术在多个领域展现了巨大的潜力,尤其是在问答、摘要生成和信息检索等任务中。例如,在开放域问答中,RAG 模型能够从海量文档中检索相关信息,生成更精确的答案;在文档摘要任务中,它能够利用外部文档生成更丰富、更全面的摘要。此外,RAG 还在对话系统、知识图谱构建等领域展现了强大的能力。
在医疗领域,RAG 可以帮助医生快速检索最新的研究数据,辅助诊断和治疗决策。在法律领域,律师可以使用 RAG 来检索最新的法律条文,确保他们的法律建议是最新和准确的。在教育领域,RAG 可以为学生提供个性化的学习材料,帮助他们更好地理解复杂的概念。
总的来说,RAG 技术通过结合检索和生成的能力,解决了传统语言模型的局限性,使其在多个领域中表现出色。无论是需要实时信息的问答任务,还是需要精确答案的领域特定任务,RAG 都能提供强大的支持。
2、 RAG 技术解析
2.1 核心组件:检索与生成
RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想是将检索和生成两个过程紧密结合。首先,模型根据输入查询从外部知识源中检索相关信息;然后,生成模型利用检索到的信息生成最终的输出。这种动态的知识整合机制使得 RAG 模型能够在生成过程中实时访问外部知识,从而提升输出的准确性和相关性。
举个例子,假设你问一个 RAG 模型:“谁发明了电话?”模型会首先从外部知识库中检索与“电话发明”相关的文档或段落,然后基于这些信息生成一个准确的答案:“亚历山大·格拉汉姆·贝尔发明了电话。”这种结合检索和生成的方式,使得 RAG 模型在处理需要外部知识的任务时表现尤为出色。
2.2 检索机制:从海量数据中找到关键信息
检索机制是 RAG 的关键部分。它需要从庞大的知识库中快速找到与查询最相关的信息。常用的检索方法包括基于关键词的稀疏检索(如 BM25)和基于语义的稠密检索(如 DPR,Dense Passage Retrieval)。稠密检索通过将查询和文档映射到同一向量空间,利用向量相似度(如余弦相似度)来找到最相关的文档。
例如,如果你问:“什么是量子计算?”稀疏检索可能会通过匹配关键词“量子”和“计算”来找到相关文档,而稠密检索则会通过语义理解,找到与“量子计算”概念相关的文档,即使这些文档中没有直接出现“量子”或“计算”这两个词。
2.3 生成过程:结合内部与外部知识
生成过程不仅依赖于模型的内部知识,还结合了检索到的外部信息。模型通过“去噪”和“推理”两个步骤来处理检索到的信息。去噪步骤过滤掉不相关或矛盾的信息,确保生成的内容基于可靠的来源;推理步骤则帮助模型从多个信息源中提取逻辑关系,生成连贯的答案。
例如,当模型检索到多篇关于“量子计算”的文档时,去噪步骤会排除那些与主题无关或信息不准确的文档,而推理步骤则会从剩下的文档中提取关键信息,生成一个全面且逻辑清晰的答案。
2.4 知识整合:如何将外部知识融入生成
知识整合是 RAG 的另一个关键步骤。它可以通过多种方式实现,例如在输入层直接将检索到的文档与查询拼接,或在中间层通过注意力机制将外部知识融入模型的隐藏状态。不同的整合策略适用于不同的任务需求,选择合适的策略可以显著提升模型的表现。
例如,在输入层整合时,模型会将检索到的文档与查询一起输入生成模型;而在中间层整合时,模型会在生成过程中动态调整注意力机制,确保外部知识能够被有效利用。这种灵活的知识整合方式,使得 RAG 模型在处理复杂任务时能够更加精准地生成答案。
3、RAG关键步骤
RAG模型通过利用外部知识来增强生成过程,从而生成更准确且符合上下文的回答。基础RAG方法包括以下几个关键步骤:
• 用户意图理解
• 知识源与解析
• 知识嵌入
• 知识索引
• 知识检索
• 知识整合
• 回答生成
• 知识引用
3.1 用户意图理解
高质量的查询对于检索有价值的知识至关重要。由于用户的意图往往不明确,准确理解用户查询是实现更有效和精确检索的关键。目前,许多研究专注于提升对用户查询的理解。本两种提升查询质量的关键方法:查询分解和查询重写。
3.1.1 查询分解(Query Decomposition)
查询分解方法已成为增强语言模型推理能力的有效策略,尤其适用于需要多步或组合推理的复杂任务,例如:
-
最少到最多提示(least-to-most prompting) :将复杂问题逐步分解为更简单的子问题,从而提升模型在更困难任务上的泛化能力。这种方法在SCAN任务中表现出色,GPT-3模型仅用14个示例就达到了99%以上的准确率。
-
自问(Self-ask):采用了类似的方法,但进一步优化了过程,通过让模型提出并回答后续问题,减少了组合性差距,从而实现了更好的多跳推理。
-
验证链(Chain-of-Verification, CoVe) :通过让模型独立验证其回答,提高了答案的可靠性,显著减少了在列表问题和长文本生成任务中的幻觉现象。
-
链中搜索(Search-in-the-Chain, SearChain):将信息检索(IR)整合到推理过程中。在该框架中,模型构建一个查询链(Chain-of-Query, CoQ),每个查询都通过IR进行验证,从而提高了推理路径的准确性和可追溯性。SearChain允许模型根据检索到的信息动态调整其推理,从而在多跳问答和事实核查等知识密集型任务中表现出色。
3.1.2 查询重写
查询重写已成为提升RAG性能的关键技术,特别是在解决语义差距和改善任务结果方面。
-
重写-检索-阅读(Rewrite-Retrieve-Read, RRR) :通过使用LLM在检索前生成和优化查询,提升了查询与目标知识的对齐,从而在开放域问答和多选任务中显著提高了性能。
-
BEQUE :专注于电子商务搜索中的长尾查询,通过监督微调、离线反馈和对比学习来弥合语义差距,从而在GMV和交易量等业务指标上取得了显著提升。
-
HyDE:引入了一种零样本的密集检索方法,通过让LLM生成假设文档并将其编码用于检索相关文档,超越了传统的无监督检索器。
-
Step-Back Prompting :鼓励LLM从具体示例中抽象出高级概念,从而在STEM、多跳问答和基于知识的推理任务中提升了推理能力。这些方法共同增强了RAG在跨领域知识密集型任务中的有效性和可扩展性。
3.2 知识源与解析(Knowledge Source and Parsing)
RAG可以利用的知识类型多种多样,为LLM提供了丰富的上下文信息。所使用的知识类别,包括结构化、半结构化、非结构化和多模态知识,以及它们各自的解析和整合方法。
3.2.1 结构化知识的利用
知识图谱(Knowledge Graphs, KGs)是一种结构化表示,以图的形式封装实体及其相互关系。
其结构化特性便于高效查询和检索,而语义关系则支持更细致的理解和推理。KGs整合了来自不同来源的信息,提供了统一的知识库。然而,将KGs整合到RAG系统中也面临挑战,包括从大规模KGs中导航和提取相关子图的复杂性、KGs扩展时的可扩展性问题,以及将结构化数据与语言模型的无序数据处理对齐的困难。例如:
- GRAG:通过跨多个文档检索文本子图,提升了RAG系统中的信息检索效率。
- KG-RAG:引入了探索链(Chain of Explorations, CoE)算法,通过高效导航KGs来提升知识图谱问答(KGQA)任务的表现。
- GNN-RAG:利用图神经网络(GNNs)从KGs中检索和处理信息,在与LLM对接之前增强了推理能力。从历史数据构建KGs作为RAG的外部知识源,有效提升了信息检索和生成能力[255]。
- SURGE框架:利用KG信息生成上下文相关且基于知识的对话,提升了交互质量。
- SMART-SLIC、KARE、ToG 2.0 和KAG,展示了KGs在特定领域作为外部知识源的有效性,提升了RAG系统的准确性和效率。
3.2.2 半结构化知识的提取
半结构化数据介于结构化和非结构化格式之间,具有组织元素但没有严格的模式。例如,JSON和XML文件、电子邮件以及HTML文档。HTML作为网页的基础,结合了标签和属性等结构化组件与自由文本等非结构化内容。
这种混合特性允许HTML表示复杂信息,包括文本、图像和链接。然而,HTML的灵活性也可能导致不一致和异常,给数据提取和整合到RAG系统带来挑战。
- HtmlRAG:在大多数场景中,开源HTML解析技术仍然是高效数据提取和无缝整合的关键。这些工具提供了强大的解析能力和对多样化HTML结构的适应性,确保了在各种应用场景中的高效性和准确性。
- Beautiful Soup:一个用于解析HTML和XML文档的Python库,创建解析树以便轻松提取数据;
- html5ever:由Servo项目开发的开源HTML解析器,遵循WHATWG的“HTML5”规范;
- htmlparser2:一个用于Node.js环境的强大HTML解析器,提供快速灵活的方式处理HTML文档;
- MyHTML“”一个基于Crystal语言的高性能HTML5解析器,绑定到lexborisov的myhtml和Modest库;
- Fast HTML Parser[39],一个极快的HTML解析器,生成最小的DOM树并支持基本元素查询。
3.2.3 非结构化知识的解析
非结构化知识涵盖了缺乏一致结构的数据类型,如自由文本和PDF文档。与遵循预定义模式的结构化数据不同,非结构化数据的格式多样,通常包含复杂内容,使得直接检索和解释具有挑战性。在非结构化格式中,PDF文档在知识密集型领域中尤为常见,包括学术研究、法律文件和公司报告。PDF通常包含大量信息,如文本、表格和嵌入图像,但其固有的结构可变性使得提取和整合到RAG系统变得复杂。
解析PDF仍然具有挑战性,因为需要准确解释不同的布局、字体和嵌入结构。将PDF转换为RAG系统可读的格式需要光学字符识别(OCR)来捕获文本,布局分析来理解空间关系,以及先进的方法来解释表格和公式等复杂元素。
- ABINet:通过双向处理增强了OCR的准确性。
- GPTPDF:使用视觉模型将表格和公式等复杂元素解析为结构化的Markdown,在大规模处理中具有高成本效益。
- Marker:专注于清理噪声元素,同时保留文档的核心格式,非常适合学术和科学文档。
- PDF-Extract-Kit:支持高质量内容提取,包括公式识别和布局检测
- Zerox OCR:将PDF页面转换为图像,并使用GPT模型生成Markdown,有效管理标题和表格等结构。
- MarkItDown:是一个多功能工具,能够将PDF、媒体、网页数据和存档等多种文件类型转换为Markdown。
3.2.4 多模态知识的整合
多模态知识(包括图像、音频和视频)提供了丰富的互补信息,可以显著增强RAG系统,特别是在需要深度上下文理解的任务中。图像提供空间和视觉细节,音频贡献时间和语音层,而视频结合了空间和时间维度,捕捉运动和复杂场景。传统的RAG系统主要设计用于文本数据,在处理和检索这些模态的信息时往往表现不佳,导致在非文本内容至关重要时生成不完整或不够细致的回答。
为了应对这些限制,现代多模态RAG系统开发了基本方法来整合和检索跨模态的数据。其核心理念是将不同模态对齐到一个共享的嵌入空间中进行统一处理和检索。
- CLIP:将视觉和语言对齐到一个共享空间
- Wav2Vec 2.0 和CLAP:音频模型则专注于音频与文本的对齐。
- ViViT:处理空间和时间特征。
3.3 知识嵌入(Knowledge Embedding)
知识通常存储在大量文本文档中,首先被分割为简洁且有意义的单元,每个单元封装一个核心思想。这些单元随后被转换为向量嵌入,编码语义信息,便于通过相似性度量进行高效检索。
3.3.1 分块划分
分块划分是一个基础过程,显著影响文档检索质量,从而影响整体性能。分块划分的主要目标是将大段文本分割为可管理的单元或“块”,从而实现更高效的检索和生成。通过将复杂文档分割为更小、连贯的单元,RAG可以实现对上下文保留的精细控制,并提升信息检索的准确性。分块划分的目标和挑战在于确保分割后的块保留有意义的上下文,同时避免冗余和信息丢失。传统的分块方法,如固定长度、基于规则或基于语义的划分,相对简单,但缺乏捕捉复杂文本中细微结构的灵活性。这些方法在处理格式多样或包含跨段落语义流的文档时往往表现不佳,导致由于上下文信息碎片化而检索效果不理想。
随着分块划分方法的演变,早期的固定长度方法逐渐被更自适应和智能的策略所取代。最近的优化策略旨在捕捉文本中细粒度的信息分布和语义结构。例如:
- 命题级分块:将文本分割为单个事实的小单元,从而捕捉更丰富的信息。
- LumberChunker:使用LLM检测段落之间的内容变化,从而创建上下文敏感的块。
- 元分块方法:(如边际采样分块和困惑度分块)优化块边界,以更好地满足RAG需求,提升上下文捕捉和检索效果。
- 延迟分块:一种创新方法,与传统做法不同,它在分块之前对整个文档进行嵌入,从而使模型保留完整的上下文,特别是在处理复杂或上下文密集的文本时,显著改善了检索结果。这些先进的分块策略使RAG能够更好地适应复杂的文档结构,捕捉细微信息,并提升检索准确性,为多样化的检索和生成任务提供了更强大的支持。
3.3.2 文本嵌入模型
在基于查询检索块时,该过程依赖于查询与块之间的向量相似性计算(如余弦相似性)。将块准确映射为向量表示对于有效捕捉语义意义并与相关查询对齐至关重要。
传统方法,如:
- 词袋模型(Bag of Words, BoW):强调词频但忽略语法
- N-gram:捕捉语言结构但面临维度挑战
- TF-IDF模型:结合了词频和上下文,但仍受高维度问题的限制。
以上方法无法全面表示语义信息。相比之下,基于深度学习的现代词嵌入方法,如:Word2Vec、GloVe和fastText:通过利用上下文、共现模式或词根变化来编码单词。
然而,这些嵌入是静态的,无法适应不同的上下文。
Transformer架构 的引入,特别是BERT ,在捕捉上下文意义和增强语义表示方面取得了重大进展。BERT 及其衍生模型,如RoBERTa、ALBERT 和DPR,显著提升了文档检索能力。
BGE、NV-Embed和SFR-Embedding,在多语言和特定领域的基准测试中表现出色。
3.3.3 多模态嵌入模型
知识不仅以文本形式表示,还包括图像、音频和视频。因此,对多模态嵌入模型的需求日益增加,这些模型将来自不同模态的信息整合到一个统一的向量空间中。这些模型专门设计用于捕捉不同数据类型之间的关系和共享信息,从而实现更全面和统一的表示。
对于图像,模型处理JPG或PNG等图像格式,生成与文本相同的语义向量空间中的嵌入。
- Normalizer-Free ResNets (NFNet) :提供了一个高效的框架来提取图像特征
- Vision Transformer (ViT):利用Transformer架构学习高质量表示。
- 对比语言-图像预训练(CLIP):通过对比学习将视觉和文本模态对齐,生成了适用于零样本分类和跨模态检索的多功能嵌入。
对于音频,模型提取音高、音色、节奏和语义等关键特征,从而实现对音频的有效和有意义分析,以支持检索任务。
- Wav2Vec 2.0:一种自监督学习模型,直接从原始波形中学习音频表示,生成适用于多种音频任务的高层次嵌入。
- 对比语言-音频预训练(CLAP):一种最先进的模型,通过从成对的音频和文本数据中学习生成音频嵌入,为音频与自然语言的整合提供了统一框架。
对于视频,模型旨在将视频数据表示为紧凑且特征丰富的向量,捕捉空间、时间和语义信息。
- Video Vision Transformer (ViViT):基于ViT,能够有效处理视频理解任务,捕捉空间和时间特征。
- VideoPrism:因其在广泛视频理解基准测试中的最先进表现而备受关注。它特别擅长在不同视频领域中泛化,而无需特定任务的微调。
3.4 知识索引(Knowledge Indexing)
在RAG中,索引被定义为数据的结构化组织,能够从大规模数据集中高效访问和检索信息。索引将用户查询映射到相关的文档块、知识片段或其他信息内容,充当存储数据与检索机制之间的桥梁。索引的有效性对RAG系统至关重要,因为它直接影响响应准确性、检索速度和计算效率。
3.4.1 索引结构
结构化索引:结构化索引基于预定义的固定属性组织数据,通常采用表格或关系格式。在早期的知识检索工作中,如REALM系统,文本倒排索引被广泛用作基础技术,而Table RAG则使用特定于表格的索引结构,结合列索引和行索引,以高效检索相关表格条目用于语言生成任务[30]。
非结构化索引:非结构化索引则设计用于自由格式或半结构化数据,在现代RAG系统中更为常见。向量索引利用先前嵌入阶段生成的向量来提高检索效率,如naive RAG、ANCE和G-retriever,后者使用语言模型将图的文本属性转换为向量。
图索引:图索引是一种非结构化索引,利用图结构的固有优势来表示和检索互连数据。在图索引中,数据点被表示为节点,而它们之间的关系通过边表示。这种索引范式特别擅长捕捉语义关系和上下文信息,从而支持复杂的查询和推理任务。
3.5 知识检索( Knowledge Retrieval)
在RAG系统中,知识检索是一个关键步骤,决定了生成模型能够获取到哪些外部知识。知识检索的目标是从大规模的外部知识库中快速、准确地找到与用户查询最相关的信息。为了实现这一目标,RAG系统通常依赖于高效的检索算法和索引结构。
知识检索是基于给定查询从向量数据库中识别并检索相关知识的过程。包括检索策略和搜索方法。检索策略关注如何识别相关知识,而搜索方法则定义了用于快速定位最相关信息的算法。
3.5.1 检索策略
检索的目标是根据输入查询识别并提取最相关的知识。通过使用相似性函数检索最相关的 top-k 个知识块。根据不同的相似性函数,检索策略可以分为三种类型:稀疏检索、稠密检索和混合检索。
稀疏检索
稀疏检索策略通过词语分析和匹配利用稀疏向量检索文档或知识块。传统的稀疏检索策略使用术语匹配指标,如 BM25、TF-IDF 和查询似然,通过计算词语出现频率和逆文档频率来估计文档与查询的相关性。
稠密检索
稠密检索策略将查询和文档编码到低维向量空间中,通过向量表示的点积或余弦相似度来衡量相关性。稠密检索器,如 DPR 和 ANCE,基于 BERT 架构的预训练语言模型,并在无监督数据上进行微调,以生成高质量的查询和文档表示。
最近,大语言模型(LLMs)在语义理解和表示能力方面表现出色。基于 LLMs 的强大能力,研究者们尝试使用 LLMs 生成判别性文本嵌入。例如,Llama2Vec 是一种轻量级方法,通过两个无监督预训练任务(EBAE 和 EBAR)将 LLMs 用于稠密检索。RepLLaMA 微调 LLaMA 作为稠密检索器,利用其整体表示长文档的能力进行高效文本检索。
混合检索
混合检索策略结合了稀疏和稠密检索技术,旨在通过利用每种方法的优势来优化性能。例如,RAP-Gen 和 BlendedRAG 将传统的关键词匹配与深度语义理解相结合,使系统既能从稀疏检索的效率中受益,又能通过稠密表示捕获更深层次的上下文。BASHEXPLAINER 采用两阶段训练策略,首先使用稠密检索器捕获语义信息,然后使用稀疏检索器获取词汇信息,从而实现性能优异的自动代码注释生成。这种双重策略解决了每种方法的局限性;例如,稀疏策略可能在语义细微差别上表现不佳,而稠密策略则可能计算密集。通过结合两者的优势,混合模型提高了各种任务中的检索准确性和相关性。
3.5.2 搜索方法
搜索方法是指为给定查询向量从向量数据库中高效识别相似向量的算法。搜索方法可以分为两种类型:最近邻搜索(NNS)和近似最近邻搜索(ANNS)。
最近邻搜索
NNS 的暴力算法是一种简单的算法,穷举扫描数据库中的所有向量,计算与查询向量的距离以识别最接近的向量。然而,这种方法计算成本高,在大规模数据集上不切实际。
引入了基于树的方法来提高搜索效率。例如,Bentley 提出了一种基于 k-d 树的方法,该方法将 k 维空间递归划分为超矩形区域,从而提高了数据组织和搜索速度。其他基于树的结构,如 Ball-tree、R-tree和 M-tree,也通过将数据划分为超球体、矩形或度量空间等结构来增强最近邻搜索,从而提高了搜索性能,特别是在高维和复杂数据集中。
近似最近邻搜索
ANNS 在准确性、速度和内存效率之间取得了平衡,使其特别适用于大规模和高维数据。这包括基于哈希的方法、基于树的方法、基于图的方法和基于量化的方法。
- 基于哈希的方法,将高维向量转换为二进制代码,优化内存使用并加速搜索操作。例如,深度哈希使用深度神经网络学习哈希函数,将高维向量映射为二进制代码,同时保留相似数据之间的语义关系。
- 基于树的 ANNS 方法,包括 K-means 树和 ANNOY,通过层次化组织数据,通过高效遍历树结构来减少搜索空间。这些方法将数据集划分为分区或簇,使得在搜索过程中仅探索相关区域。
- 基于图的方法,如分层可导航小世界(HNSW),通过反映数据点之间接近度的边连接数据点,从而通过导航图快速进行最近邻搜索。
- 基于量化的方法,如乘积量化,旨在通过将向量量化为较小的码本来压缩数据,从而在保持搜索速度和准确性之间良好平衡的同时减少内存需求。
多样化的 ANNS 方法为大规模、高维数据集中的快速高效最近邻搜索提供了强大的解决方案,每种方法在准确性、速度和内存使用方面都有其自身的权衡。
3.6 知识整合
知识整合是指将检索到的外部知识与生成模型的内部知识相结合,以提高输出的准确性和连贯性。基本上,知识整合可以分为三种类型:输入层整合、中间层整合和输出层整合。
3.6.1 输入层整合
输入层整合是指在输入层将检索到的信息与原始查询直接整合,旨在增强生成过程中的上下文信息。根据整合方法的不同,输入层整合可以分为两种类型:文本级整合和特征级整合。
文本级整合
将检索到的 top-k 文档直接与查询拼接。为了减少低质量信息的影响并更好地利用大语言模型(LLMs)的上下文学习能力,一些方法对知识块进行重新排序,优先处理最相关的内容,而另一些方法则应用加权过滤从检索内容中去除不相关信息。由于 LLMs 的输入长度限制,对上下文进行压缩,使模型能够在有限的输入大小内学习更多信息。
特征级整合
特征级整合侧重于在特征级别将检索内容的编码形式与原始输入整合。与简单地拼接原始文本不同,将输入查询和检索到的文档转换为特征表示(如稠密或稀疏向量),然后再输入到模型中。通过在特征表示而非原始文本上操作,特征级整合允许对输入数据进行更灵活的操纵。
3.6.2 中间层整合
中间层整合是指将外部知识整合到生成器的隐藏层中。基于注意力的方法 是中间层整合中常见的方法之一。
- RETRO 模型:引入了一种新颖的交叉注意力模块,将检索到的信息与模型的中间表示相结合。
- TOME:引入了 提及记忆 机制,通过存储和检索实体提及表示,将外部知识整合到 Transformer 中。
- LongMem框架:使用自适应残差网络进行记忆检索,结合注意力机制高效访问和检索相关的长期记忆。
3.6.3 输出层整合
输出层整合是指在生成器的输出层整合检索到的知识。这种方法通常将检索知识的 logits 与模型的输出 logits 结合,从而实现增强生成。输出层整合可以分为两个主要分支:
- 基于集成的整合 聚合来自检索的 logits,例如在 kNN-LM中,最近邻的概率与模型的预测进行插值,以提高泛化能力和鲁棒性。
- 基于校准的整合 则使用检索 logits 来优化模型的预测置信度,如置信度增强的 kNN-MT。
3.7 答案生成
在 RAG 系统中,生成组件是生成既准确又上下文相关的回答的核心。
然而,在 RAG 模型中实现高质量输出需要克服两大挑战:处理噪声检索以及实现对多样化信息的有效推理。
3.7.1 去噪
去噪在 RAG 模型中至关重要,目的是减少从大型知识库中检索到的无关、矛盾或误导性信息的影响。检索中的噪声会严重影响生成输出的事实准确性和连贯性,因此去噪机制在 RAG 管道中不可或缺。
显式去噪技术
一种有效的去噪方法是通过显式监督。InstructRAG引入了 理性生成,模型被指示生成中间理性,以澄清每个检索文档的相关性。这些理性通过引导模型专注于更准确和上下文相关的内容,有效地过滤了噪声。REFEED 框架利用大语言模型根据检索数据重新评估响应的准确性,迭代地丢弃不太相关的信息,从而优化初始答案。
基于判别器的去噪
COMBO 框架使用预训练的判别器将生成的段落与检索到的段落配对,在最终生成阶段之前评估每对的连贯性和相关性。这种基于判别器的方法确保识别并过滤无关或矛盾的信息,从而最小化幻觉的风险。
自反思和自适应去噪
Self-RAG引入了一种自反思机制,模型通过评估其响应的连贯性和事实性来批评和修订自己的输出。这种方法提供了一种动态处理噪声的方式,因为模型可以通过自我评估迭代地过滤不可信或无关的信息。此外,自适应检索策略允许模型根据任务特定标准检索文档,动态调整检索范围和过滤强度,以优化相关性和质量。
上下文过滤和置信度评分
模型可以根据检索信息与查询的一致性为其分配分数,在整合之前过滤掉低置信度的检索。这种方法利用置信度阈值系统地排除噪声文档,特别适用于相关性差异显著的开放域问答任务。
3.7.2 推理
除了去噪,推理对于需要跨多个文档综合信息的任务至关重要。有效的推理使模型能够将检索到的信息情境化,建立逻辑连贯性,并生成准确反映复杂关系的响应。
结构化知识和基于图的推理
一种高级推理方法涉及整合结构化知识源(如知识图谱)以辅助复杂的关系推理。Think-on-Graph 2.0 引入了一个框架,将知识图谱与非结构化文本相结合,使模型能够推理实体之间的结构化关系。通过利用图结构,模型获得了更深层次的上下文理解,提高了回答涉及复杂关系的查询的能力。
跨注意力用于多文档推理
为了促进跨多个文档的推理,RETRO 模型采用了分块跨注意力,使生成模型能够关注检索到的文本块中的相关信息。这种跨注意力机制有助于保持上下文连贯性,特别是在信息跨越多个文档的开放域设置中。跨注意力也在增强的 kNN 方法中得到了探索,其中 kNN 注意力层允许模型在生成过程中利用邻域信息,从而实现上下文相关内容的无缝整合。
记忆增强推理
记忆增强推理,如 EAE 和 TOME 等模型中所示,整合了特定实体的记忆模块。这些模型存储并动态检索与实体相关的信息,使生成模型能够随着时间的推移保持一致性和连贯性。记忆模块在需要纵向一致性或多步推理的任务中特别有益,因为它们允许模型在对话或文档的不同部分中回忆特定实体的细节。
检索校准和选择性推理推理的另一个关键进展是检索校准,模型被训练为根据上下文相关性优先处理某些检索信息。校准技术帮助模型识别最关键的信息,在推理之前过滤掉不太相关的检索。
分层和多轮推理对于需要多步推理的复杂查询,分层或多轮推理模型允许模型迭代处理检索到的信息,每轮都优化其理解。多轮推理特别适用于涉及因果或时间依赖性的任务,因为它使模型能够根据新信息“重新审视”先前的知识,形成分层的理解,从而提高响应的准确性和连贯性。
3.8 知识引用
在 RAG 中,引用对于确保模型响应的透明度、可信度和事实基础至关重要。通过将生成的内容归因于可验证的来源,用户可以轻松验证信息,减少声明验证的负担,并改进评估过程。此外,有效的引用有助于减少幻觉,增强模型输出的事实完整性。
3.8.1 引用生成策略
在语言模型中生成引用有两种主要策略:同步引用生成 和 生成后引用检索。
- 同步生成被 WebGPT、GopherCite 和 RECLAIM 等模型使用,它们在响应生成过程中实时检索信息。这种方法确保答案和引用紧密对齐,减少幻觉并提高事实准确性。
- 生成后引用被 RARR和 LaMDA等模型使用,它先生成答案,然后再检索引用。虽然这种方法降低了计算复杂性,但由于答案的生成独立于引用,增加了响应与引用来源之间不一致的风险。
两种方法各有优势:同步生成提供了更强的事实基础,而生成后引用则在响应生成中提供了更大的灵活性。
3.8.2 引用粒度的进展
引用粒度——即引用中提供的细节水平——在最近的模型中有了显著提升。早期的模型如 LaMDA 使用粗粒度引用,通常引用整个文档或 URL,虽然有助于事实基础,但需要用户筛选无关信息。最近的模型,如 WebGPT、WebBrain和 GopherCite,已经向细粒度引用发展。
这些模型检索特定的证据片段,或专注于理解长文档以支持个别声明。RECLAIM 模型代表了最高水平的引用粒度,将个别声明链接到源材料中的确切句子。
4、 高级RAG
高级RAG方法超越了基础的RAG模型,通过一系列创新技术克服了基础RAG系统的局限性。这些方法旨在从多个维度提升RAG系统的能力,包括训练优化、多模态处理、记忆增强和智能推理。
4.1 RAG训练
RAG训练的核心在于优化检索和生成组件之间的协同作用,以实现最佳性能。有效的训练策略确保检索器获取相关信息的同时,生成器能够产生连贯且准确的输出。本节将介绍三种主要的训练方法:静态训练、单向引导训练和协同训练。
4.1.1 静态训练
静态训练是一种简单但有效的方法,在训练过程中固定检索器或生成器中的一个组件,专注于优化另一个组件。这种方法在计算资源有限或需要快速部署的场景中尤为适用。例如,固定检索器并优化生成器可以利用已有的检索机制(如BM25或BERT),从而减少训练开销。然而,静态训练的缺点是可能影响系统的整体性能,因为只有单一组件被优化,可能导致检索与生成之间的协同作用不足。
4.1.2 单向引导训练
单向引导训练通过一个组件引导另一个组件的优化,分为检索器引导生成器训练和生成器引导检索器训练两种方式。
• 检索器引导生成器训练:利用高质量检索文档指导生成器的训练,例如RETRO和RALMs等模型通过预训练的检索器(如BERT和COLBERTV2)提升生成器的输出质量。
• 生成器引导检索器训练:根据生成器的性能优化检索器,例如DKRR和AAR等模型利用生成器的注意力分数或生成信号指导检索器的训练,确保检索内容与生成需求一致。
4.1.3 协同训练
协同训练同时优化检索器和生成器,通过联合训练实现整体系统性能的提升。这种方法确保两个组件的改进相互促进,例如RAG和MIPS等模型通过协同训练优化检索过程,使检索器能够根据生成器的反馈逐步提升检索效果,同时生成器也能更好地利用检索信息。
4.2 多模态RAG
多模态RAG扩展了传统文本RAG系统,通过整合图像、音频、视频等多种模态信息,丰富了系统的输出能力。然而,多模态RAG面临两大挑战:一是如何有效表示和检索跨模态知识,二是如何理解和利用多模态信息生成合适的响应。
4.2.1 多模态表示与检索
多模态RAG的基础在于将不同模态的数据转换为统一的向量表示,并实现跨模态的高效检索。例如,CLIP通过学习图像和文本的对齐表示,实现了跨模态检索;Wav2Vec 2.0和ViViT则分别处理音频和视频内容,提取丰富的特征表示。
4.2.2 多模态理解与生成
多模态RAG系统需要进一步理解跨模态关系并生成连贯的输出。例如,MuRAG和RA-CM3通过检索和生成多模态内容(如图像和文本)提升问答系统的能力;Transfusion和Show-o等模型则结合语言建模和扩散模型,支持广泛的视觉-语言任务。
4.3 记忆RAG
记忆RAG通过引入显式记忆机制,弥补了传统RAG系统中隐式记忆和实时检索之间的空白。这种机制在处理长文档理解、个性化知识管理等场景中表现出色。
4.3.1 记忆类型
• 隐式记忆:存储在模型参数中的知识,例如预训练的检索器和生成器权重,提供快速推理但难以更新。
• 显式记忆:压缩的、结构化的长期知识表示,例如对整本书或用户行为模式的理解,比隐式记忆更灵活且易于更新。
• 工作记忆:临时存储的检索文本块,用于当前任务的生成,类似于人类的短期记忆。
4.3.2 技术实现
记忆RAG通过稀疏键值缓存实现显式记忆,例如Memory3通过两阶段预训练将原始输入转换为显式记忆;MemoRAG采用轻量级LLM作为全局记忆系统,提升长文本处理能力;CAG则通过预计算键值缓存完全消除实时检索需求,提高系统效率。
4.4 Agentic RAG
Agentic RAG将自主智能体与RAG技术结合,通过动态管理检索策略和优化推理过程,显著提升了系统的性能。
4.4.1 查询理解与策略规划
智能体通过分析查询复杂性和主题,制定合适的检索策略。例如,AT-RAG通过主题过滤和迭代推理提升多跳查询的检索效率;REAPER则通过基于推理的检索规划优化复杂查询的处理。
4.4.2 工具利用
Agentic RAG能够利用多种外部工具(如搜索引擎、计算器和API)增强检索和推理能力。例如,AT-RAG和RAGENTIC通过多代理协作和工具集成,灵活应对不同任务需求。
4.4.3 推理与决策优化
智能体通过多步推理和决策优化,评估信息源可靠性并优化检索策略。例如,PlanRAG通过“先计划后检索”的方法提升生成模型的决策能力;REAPER则通过推理增强检索规划,提高系统响应速度。
通过以上高级RAG方法,RAG系统在处理复杂、动态和专门化任务时展现出更强的能力和适应性。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!