最近读论文的时候看到卡内基梅隆大学在RAG方向上总结了一下15种RAG框架的优点、问题,同时对RAG的发展方向做了一些论述,梳理一些我的理解。
论文中的主要内容
论文的主要内容包含六个主要内容,RAG简介、RAG核心组件、多模态RAG、现有的15种RAG框架、RAG的挑战和局限、RAG未来的方向
RAG无论是从搭建成本、扩展性还是适用场景都是当前大模型在企业内快速落地的最可行的、最优选择。 从基础架构图看得出RAG的概念图非常好理解,很多框架都可以快速上手。也衍生了很多优秀的开发框架,比如LlamaInde、Langchain等都集成不少先进的RAG方案。同时也有很多低代码框架,比如Dify、FastGPT、Flowies等。
不过不得不说,RAG是一个楼梯在门内的技术。我听过不少产品和技术说过一句话"这不就是搜一下内容,再让大模型回答一下吗?"。这种无语的言论推荐大家静心应对即可。
因为当你快速的上线一个RAG应用之后就会发现,召回的准确率、回答的正确率、知识库的管理、检索方案、召回阀值等等都会让你一点点认识到RAG不只是"搜一下","答一下"。
回归正题,说一下论文中的内容。
一、RAG简介
希望看干货可以跳过这部分
RAG从字面上理解其实就是"检索"和"生成"。在RAG出现之前,两者各是各的。
- 检索:一般会依靠文本片段来查询相关的文档,比如ElasticSearch、Solr等。
- 生成:生成一般都是S2S模型,连贯性没啥问题,但是都会严重依赖训练数据。事实准确性和内容丰富度都不行。直到后来的Transformer类的架构出现,以概率+注意力的模型有了大幅改善。
但是随着大模型融入场景后,回复的准确性、创造力等方面明显有缺陷,所以RAG出现了,用检索的数据限制、引导模型做正确的回复,尽量降低模型的幻觉。
二、RAG的挑战和局限
-
知识检索的出的内容和问题的匹配度不高。
RAG常用的DPR(Dense Passage Retrieval)所使用的密集向量表示,随着使用的Embedding模型不同、嵌入的长度不同、内容指向过多等因素,有时也会检索出不相关或偏离主题的文档。因此,需要通过引入更精细的查询扩展和上下文消歧技术来提升检索技术的精准度。理论上,检索可以为生成的提供完整完备的知识,但在实际操作中,很难把准确的知识传递给生成模块,生成模块中再出现一些幻觉就很容易导致检索事实与生成文本间的不一致或不连贯。这方面一些论文和框架中都提供了相关的策略,比如LLamaIndex框架中有很多检索和chunk策略可以缓解此类问题。
-
RAG的计算成本
每个查询都需要执行检索和生成两个步骤,其中涉及到大量的Token消耗,需要尽量去平衡检索内容的全面性和长上下文的幻觉问题。
-
伦理问题,尤其是偏见和透明度问题。
AI和LLM中的偏见是一个广泛研究且不断演变的领域,研究者们识别出包括性别、社会经济阶层、教育背景在内的多种偏见类型。虽然RAG通过检索更平衡的信息有潜力减少偏见,但仍存在放大检索来源偏见的风险。另外还要防止请求注入、Prompt越狱、偏见引导等问题。
三、RAG的核心架构和组件
RAG 模型包含两个关键组件:
- 检索器:使用DPR或传统BM25算法等技术从语料库中检索最相关的文档。
- 生成器:它将检索到的文档合成为连贯的、与上下文相关的响应。
3.1 RAG中的检索机制
RAG的核心在于知识段略的检索质量,目前大部分都基于相似检索。目前的趋势就是多路召回、结果融合、重排筛选。
3.1.1 BM25
BM25算法是非常常用的一种搜索,它基于术语频率-逆文档频率(TF-IDF)的原理,通过计算查询词在文档中的出现频率来对文档的相关性进行排序。同时还会根据文档的长度和词在整体语料库中的普遍性进行调整。ElasticSearch中默认的召回评分算法用的就是这个。
尽管BM25在处理基于关键字的查询时表现出色,但它在理解查询的深层语义方面是欠缺的。BM25算法捕捉不到单词之间的关联,这使得它在处理需要深入理解上下文的复杂自然语言查询时力不从心。所以本质上只是搜索,简单理解就是"外形越像越越相关"。
不过瑕不掩瑜,在面对更简单、以关键字为中心的查询任务时,BM25的高效和简单往往是性价比最高的方案。
3.1.2 DPR(Dense Passage Retrieval)
密集段落检索其实就是RAG中最常用的"向量相似度"。同时embedding知识和问题,然后计算相似度,相似度的算法可能是余弦、L2等等。
这种召回方式的优势就是基于语义的召回和查询,很多向量数据库都可以在这里使用。但是实际使用的时候要注意embedding文本长度。
另一方面,向量相似度局限性也很高
- 相似度很难有阈值:传统场景中经常会听到把"相似的放在一起..."这种需求,但是当你想在M3、embedding3和ada这类向量模型中拿到两个坐标之后会发现你很难有一个绝对的阈值能够达成这个目标。
- 跨语言的问题:一句中文,哪怕你直译的再准,相似度也是有损的。
- 内容长短的影响:我做过这样一个测试,用Ada002的模型比如A、B两句话相似度是10,但是(A+B)再去和A或者B做匹配也会降低相似度。更极端一点,一句话反复重复多次再和原句子做匹配,也再降低。
- 预训练的局限性:由于这些模型都是预训练的,涵盖的信息是固定的,一些术语、新兴信息一般是不知道的。另外,像是OpenAI和Cohere等厂商提供的模型训练和数据调优的细节都是不公开的,有时候你会觉得为啥这两句话的向量相似度会这么高?
我对于现在这些Embedding模型的理解是能够尽量把语义相近的内容拉到一起,目的是让RAG能看的尽量广。关于一些Embedding模型的特性我也在摸索,欢迎大家指教。
贴一下原文,以免导
Dense Passage Retrieval (DPR), introduced by Karpukhin et al. (2020), represents a more modern
approach to information retrieval. It uses a dense vector space in which both the query and the
documents are encoded into high-dimensional vectors. DPR employs a bi-encoder architecture, where
the query and documents are encoded separately, allowing for efficient nearest-neighbor search (Xiong
et. al. 2020). Unlike BM25, DPR excels at capturing semantic similarity between the query and
documents, making it highly effective for open-domain question-answering tasks. The strength of DPR
lies in its ability to retrieve relevant information based on semantic meaning rather than keyword
matching. By training the retriever on a large corpus of question-answer pairs, DPR can find documents
that are contextually related to the query, even when the query and the document do not share exact
terms. Recent research has further improved DPR by integrating it with pre-trained language models and
an example is LLM adapted for the dense RetrievAl approach (Li et. al. 2023
3.1.3 REALM(Retrieval-Augmented Language Model)
这个在论文中的描述极其抽象,最初我是没理解的,后面也放一下原文。但是通过多方查询,我说说我对于这个的理解。
REALM可以说是DPR的进阶,他融合了传统的BM25这类的分词搜索、基于深度学习的Embedding模型两种检索。概念上类似多路召回,然后做RRF融合。之前还看到过一篇论文提到过一种方式是将固定的文章通过语言模型训练之后,直接让模型提供一个相关文档片段。
反正总之REALM类似一个缝合怪,将各种渠道召回的数据做融合,可能会加入rerank等步骤。
这种混合召回在很多框架中都有所体现,FastGPT、Dify等的知识召回阶段都可以配置混合召回。
Another significant advancement in retrieval mechanisms for RAG models is REALM (Guu et al. (2020). REALM integrates retrieval into the language model's pre-training process, ensuring that the retriever is optimized alongside the generator for downstream tasks. The key innovation in REALM is that it learns to retrieve documents that improve the model's performance on specific tasks, such as question answering or document summarization. During training, REALM updates both the retriever and the generator, ensuring that the retrieval process is optimized for the generation task. REALM's retriever is trained to identify documents that are not only relevant to the query but also helpful for generating accurate and coherent responses. As a result, REALM significantly improves the quality of generated responses, particularly in tasks that require external knowledge. Recent studies have demonstrated that REALM outperforms both BM25 and DPR in certain knowledge-intensive tasks, particularly when retrieval is tightly coupled with generation.
3.2 RAG的内容生成
在检索-增强生成(RAG)系统中,生成器机制通过将检索到的信息与输入查询集成,在产生最终输出中起着至关重要的作用。
在检索组件从外部来源提取相关知识后,生成器将这些信息合成为连贯的、上下文适当的响应。大语言模型(LLM)作为生成器的骨干,它确保生成的文本流畅、准确并与原始查询保持一致。
上面的内容是直接翻译的论文,我说说我对于生成这一块的理解。
在RAG中Genervate其实是检索到的信息与输入的问题或者内容做融合之后,整体输出生成内容。 通俗一点就是需要让LLM按照我提供的内容来回答问题。这一步说起来简单,但是却实最终输出效果决定性的存在。
了解的Transformer模型的朋友都知道,本质上还是个概率模型,能输出什么,一方面靠的是训练过程中积累的权重,另一方面就是靠我们输入的内容,也就是Prompt。
一个简单的理解,如果你输入一个知识100次,那模型输出这个内容的概率肯定比只出现一次的知识要高。
所以,几个好的Prompt+良好的生成、回溯、检查机制会有更大的作用
3.2.1 T5模型
T5(文本到文本传输转换器)(Raffel et al.2020)是RAG系统中最常用的生成任务模型之一。
T5的方法用途广泛,将每个NLP任务都框定为文本到文本的任务。这种统一的框架允许T5针对广泛的任务进行微调,包括问答、摘要和对话生成。通过将检索与生成相结合,基于T5的RAG模型已被证明在多个基准测试上优于传统的生成模型,如GPT-3和BART,包括自然问题数据集和TriviaQA数据集。此外,T5处理复杂多任务学习的能力使其成为需要处理各种知识密集型任务的RAG系统的热门选择。
3.2.2 BART模型
由Lewis等人(2020)推出的BART(双向和自动回归转换器)是RAG系统中使用的另一个突出的生成模型。
BART特别适合涉及从嘈杂输入生成文本的任务,例如摘要和开放域问答。作为去噪自动编码器,BART可以重建损坏的文本序列,使其对于需要从不完整或嘈杂的数据生成连贯的事实输出的任务具有鲁棒性。当与RAG系统中的检索器配对时,BART已被证明可以通过将生成的文本植根于外部知识来提高生成文本的事实准确性。研究表明,基于BART的RAG模型在各种知识密集型任务中实现了最先进的结果,包括对话生成和新闻摘要。
BART模型之前没注意过,实际搜了一下BART的相关信息。
BART吸收了BERT的bidirectional encoder和GPT的left-to-right decoder各自的特点,建立在标准的seq2seq Transformer model的基础之上。还没学习过,放下论文,感兴趣的朋友可以看一下,也欢迎有经验的朋友指导一下BART的相关知识。
四、多模态RAG
多模态的RAG接触的不多,下面一段是原论文的机翻。不过Retrieval as generation的概念最近看到过很多次,有时间研究一下,这里不展开了。
4.1 基于文本的RAG模型
基于文本的RAG模型是目前最为成熟且广泛研究的类型。
依托文本数据,执行检索与生成任务,推动了问答、摘要和对话智能体等应用的发展。
BERT和T5等Transformer架构构成了文本RAG模型的基石,运用自注意力机制来捕捉文本内的上下文联系,从而提升检索的精确度和生成的流畅度。
4.2 基于音频的RAG模型
基于音频的RAG模型将检索增强型生成的理念拓展至音频领域,为语音识别、音频摘要和语音界面中的对话智能体等应用开辟了新天地。音频数据常通过Wav2Vec 2.0等预训练模型衍生的嵌入表示来呈现。这些嵌入作为检索和生成组件的输入,使得模型能够有效地处理音频数据。
4.3 基于视频的RAG模型
基于视频的RAG模型融合视觉与文本信息,增强了视频理解、字幕生成和检索等任务的表现。视频数据通过 I3D TimeSformer 等模型的嵌入表示来呈现。这些嵌入捕捉了时间与空间特征,对于有效的检索和生成至关重要。
4.4 多模态RAG模型
多模态RAG模型融合了文本、音频、视频和图像等多种模态的数据,为检索和生成任务提供了一种更全面的方法。
例如Flamingo这样的模型将不同模态整合进一个统一的框架内,实现了文本、图像和视频的同时处理。跨模态检索技术涉及在不同模态间检索相关信息。
"检索即生成(Retrieval as generation)"通过结合文本到图像和图像到文本的检索,将检索增强型生成(RAG)框架扩展到了多模态应用。利用大规模的配对图像和文本描述数据集,在用户查询与存储的文本描述相匹配时,能够快速生成图像("检索即生成")。
五、十五种RAG框架的特性
重头戏来了,论文在"Recent Advancement in the field"这一节列举了15种RAG框架,并且描述了每一种RAG框架的作用。我个也没看全过,先把论文中写的结合一些个人经验写出来,多数内容是通过Google NotebookLM阅读的。
整个十五种框架我逐一查了一下,根据论文中的思想分为两种主要思路。
- 小模型打造智能体,智能体协作实现RAG。
- 长上下文通吃所有检索知识,配合长上下文模型自身能力提升RAG。 按照这两种分类,我把论文中提及的一些RAG理论和实践做了一下分类。
5.1 智能体协作RAG
采用分层的多代理架构,其中使用较小的预训练语言模型(SLM)的专用子代理针对特定的时间序列任务进行了微调。主代理将任务委托给这些子代理,这些子代理从共享知识库中检索相关提示。在这种模块化的多代理方法中,作者实现了最先进的性能,证明了在时间序列分析中比特定任务的方法提高了灵活性和有效性。
5.1.1 RULE
RULE是一个可靠的多模态检索增强生成方法,用于提高医学视觉语言模型(Med-LVLM)的准确性。
RULE通过校准检索上下文数量来控制事实错误风险,并利用偏好微调策略平衡模型自身知识与检索信息的依赖,从而有效减少Med-LVLM中的幻觉问题,提升其在医学视觉问答和报告生成任务上的事实准确性。实验结果表明,RULE在三个医学数据集上取得了显著的性能提升,平均准确率提高了47.4%。
5.1.2 METRAG
METRAG是多层思想增强型检索增强生成框架。
现有的RAG模型主要依赖于查询和文档之间的相似度,这并非总是最佳策略。METRAG通过引入多层思想来克服这个问题:
- 首先,利用大型语言模型(LLM)的监督训练一个效用模型,结合相似度模型,更全面地评估文档的价值;
- 其次,训练一个任务自适应摘要器,对检索到的文档进行浓缩,从而减少LLM的计算负担并提取关键信息;
- 最后,利用整合后的信息,LLM进行知识增强型生成。
论文通过大量实验验证了METRAG在知识密集型任务上的优越性,还有一些关于在不同LLM和不同数据集上的表现。
5.1.3 RAFT
这个框架之前了解过,看了一下相关文章。这个文章讲的不错,挺明白的# RAFT: Combining RAG with fine-tuning。结合自己的理解通俗的整理下。
RAFT其实是将微调特定领域模型的优势和RAG的外部知识更新能力做了融合。
RAG理论上可以检索任意多的知识,而FT会让大模型在某一个领域更精通。这就像一个学生,RAG相当于让你携带上所有的教材去考试,而FT就像老师在考前会帮你复习冲刺。
RAFT的核心在于,它在训练过程中不仅使用正确的文档(golden documents),还会加入一些与问题无关的干扰文档(distractor documents),迫使模型学习区分相关和不相关信息,并通过链式思维 (chain-of-thought) 和原文引用 (verbatim citation) 来提升模型的推理能力和答案准确性。
论文里提了一下效果,RAFT在PubMed、HotpotQA和Gorilla等数据集上显著优于基线模型,尤其在处理包含干扰信息的情况下表现出色,为提高预训练LLM在特定领域检索增强生成 (RAG) 任务中的性能提供了一种有效策略。
RAFT的论文中的指标表明鲁棒性非常好。
其他的待整理 太晚了,感兴趣的朋友可以收藏关注下。。。。