6个RAG进阶优化方案,对应14篇论文案例解析
创作时间:
作者:
@小白创作中心
6个RAG进阶优化方案,对应14篇论文案例解析
引用
CSDN
1.
https://blog.csdn.net/python1222_/article/details/143210527
RAG(Retrieval-Augmented Generation)是当前AI领域的重要研究方向之一,其优化方案和相关研究具有重要的参考价值。本文总结了6个RAG进阶优化方案,并详细解析了14篇相关论文,涵盖了问题优化、混合检索、上下文理解、迭代检索、自适应检索和重排序等多个方面。
在介绍RAG优化策略之前,先说说知识库数据处理:
- 增强数据粒度:旨在提升文本标准化、一致性、事实准确性和丰富的上下文,以提高 RAG 系统的性能。比如删除不相关的信息、消除实体和数据中的歧义、更新过时文档等。
- 添加元数据:将引用的元数据(如日期和用途)集成到块中以进行过滤,并合并元数据以提高检索效率。
- 数据源分类:可以分为非结构化数据、结构化数据和LLM生成的内容,目前主要是非结构化数据。除了外部知识外,LLM本身的知识也至关重要。
整个RAG存在两个基本矛盾:
- LLM训练时自己的知识learned memory和RAG或长文本窗口提供的外部知识的矛盾in context memory
- 外部知识增多对大模型回答质量的影响是倒U形,检测更多相关信息会提高准确率,但检测到太多不相关的噪音内容会对模型性能有损害。
01 优化方向总结
(1) 根据问题进行优化
- 问题意图关键信息提取:在检索阶段筛选query表达的真实意图,提取query最相关信息,见Shortwave;对比较粗粒度的query拆解成更详细具体的子问题,来提升检索质量,见RA-ISF。
- LLM对问题初步回答:对问题先让LLM生成可能回答,再将该回到传递给检索器,检索会比较真实文档和GPT回答内容的差异,来增加检索内容与问题的相关性,见HyDE;根据问题,一个负责存储记忆的LLM利用内存和数据库记忆存储,提供跟问题相关的线索,再让检索器根据线索指导去检索,见MemoRAG。
(2) 混合检索
- 混合向量检索和传统的检索方式:如BM25检索见Standard RAG、全文检索见Shortwave,以及一些更传统的搜索来弥补向量检索的模糊性。
(3) Chunk独立分词导致的缺乏上下文理解
- 优化方案:重叠的chunk切割方案;先对整个文档进行总结归纳,基于总结构建一级索引,文档的Chunk构建二级索引,检索时先从总结索引中检索;提示词压缩(Prompt Compression)可以重点压缩不相干的上下文,突出关键段落,减少整体上下文长度。
- 其他灵活解决方案:GraphRAG、HippoRAG、HybridRAG、GNN、DALK增加知识图谱,解决分词独立编码导致缺少上下文背景,很难回答需要跨段落总结的问题;RAPTOR则利用知识树让文本对上下文有更多理解;Anthropic的Standard RAG让Claude先对chunk生成解释性上下文,让LLM再检索时不仅检索chunk,也检索这段GPT生成的解释性context,让检索器更好理解这段文本;Late Chunking通过先嵌入再分割让注意力层先学习理解相应内容后再分割,让LLM理解"它"等代词;RAPTOR对文本块chunk进行聚类,并生成这些聚类的文本摘要,自下而上地构建出一个结构化的树形模型。
(4) 迭代、递归检索
- 迭代检索:允许模型参与多个检索周期,从而增强获得信息的深度和相关性,为LLM生成提供更全面的知识库。
- 递归检索:可以将之前的检索输出作为后续的检索输入。递归检索通常用于需要渐进式收敛到最终答案的场景,比如学术研究、法律案例分析等。针对多级索引(比如摘要索引,Chunk索引),可以使用递归检索;此外,针对具有图结构的数据源,使用递归检索也可以检索更全面的信息。
(5) 自适应检索
- RA-ISF的文章相关性模块PRM跟下面介绍的re rank重排序思想类似,但不需要非得排序,找不到相关内容可以直接不检索,让LLM直接回答。像这种需要LLM自己判断是否使用检索内容的,就是自适应检索。
- Self RAG也是,检索到的内容会比较相关性、支持有用性或完整性,检索到的内容谁最相关,最有用,最完整,该内容就排在前面,实在没有相关内容直接不检索,用LLM训练时学会的内容回答。
(6) rerank重排序
- 传统排序是根据相似度大小排序,排序还可以考虑知识密度,知识颗粒度,多样性,LLM对内容的敏感度等考量因素。
- OP-RAG也计算了相识度但是按照原文顺序排序;还有更复杂的重排序,如Shortwave的MiniLM排序还考虑了回答和问题的匹配性,并且能对索引到的内容进行boost or penalize,Self RAG跟Shortwave类似,检索到的内容会比较相关性、支持有用性或完整性,检索到的内容谁最相关,最有用,最完整,该内容就排在前面。
02 优化方案详解
Shortwave
- 核心思想:问题意图关键信息feature提取,利用feature信息缩小向量搜索的范围,比如问题提取出来的feature有时间、姓名、需要近因效应,则相应的部分会得到最大的boost激励,其他次相关的得到较小的激励,甚至是惩罚。
- 具体实现:
- 时效性偏差提取器(Recency bias extractor)
- 关键词提取器(Keyword extractor)
- 命名实体提取器(Named entity extractor)
- 日期范围提取器(Date range extractor)
- 查询嵌入(Query embeddings)
- 检索流程:
- keyword + embedding Search通过上面提取的特征信息结合来做最初的检索 initial retrieve
- Feature extraction + Full-text search:它与特征提取一起使用LLM(大型语言模型)来处理。全文搜索是一种搜索技术,它检索文档中的所有词语,并试图根据搜索条件的相关性来匹配文档。
- 使用开源MS Marco MiniLM模型来做 cross Encoder,也是本地运行,效果更好,但消耗算力大,因此只用上一步 heuristic embedding 排名最靠前的信息进行进一步 re-ranking
- MiniLM 的输入,除了上一步的排名靠前信息也有reformulated query,根据上一步内容与问题的匹配性进行评分,再把这个评分给 heuristic re-ranking,让它对索引的内容进行 boost or penalize再重新评分,最后把这份信息提供给 LLM
RA-ISF
- 核心思想:通过迭代自反馈机制来优化检索和生成过程。
- 模块组成:
- 自知识模块(Self-knowledge Module, SKM):系统首先接收一个问题,SKM判断系统是否已知答案。如果是"Know"则LLM直接回答,是"unknow"才进行检索。这种LLM自己的判断就是(5)自适应检索。
- 段落相关性模块(Passage Relevance Module, PRM):评估每个段落的相关性。如果是相关的,右图绿色箭头则会过滤筛选先关信息提供给LLM,当被标记为"All are irrelevant"则会调用红色箭头进行问题细化分解。
- 问题分解模块(Question Decomposition Module, QDM):当检索到的段落都不相关时,系统会将原始问题分解为多个子问题,再在每个子问题继续上述循环,直达LLM找到相关内容。
Self RAG
- 核心思想:通过自适应检索和ReRank提高大型语言模型的生成质量和事实准确性,同时不牺牲LLM原有的创造力和多功能性。
- 具体实现:
- 给定一个输入提示和前面的生成,SELF-RAG 首先决定是否通过检索段落来增强。如果是,它输出一个检索标记,按需调用检索器模型。对应(5)自适应检索。
- 随后,SELF-RAG 同时处理多个检索到的段落,评估它们的相关性(irrelevant, relevant, partiality, supported),然后生成相应的任务输出。
- 然后,它生成批评标记来批评自身的输出,并选择最佳输出①>③>②,对应(6)ReRank机制。
HyDE
- 核心思想:利用大语言模型(如GPT)生成假设性文档Hypothetical Document Embeddings,生成的文档片段然后传递给名为Contriever的检索模型。Contriever模型将GPT生成的文档与真实文档进行比较和检索,找出最相关的真实文档片段作为答案。用GPT的猜测来帮助在真实文档中找到最相关的信息,这种方法结合了生成模型的灵活性和检索系统的准确性。
memoRAG
- 核心思想:引入双系统架构,使用一个轻量级LLM作为记忆,另一个重量级LLM执行检索增强生成。轻量级LLM必须具有成本效益和长上下文能力,能够在有限的计算预算内容纳整个数据库。其次,本文对记忆进行微调,以便生成的线索能够实现优化的检索质量。
- 具体实现:
- 对于每个呈现的任务,MemoRAG 会提示其记忆模块生成检索线索。这些线索本质上是基于数据库的压缩表示(即记忆)起草的答案。
- 这些线索明确揭示了所呈现任务的潜在信息需求。
FunSearch
- 核心思想:通过生成提示、模型生成程序、评估、存储的闭环循环来不断优化程序的实现。
- 具体实现:
- 生成提示(Prompt Generation):FunSearch系统会从一个已有的程序数据库中抽取出一些程序,特别是那些得分较高的程序,然后把它们组合起来,生成一个新的提示(Prompt)。这些提示可能包括函数代码片段、结构等。
- 预训练的大型语言模型(Pretrained LLM):生成的提示会被输入到一个预训练的大型语言模型中(例如GPT这样的模型),由它来生成新的程序实现。
- 评估(Evaluation):生成的新程序会进行评估(使用最初给出的“评估”函数)。如果新生成的程序通过了评估,它就会被存入程序数据库中。
- 闭环(Closing the Loop):整个过程会重复多次,每次都会通过生成提示、模型生成程序、评估、存储的循环来不断优化程序的实现。用户可以随时取回数据库中得分最高的程序。
EfficientRAG
- 核心思想:将复杂的多跳问题分解为简单的子问题,并在每一步过滤出无关信息,既不需调用很消耗算力LLM,也减少了无用信息的干扰。
- 具体实现:
- 查询接收(Query Reception):系统首先接收到用户的查询。
- 检索器(Retriever):检索器从数据库中提取相关的文本片段(chunks),这些片段包含了潜在的有用信息,可以用于回答查询。
- 标签和标记(Labeler & Tagger):该模块对检索到的每个文本片段进行标注,判断其中的关键信息是否有助于回答查询。具体来说,系统会将这些片段标记为 Continue或Terminate,以指示该片段是否包含足够的信息来继续推导下一个问题或已经可以结束检索。
- 过滤器(Filter):过滤器处理由标签和标记模块生成的文本片段,并将有用的信息提取出来,结合原始查询生成一个新的、更具体的查询,以用于下一轮检索。
- 迭代检索(Iterative Retrieval):系统会根据新生成的查询继续检索,直到所有片段被标记为 Terminate,或者达到最大迭代次数为止。
- 生成答案(Answer Generation):最后,所有有用的文本片段被传递给大语言模型(LLM),以生成最终的答案。
OP-RAG
- 核心思想:传统的RAG,检索与查询最相关的前k个文本块。按照相似度分数排序, OP RAG也会出现相似度分数,但根据检索文本在原文本的顺序排序。也就是说,如果一个文本块在原文中出现在另一个文本块之前,那么在处理答案时,它也会被放在前面。这个相比前面介绍的Self RAG等根据相关性, 问题匹配性等来说,更简单, 在选择较高相识度的chunk时保留了原来的文本顺序。
LongRAG
- 核心思想:增加单元长度, 检索器长度,阅读器长度: 每个单元从之前只能读几百字, 到现在 4K token;把零碎的文档合成group长文档, 检索器检索这些长文档。
Standard RAG
- 核心思想:在嵌入或索引之前,为每个文本块添加相关的上下文信息。这样一来,即使是孤立的文本块,也能携带足够的背景信息,大大提高了检索的准确性。
- 具体实现:
- 系统会将每个文本块连同其所属的完整文档一起输入Claude,让AI生成针对该块的解释性上下文。这个过程就像是给每个文本块配备了一个"小秘书",随时为它补充必要的背景信息。
- 原始文本块:“公司收入较上一季度增长3%。”
- 经Claude处理后的上下文化文本块:“这段内容来自ACME公司2023年第二季度的SEC文件。上一季度收入为3.14亿美元。收入较上一季度增长3%。”
Late chunking
- 核心思想:先过 Embedding 模型再分块,我们先将 Embedding 模型的 transformer 层应用到整个文本或尽可能多的连续文本,为每个 token 生成一个包含丰富上下文信息的向量表示序列(Transformer的self attention机制是能够学习到其中的意思的)。随后,再对这些 token 向量序列进行平均池化,进而得到考虑了整个文本上下文的块 Embedding。
DALK
- 核心思想:该论文以阿尔茨海默病(AD)的知识图谱为例,利用LLM构建了一个AD特定的知识图谱,并使用自适应知识检索方法来增强LLM的推理能力。
- 具体实现:
- LLMs for KG 数据集收集:使用由墨尔本大学领域专家Colin Masters教授收集的AD语料库,该语料库基于他广泛的代表性广告相关论文的参考书目。重点关注2011年以来反映该领域最新知识的论文,共获得9764篇。
- 实体识别:利用NCBI开发并持续维护的PubTator Central从语料库中提取相关实体,将PTC应用于所有AD论文的摘要,并获得相关的命名实体,这些实体将作为知识图中的节点。
- 关系抽取:在两个相关实体之间分配特定的关系类型,我们将LLM当前方法分为两大类:
- 成对关系提取旨在促使法学硕士描述文本片段中任意两个实体之间的关系。
- 生成关系提取LLM直接输出所有相关实体对及其对应关系。我们将这两种关系提取方法合并到我们的知识图谱增强过程中,对它们进行全面的比较。
HybridRAG
- 核心思想:结合了 Vector RAG 和 GraphRAG 的优势(虽然GraphRAG 在上下文精确性上现出色,但可能无法匹配全面的召回能力),通过先使用 Vector RAG 获取大量相关信息,然后利用 GraphRAG 对这些信息进行精确的上下文处理。
- 具体实现:
- VectorRAG 阶段:首先使用 VectorRAG 从文档中提取相关的上下文。这一阶段主要依赖向量检索技术来找到与查询最相关的内容。
- GraphRAG 阶段:接着使用 GraphRAG 利用知识图谱来补充和优化之前获取的上下文。这一步能够通过知识图谱提供更丰富的语义信息,从而生成更准确的答案。
RAPTOR
- 核心思想:首先,需要对文本进行合理的切片处理。然后,RAPTOR 根据其语义embedding递归地对文本块chunk进行聚类,并用LLM生成这些聚类的文本摘要。
- 具体实现:
- RAPTOR采用软聚类方法,允许文本块跨多个聚类,基于高斯混合模型(GMMs)和UMAP技术进行降维,以捕捉文本数据的复杂结构和关系,从而优化文本聚类效果。
- 最后再自下而上地构建出一个结构化的树形模型。在此树中,相近的节点自然聚集形成兄弟关系,而它们的父节点则承载着整个集群的概要性文本信息。这种设计确保了文本信息的层次化和结构化表达,便于理解和检索。
- 相比于Standard RAG在每一个chunk都提供摘要, RAPTOR这种摘要还是偏模糊。也很少有人提及。
热门推荐
新突破丨脊髓损伤后的神经恢复:探索神经修复综合治疗的高效路径
治疗老年人骨质疏松的食疗药膳
艾滋病何时传播性最强:深入了解这一致命病毒的传播阶段
俄美在沙特谈了这些 乌克兰问题有解了?| 国际识局
樱桃口、小蛮腰,流传千年!背后隐藏的秘密,除了白居易,还有他
尿毒症早期有4个信号
为什么肝病不能吃鸡蛋
周瑜的“人设”
淘宝卖家如何有效拒绝好评返现,维护店铺信誉与合规经营
艾丽丝·门罗:用文学点亮加拿大小镇的平凡人生
山东耐寒花卉推荐及种植指南
姓戴的名字带美好寓意男孩
武侠小说的前世今生:从《史记》到金庸
「拍片子」要穿防护服吗?拍一次,身体要「吃」进多少辐射?
古龙《白玉老虎》——半部亦是经典
期货市场中的波峰波谷是什么意思?如何识别市场的转折点?
探索历史:二战中的乌克兰人
声乐技巧的奥秘
X光一年只能拍一次?核磁有辐射?在医院拍这些“片子”有啥区别?
教师研修现场变学生“吐槽大会”?最不喜欢对着PPT照本宣科,课堂该怎么变
人一出生就已经决定了自己的命运?
26种适合小区种植的观赏性花卉推荐
女生泡脚可以缓解痛经
促进消化的小儿推拿手法
甘草菊花茶的功效与适用人群
汽车行业如何进行汽车试验分类?附6大汽车典型参数测试方法
蛮龙:侏罗纪时期的顶级掠食者
吃了西瓜大便是红色的正常吗
"无间道"科学家高华建:忍辱负重在美35年,带20博士弟子回国!
美国留学托运行李箱尺寸大小是多少?