【大模型专栏—进阶篇】RAG创新点汇总

news/2025/2/4 0:48:38 标签: 开发语言, RAG

在这里插入图片描述

😊你好,我是小航,一个正在变秃、变强的文艺倾年。
🔔本文讲解RAG创新点,期待与你一同探索、学习、进步,一起卷起来叭!
🔔文章同步存在格式丢失,还请见谅。

目录

  • 一、前置知识
  • 二、Paper总结

一、前置知识

如果对RAG概念、流程不懂,先看这个,动手学大模型应用全栈开发-学习者手册 - 飞书云文档 (feishu.cn)

测验是否学懂了,就看这几个概念是否能秒懂以及代码实现:
(1)文档加载;
(2)文本转换【拆分(块的大小、块之间重叠文本的长度)、组合(LLM的token限制、任务类型)、过滤(文本性质、文本内容相似度)、翻译等】;
(3)文本嵌入【在空间向量中思考文本以及执行语义搜索之类的操作】;
(4)存储嵌入【缓存存储(内存嵌入、本地文件嵌入、远程数据库嵌入)、向量存储(数据规模和速度需求、持久性和可靠性、易用性和社区支持、成本、特性、安全性)】;
(5)数据检索(注意索引)

学习借助例子来说明问题,说明Paper动机的好方法,后面的Paper总结都会围绕动机来进行:

  1. 知识库内容缺失:现有的文档其实回答不了用户的问题,系统有时被误导,给出的回应其实是“胡说八道”,理想情况系统应该回应类似“抱歉,我不知道”。
  2. TopK截断有用文档:和用户查询相关的文档因为相似度不足被TopK截断,本质上是相似度不能精确度量文档相关性。
  3. 上下文整合丢失:从数据库中检索到包含答案的文档,因为重排序/过滤规则等策略,导致有用的文档没有被整合到上下文中。
  4. 有用信息未识别:受到LLM能力限制,有价值的文档内容没有被正确识别,这通常发生在上下文中存在过多的噪音或矛盾信息时。
  5. 提示词格式问题:提示词给定的指令格式出现问题,导致大模型/微调模型不能识别用户的真正意图。
  6. 准确性不足:LLM没能充分利用或者过度利用了上下文的信息,比如给学生找老师首要考虑的是教育资源的信息,而不是具体确定是哪个老师。另外,当用户的提问过于笼统时,也会出现准确性不足的问题。
  7. 答案不完整:仅基于上下文提供的内容生成答案,会导致回答的内容不够完整。比如问“文档 A、B和C的主流观点是什么?”,更好的方法是分别提问并总结。

回顾上面整个流程,我们可以对整个链路进行增加:

增强内容生成 =>
(1)增强训练【例如引入知识检索器增强大模型预训练】;
(2)增强微调【例如实现对大模型和检索器的双指令微调,识别干扰文档】;
(3)增强语料【例如支持多模态数据检索】;
(4)增强知识【例如引入知识图谱,使用图社区摘要解决总结性查询任务】;
(5)增强检索(例如对检索到的文档置信度进行评估);
(6)增强推理【例如结合Agent做Plan、结合CoT】。

RAG技术发展回顾:

(1)2023年RAG模块迭代:朴素RAG->高级RAG->模块化RAG

(2)2024年RAG框架演化:RAG-> MM-RAG/GraphRAG->Agentic RAG

RAG通用架构:最上层借助于IndexStore核心抽象,搭配外围的Loader/Splitter实现文本读取切分、Transformer实现索引的构建、Retriver/Synthesizer实现知识检索与合成,构建完整的RAG能力。所有的索引存储统一抽象为IndexStore,LLM服务作为构建索引能力依赖(文本模型、嵌入模型等)。索引存储当下支持向量存储(VectorStore)和知识图谱(Knowledge Graph)两种,保留对其他索引格式的扩展能力。 知识图谱层负责知识的表示和语义抽象,数据底座是图存储(GraphStore)。当然也可以直接对接外部的知识图谱系统。最底层接入多样化的向量数据库、图数据库、大模型服务等外部组件。

二、Paper总结

(1)GraphReader【图解专家】 20240120

论文:GraphReader: Building Graph-based Agent to Enhance Long-Context Abilities of Large Language Models

总结:像个善于制作思维导图的导师,将冗长的文本转化为清晰的知识网络,让AI能够像沿着地图探索一样,轻松找到答案需要的各个关键点,有效克服了处理长文本时的"迷路"问题。

架构:GraphReader是一种基于图的智能体系统,旨在通过将长文本构建成图并使用智能体自主探索该图来处理长文本。在接收到问题后,智能体首先进行逐步分析并制定合理的计划。然后,它调用一组预定义的函数来读取节点内容和邻居,促进对图进行从粗到细的探索。在整个探索过程中,智能体不断记录新的见解并反思当前情况以优化过程,直到它收集到足够的信息来生成答案。

(2)MM-RAG【多面手】20240122

论文:Benchmarking Multimodal Retrieval Augmented Generation with Dynamic VQA Dataset and Self-adaptive Planning Agent

总结:就像一个能同时精通视觉、听觉和语言的全能选手,不仅能理解不同形式的信息,还能在它们之间自如切换和关联。通过对各种信息的综合理解,它能在推荐、助手、媒体等多个领域提供更智能、更自然的服务。

架构:介绍了多模态机器学习的发展,包括对比学习、多模态嵌入实现的任意模态搜索、多模态检索增强生成(MM-RAG)以及如何使用向量数据库构建多模态生产系统等。同时还探讨了多模态人工智能的未来发展趋势,强调了其在推荐系统、虚拟助手、媒体和电子商务等领域的应用前景。

多模态表示:

大家可能对“对比学习”不太了解,这里提一下:

对比学习:利用跨模态的相似和不相似的对比示例来教导模型有用的多模态表示。

例如,我们可以通过向模型展示匹配的图片-字幕对作为正例,以及不匹配的对作为负例来训练一个图像-文本模型。通过将正例的嵌入拉近,同时分离负例的嵌入,模型学会了文本和视觉概念之间的对应关系。像CLIP(对比语言-图像预训练)这样的技术已经使用这种方法取得了很好的效果。同样的原则也适用于其他模态组合。例如,语音到文本模型可以使用匹配的音频波形-转录对作为正例进行训练。视频-文本模型可以使用成对的视频剪辑和描述。对比学习甚至适用于单模态场景,如学习文本到文本的表示。

  • 跨模态的任意到任意搜索:通过将所有数据点(图片、音频、视频、文本文档)编码到相同的语义嵌入空间,将查询编码到共享空间中,然后基于嵌入相似性在整个数据库中检索最近的邻居。

  • 多模态检索增强生成(MM-RAG):在文本生成过程中,模型检索相关的图片、音频和文本示例来指导其完成。这使输出基于额外的上下文,提高了相关性和准确性。

(3) CRAG【自我校正】20240129

论文:Corrective Retrieval Augmented Generation

总结:像个经验丰富的编辑,先用简单快速的方式筛选初步资料,再通过网络搜索扩充信息,最后通过拆解重组的方式,确保最终呈现的内容既准确又可靠。就像是给RAG装上了一个质量控制系统,让它产出的内容更值得信赖。

架构:CRAG通过设计轻量级的检索评估器和引入大规模网络搜索,来改进检索文档的质量,并通过分解再重组算法进一步提炼检索到的信息,从而提升生成文本的准确性和可靠性。CRAG是对现有RAG技术的有益补充和改进,它通过自我校正检索结果,增强了生成文本的鲁棒性。

这里讲解一下动机:

想象一下你正在参加一场开卷考试。面对试卷上的各种问题,你会如何作答呢?

  • 凭借记忆快速作答:对于熟悉的题目,直接凭借记忆快速作答。而对于不熟悉的题目,则查阅参考书,找到相关章节,快速理解并总结,然后将答案写在试卷上。【类似于人类凭借自身知识储备直接作答】
  • 逐题查阅参考书:对于每一道题目,都仔细查阅参考书,找到相关章节,理解并总结内容,然后将答案写在试卷上。【类似于传统的检索增强生成 (RAG) 技术】
  • 批判性地查阅参考书:对于每一道题目,都查阅参考书并找到相关章节。在形成答案之前,你会将收集到的信息进行分类,区分哪些是正确的、哪些是错误的,哪些是模棱两可的。然后,你会分别处理每种类型的信息,最终将整理和总结后的答案写在试卷上。【纠正性 RAG 模型 (CRAG):通过引入信息评估机制和知识精炼算法,能够更有效地筛选和处理信息,从而提升信息检索和答案生成的质量,避免错误或误导性信息的干扰。】

传统RAG的问题:

  • 缺乏相关性评估:传统的 RAG 方法往往没有考虑检索到的文档与问题之间的相关性,而是简单地将所有文档合并在一起作为生成模型的输入。这会导致大量无关信息的引入,从而影响生成模型对知识的理解,并可能导致模型生成与事实不符的“幻觉”内容。
  • 信息冗余:传统的 RAG 方法通常将整个检索到的文档作为输入,而实际上,文档中的大部分内容可能与生成内容无关。这些冗余信息不仅会增加模型的计算负担,还会影响模型对关键信息的提取和利用。

低质量的检索器 (负责信息检索的模型) 容易引入大量无关信息,这会阻碍生成器 (负责内容生成的模型) 获取准确的知识,并可能对其产生误导。

(4)RAPTOR【分层归纳】20240131

论文:RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval

总结:像个善于组织的图书管理员,将文档内容自下而上地整理成树状结构,让信息检索能在不同层级间灵活穿梭,既能看到整体概要,又能深入细节。

架构:RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval)引入了一种新方法,即递归嵌入、聚类和总结文本块,从下往上构建具有不同总结级别的树。在推理时,RAPTOR 模型从这棵树中检索,整合不同抽象级别的长文档中的信息。

(1)对文本进行合理的切片处理。

(2)根据其语义embedding递归地对文本块chunk进行聚类,并生成这些聚类的文本摘要。

(3)采用软聚类方法,允许文本块跨多个聚类,基于高斯混合模型(GMMs)和UMAP技术进行降维,以捕捉文本数据的复杂结构和关系,从而优化文本聚类效果。

(4)通过递归的向量分析,精准地对文本块进行聚类,并提炼出这些聚类的核心摘要,自下而上地构建出一个结构化的树形模型。在此树中,相近的节点自然聚集形成兄弟关系,而它们的父节点则承载着整个集群的概要性文本信息。

这里检索过程有两种方式:

  • 深度检索树(树遍历):从树的根级别开始,根据与查询向量的余弦相似度检索顶层的 top-k (这里为 top-1) 节点。在每一层,它根据与查询向量的余弦相似度从上一层的 top-k 节点的子节点中检索 top-k 节点。这个过程一直重复,直到达到叶节点。最后,将所有选定节点的文本连接起来形成检索到的上下文。
  • 广度检索树(折叠树):将整个树压缩成单一层,然后根据与查询向量的余弦相似度评估所有层的节点,直到达到设定阈值。

(5)T-RAG【私人顾问】20240212

论文:T-RAG: Lessons from the LLM Trenches

总结:像个熟悉组织架构的内部顾问,善于利用树状结构组织信息,在保护隐私的同时,高效且经济地提供本地化服务。

架构:T-RAG(树状检索增强生成)结合RAG与微调的开源LLM,使用树结构来表示组织内的实体层次结构增强上下文,利用本地托管的开源模型来解决数据隐私问题,同时解决推理延迟、令牌使用成本以及区域和地理可用性问题。

实体树搜索和上下文生成的过程如下:

  1. 解析器模块扫描用户查询以查找与组织内的实体名称相对应的关键字。
  2. 一旦识别出一个或多个匹配,就从树中提取有关每个匹配实体的详细信息。
  3. 这些详细信息被转换为文本陈述,提供有关实体及其在组织层次结构中的位置的信息。
  4. 该信息与从向量数据库检索的文档块合并以构建上下文。
  5. 通过采用这种方法,当用户询问实体时,模型可以获得有关实体及其在组织内的层次定位的相关信息。

(6) RAT【思考者】 20240308

论文:RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Horizon Generation

总结:像个善于反思的导师,不是一次性得出结论,而是先有初步想法,然后利用检索到的相关信息,不断审视和完善每一步推理过程,让思维链条更加严密可靠。

架构:RAT(检索增强思维)在生成初始零样本思维链(CoT)后,利用与任务查询、当前和过去思维步骤相关的检索信息逐个修订每个思维步骤,RAT可显著提高各种长时生成任务上的性能。

(7)RAFT【开卷高手】 20240315

论文:RAFT: Adapting Language Model to Domain Specific RAG

总结:像个优秀的考生,不仅会找对参考资料,还能准确引用关键内容,并清晰地解释推理过程,让答案既有据可循又合情合理。

架构:RAFT旨在提高模型在特定领域内的“开卷”环境中回答问题的能力,通过训练模型忽略无关文档,并逐字引用相关文档中的正确序列来回答问题,结合思维链式响应,显著提升了模型的推理能力。

RAFT的核心思想是在训练过程中引入干扰文档,以提高模型在面对无关信息时的鲁棒性。具体而言,对于每个问题和一组检索到的文档,模型不仅要学会回答问题,还要学会忽略那些对回答问题无帮助的文档。

  • 数据准备:构建一个包含问题、检索到的文档和正确答案的数据集。在训练数据中,每条记录包含一个问题、一组检索到的文档(包括黄金文档和干扰文档)以及正确的答案。
  • 模型训练:使用上述数据集对模型进行微调。在训练过程中,模型不仅要学会从黄金文档中提取相关信息,还要学会忽略干扰文档。
  • 思维链式响应:为了让模型更好地理解和推理,训练时采用思维链式响应的方式,即模型在生成答案时不仅要引用相关文档中的正确序列,还要逐步展示其推理过程。

动机:

  • 通过检索增强生成(RAG)进行上下文学习:未能充分利用固定领域设置下的学习机会。
  • 通过监督微调进行领域适应:未能充分利用测试时的文档信息。

(8)Adaptive-RAG【因材施教】20240321

论文:Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity

总结:面对不同难度的问题,它会智能地选择最合适的解答方式。简单问题直接回答,复杂问题则会查阅更多资料或分步骤推理,就像一个经验丰富的老师,懂得根据学生的具体问题调整教学方法。

架构:Adaptive-RAG根据查询的复杂程度动态选择最适合的检索增强策略,从最简单到最复杂的策略中动态地为LLM选择最合适的策略。这个选择过程通过一个小语言模型分类器来实现(A表示简单查询,B表示中等查询,C表示复杂查询),预测查询的复杂性并自动收集标签以优化选择过程。这种方法提供了一种平衡的策略,能够在迭代式和单步检索增强型 LLMs 以及无检索方法之间无缝适应,以应对一系列查询复杂度。

(9)HippoRAG【海马体】20240323

论文:HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models

总结:像人脑海马体一样,把新旧知识巧妙编织成网。不是简单地堆积信息,而是让每条新知识都找到最恰当的归属。

架构:HippoRAG是一种新颖的检索框架,其灵感来源于人类长期记忆的海马体索引理论,旨在实现对新经验更深入、更高效的知识整合。HippoRAG协同编排 LLMs、知识图谱和个性化PageRank算法,以模拟新皮层和海马体在人类记忆中的不同角色。

动机:传统RAG通常缺乏跨段落连接信息的能力,只能做到独立检索段落。在自然语言处理(NLP)中,多跳问题(Multi-hop Problem)的解决通常需要跨越并整合多个句子甚至段落的信息,其本质是借助逻辑推理和信息整合来解决复杂问题。

海马体记忆索引理论:人类长期记忆和三个组件有关,分别是新皮层(Neocortex)、海马体(Hippocampus)和海马旁回区域(Parahippocampal regions),这三个组件协同工作,使得人类能够存储大量的世界知识并持续整合新的体验,而不会丢失先前的记忆,这种复杂的记忆系统是推理和决策的基础。

当HippoRAG接收到一个新问题时,它首先通过语言模型(大脑皮层)来理解问题的关键点,然后利用检索编码器(海马旁回)将这些关键点与知识图谱中的节点关联起来。最后,通过个性化PageRank算法(海马体),HippoRAG能够在知识图谱中快速找到并整合跨多个文本片段的信息,从而提供一个准确的答案。

(10)RAE【智能编辑】20240328

论文:Retrieval-enhanced Knowledge Editing in Language Models for Multi-Hop Question Answering

总结:像个细心的新闻编辑,不仅会深入挖掘相关事实,还能通过连环推理找出容易被忽略的关键信息,同时懂得删减冗余内容,确保最终呈现的信息既准确又精炼,避免"说得天花乱坠却不靠谱"的问题。

架构:RAE(多跳问答检索增强模型编辑框架)首先检索经过编辑的事实,然后通过上下文学习来优化语言模型。基于互信息最大化的检索方法利用大型语言模型的推理能力来识别传统基于相似性的搜索可能会错过的链式事实。此外框架包括一种修剪策略,以从检索到的事实中消除冗余信息,这提高了编辑准确性并减轻了幻觉问题。

动机:现有的模型编辑方法在处理多跳问题时面临困难,无法有效地处理知识点之间的复杂联系,导致生成过时或不正确的回答。

框架组成部分:

  • 外部知识图谱:用于存储编辑过的事实和未编辑的事实,为检索过程提供丰富的知识基础。
  • 基于互信息的检索:通过最大化问题和检索到的子图之间的互信息,来识别与问题最相关的知识子图。
  • 冗余知识剪枝:使用编辑不确定性来评估检索到的事实集,并剪除那些可能导致模型输出不确定性增加的冗余或不相关事实。
  • 上下文学习编辑:将经过剪枝的、与问题最相关的事实集作为输入,结合编辑模板,通过LLMs的上下文学习能力来生成准确的答案。
  • 编辑模板:一种特定的提示结构,用于指导LLMs如何结合问题和事实来产生正确的输出。

(11)RAGCache【仓储员】20240418

论文:RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation

总结:像大型物流中心一样,把常用知识放在最容易取的货架上。懂得把经常用的包裹放在门口,把不常用的放在后仓,让取货效率最大化。

架构:RAGCache是一种为RAG量身定制的新型多级动态缓存系统,它将检索到的知识的中间状态组织在知识树中,并在GPU和主机内存层次结构中进行缓存。RAGCache提出了一种考虑到LLM推理特征和RAG检索模式的替换策略。它还动态地重叠检索和推理步骤,以最小化端到端延迟。

动机:RAG 系统在处理长序列生成时面临严重的延迟和效率挑战。

  • RAG系统的主要瓶颈在于LLM生成步骤,注入的外部知识文档显著延长了处理序列。【性能瓶颈】
  • 检索请求呈现高度集中的特征,约3%的热门文档占据了60%的检索请求。【访问模式】

知识树结构:处理了 RAG 系统中文档检索的顺序敏感性问题。

例如,考虑两个文档序列:[D1, D3]和[D2, D3]。尽管 D3 在两个序列中都出现,但由于前面文档的不同,其 key-value 张量在各自序列中的值是不同的。知识树结构能够高效管理这些变化,确保快速检索的同时保持文档顺序。

前缀感知的贪心双重大小频率(PGDSF)替换策略:确保最有价值的文档状态能够留在缓存中,最大化命中率并最小化重复计算。【文档顺序、key-value 张量的大小、访问频率、访问时间的新近性】

多层缓存:实现了一个跨 GPU 和主机内存的分层缓存系统。这种方法允许高效利用更快但容量有限的 GPU 内存,同时利用主机内存的更大容量来存储较少访问的状态。

例如,频繁访问的文档状态可能存储在 GPU 内存中以实现快速访问,而不常用的状态则保存在主机内存中。这种分层方法同时优化了速度和容量。

动态推测流水线:通过动态推测流水线重叠向量检索和 LLM 推理的能力。

  • 随着向量搜索的进行,RAGCache 将中期结果发送给 LLM 进行推测生成。
  • 如果检索到的文档发生变化,系统会适应性地启动新的推测生成。
  • 这种方法最小化了空闲时间,可以显著减少端到端延迟。

(12)GraphRAG【社区摘要】20240424

论文:From Local to Global: A Graph RAG Approach to Query-Focused Summarization

总结:先把小区居民的关系网理清楚,再给每个邻里圈做个简介。有人问路时,各个邻里圈提供线索,最后整合成最完整的答案。

架构:GraphRAG分两个阶段构建基于图的文本索引:首先从源文档中推导出实体知识图,然后为所有紧密相关实体的组预生成社区摘要。给定一个问题,每个社区摘要用于生成部分响应,然后在向用户的最终响应中再次总结所有部分响应。

(13)R4【编排大师】20240504

论文:R4: Reinforced Retriever-Reorder-Responder for Retrieval-Augmented Large Language Models

总结:像个排版高手,通过优化材料的顺序和呈现方式来提升输出质量,无需改动核心模型就能让内容更有条理,重点更突出。

架构:R4(Reinforced Retriever-Reorder-Responder)用于为检索增强型大语言模型学习文档排序,从而在大语言模型的大量参数保持冻结的情况下进一步增强其生成能力。重排序学习过程根据生成响应的质量分为两个步骤:文档顺序调整和文档表示增强。具体来说,文档顺序调整旨在基于图注意力学习将检索到的文档排序组织到开头、中间和结尾位置,以最大化响应质量的强化奖励。文档表示增强通过文档级梯度对抗学习进一步细化质量较差的响应的检索文档表示。

动机:尽管检索增强的LLMs通过检索外部数据来减少这种幻觉,但现有的方法通常不考虑检索文档与LLMs之间的细粒度结构语义交互,这在处理长文档时尤其影响回答的准确性。

R4:Reinforced Retriever-Reorder-Responder(增强检索器-重排序-响应器),它包含三个主要模块:

  • 检索器(Retriever):使用Dense Passage Retriever(DPR)检索相关文档。
  • 重排序器(Reorder):通过图注意力学习和强化学习机制动态调整检索文档的顺序。
  • 响应器(Responder):将查询和调整后的文档作为输入,生成回答。

(14) IM-RAG【自言自语】20240515

论文:IM-RAG: Multi-Round Retrieval-Augmented Generation Through Learning Inner Monologues

总结:遇到问题时会在心里盘算"我需要查什么资料"、“这个信息够不够”,通过不断的内心对话来完善答案,这种"独白"能力像人类专家一样,能够逐步深入思考并解决复杂问题。

架构:IM-RAG通过学习内部独白(Inner Monologues)来连接IR系统与LLMs,从而支持多轮检索增强生成。该方法将信息检索系统与大型语言模型相整合,通过学习内心独白来支持多轮检索增强生成。在内心独白过程中,大型语言模型充当核心推理模型,它既可以通过检索器提出查询以收集更多信息,也可以基于对话上下文提供最终答案。我们还引入了一个优化器,它能对检索器的输出进行改进,有效地弥合推理器与能力各异的信息检索模块之间的差距,并促进多轮通信。整个内心独白过程通过强化学习(RL)进行优化,在此过程中还引入了一个进展跟踪器来提供中间步骤奖励,并且答案预测会通过监督微调(SFT)进一步单独优化。

动机:与不同能力的信息检索(Information Retrieval, IR)系统集成的灵活性有限,多轮检索的可解释性不足、以及缺乏端到端优化机制。

IM-RAG 框架包括四个主要组件:

  • 推理器(Reasoner):负责主要的推理任务,在不同阶段切换角色。作为“提问者(Questioner)”,它生成查询并调用检索器,获取相关的外部文档;作为“回答者(Answerer)”,它基于对话上下文和文档生成最终答案。
  • 检索器(Retriever):根据推理器的查询从数据库中检索相关文档,并将结果传递给精炼器进行进一步处理。
  • 精炼器(Refiner):对检索到的文档进行重排序和改写,以提高信息的相关性,并将前几条最相关的文档(Top-K)返回给推理器,帮助推理器在后续推理过程中使用。
  • 进度跟踪器(Progress Tracker):通过打分系统来跟踪任务进展。在强化学习(Reinforcement Learning,RL)阶段,进度得分用作奖励,帮助推理器调整检索和回答策略。最终回答的生成则在监督微调(Supervised Fine-Tuning,SFT)阶段完成,使用真实答案和优化的 IM(内部独白)查询-回答对作为微调样本。

学习过程:

  • RL 阶段:推理器在生成查询时使用进度跟踪器的分数作为反馈,帮助优化查询策略。
  • SFT 阶段:推理器在提供最终答案时基于对话和相关文档生成预测,并进一步利用真实答案微调模型。

示例流程:

一个用户提出了一个复杂的问题后,

  • “推理器(Reasoner)”首先尝试回答。如果推理器认为当前信息不足以得出答案,它将作为一个“提问者(Questioner)”生成查询,并交由“检索器(Retriever)”去知识库中查找相关信息。
  • 在检索到的文档返回后,“精炼器(Refiner)”会进一步过滤和提升信息的相关性,将最重要的信息标注后再传回推理器。推理器会检查信息是否足够充分,不足时会继续迭代,生成新的查询并再次检索。整个流程会持续数轮,直到推理器认为信息足够齐全,最终转为“回答者(Answerer)”,提供最终答案。
  • “进度跟踪器(Progress Tracker)”会帮助记录每一步的进展和中间步骤,为用户提供解释性线索,使人类能够清晰了解系统推理过程及其结论的依据。

(15)AntGroup-GraphRAG【百家之长】20240516

项目:https://github.com/eosphoros-ai/DB-GPT

总结:汇集行业百家之长,擅用多种方式快速定位信息,既能提供精准检索,又能理解自然语言查询,让复杂的知识检索变得既经济又高效。

架构:蚂蚁TuGraph团队基于DB-GPT构建的开源GraphRAG框架,兼容了向量、图谱、全文等多种知识库索引底座,支持低成本的知识抽取、文档结构图谱、图社区摘要与混合检索以解决QFS问答问题。另外也提供了关键词、向量和自然语言等多样化的检索能力支持。

动机:由于知识图谱存储的是确定性知识,相比向量数据库的方案可以提供更确定的上下文。

然而这样的设计强依赖于查询中的关键词信息,对于总结性查询无能为力,经常会出现“当前知识库不足以回答你的问题”的尴尬结果。

简言之:就是要改进总结性查询的问答质量。解决思路有:

  • 混合RAG:通过多路召回方式综合向量索引与图索引的优势,提升整体问答质量。HybridRAG论文正是采用此方式,大致提升了若干个百分点的性能,但是上下文精度性能出现回退,主要是因为多路检索的知识无法对齐导致,这也是多系统混合检索的原生问题。
  • 融合索引:直接将向量索引集成到图数据库内部,提供知识图谱上的向量搜索能力,实现知识图谱子图甚至原始文档的相似性检索,避免多系统知识召回的数据不一致问题。例如Neo4jVector,另外TuGraph也即将在下个版本提供向量索引能力支持。
  • 社区摘要:基于图社区算法将知识图谱划分为若干社区子图,并提取社区子图摘要,总结性查询会根据社区摘要的内容进行回答,这也是微软GraphRAG中的关键设计。

社区摘要增强的Graph RAG链路

  • 文本块记忆:知识抽取阶段一次性完成图结构抽取和元素(点/边)总结,并引入文本块记忆能力,解决跨文本块的引用信息抽取问题。
  • 图社区摘要:使用图社区发现算法划分知识图谱,借助LLM提取社区摘要信息,并支持图社区摘要的相似性召回。
  • 多路搜索召回:不区分全局搜索与本地搜索,通过多路搜索同时提供查询相关的摘要与明细上下文。

借这篇Paper讲解下Graph RAG中的核心概念

文本块记忆:在真正的文本块知识抽取动作前,从向量存储里召回的相似文本块作为提示词上下文,结束后保存当前文本块到向量存储即可。

对文本块进行知识抽取时,会同时进行图结构的抽取与元素总结,以减少LLM的调用次数。

one-shot样例说明:

## 角色
你是一个知识图谱工程专家,非常擅长从文本中精确抽取知识图谱的实体(主体、客体)和关系,并能对实体和关系的含义做出恰当的总结性描述。

## 技能
### 技能 1: 实体抽取
--请按照如下步骤抽取实体--
1. 准确地识别文本中的实体信息,一般是名词、代词等。
2. 准确地识别实体的修饰性描述,一般作为定语对实体特征做补充。
3. 对相同概念的实体(同义词、别称、代指),请合并为单一简洁的实体名,并合并它们的描述信息。
4. 对合并后的实体描述信息做简洁、恰当、连贯的总结。

### 技能 2: 关系抽取
--请按照如下步骤抽取关系--
1. 准确地识别文本中实体之间的关联信息,一般是动词、代词等。
2. 准确地识别关系的修饰性描述,一般作为状语对关系特征做补充。
3. 对相同概念的关系(同义词、别称、代指),请合并为单一简洁的关系名,并合并它们的描述信息。
4. 对合并后的关系描述信息做简洁、恰当、连贯的总结。

### 技能 3: 关联上下文
- 关联上下文来自与当前待抽取文本相关的前置段落内容,可以为知识抽取提供信息补充。
- 合理利用提供的上下文信息,知识抽取过程中出现的内容引用可能来自关联上下文。
- 不要对关联上下文的内容做知识抽取,而仅作为关联信息参考。
- 关联上下文是可选信息,可能为空。

## 约束条件
- 如果文本已提供了图结构格式的数据,直接转换为输出格式返回,不要修改实体或ID名称。-尽可能多的生成文本中提及的实体和关系信息,但不要随意创造不存在的实体和关系。
- 确保以第三人称书写,从客观角度描述实体名称、关系名称,以及他们的总结性描述。
- 尽可能多地使用关联上下文中的信息丰富实体和关系的内容,这非常重要。
- 如果实体或关系的总结描述为空,不提供总结描述信息,不要生成无关的描述信息。
- 如果提供的描述信息相互矛盾,请解决矛盾并提供一个单一、连贯的描述。
- 实体和关系的名称或者描述文本出现#和:字符时,使用'_'字符替换,其他字符不要修改。
- 避免使用停用词和过于常见的词汇。

## 输出格式
Entities:
(实体名#实体总结)
...

Relationships:
(来源实体名#关系名#目标实体名#关系总结)
...

## 参考案例
--案例仅帮助你理解提示词的输入和输出格式,请不要在答案中使用它们。--
输入:

[上下文]:
Section 1:
菲尔・贾伯的大儿子叫雅各布・贾伯。
Section 2:
菲尔・贾伯的小儿子叫比尔・贾伯。

[文本]:
菲尔兹咖啡由菲尔・贾伯于1978年在加利福尼亚州伯克利创立。因其独特的混合咖啡而闻名,菲尔兹已扩展到美国多地。他的大儿子于2005年成为首席执行官,并带领公司实现了显著增长。

输出:

Entities:
(菲尔・贾伯#菲尔兹咖啡创始人)
(菲尔兹咖啡#加利福尼亚州伯克利创立的咖啡品牌)
(雅各布・贾伯#菲尔・贾伯的大儿子)
(美国多地#菲尔兹咖啡的扩展地区)

Relationships:
(菲尔・贾伯#创建#菲尔兹咖啡#1978年在加利福尼亚州伯克利创立)
(菲尔兹咖啡#位于#加利福尼亚州伯克利#菲尔兹咖啡的创立地点)
(菲尔・贾伯#拥有#雅各布・贾伯#菲尔・贾伯的大儿子)
(雅各布・贾伯#管理#菲尔兹咖啡#在2005年担任首席执行官)
(菲尔兹咖啡#扩展至#美国多地#菲尔兹咖啡的扩展范围)

----

请根据接下来[上下文]提供的信息,按照上述要求,抽取[文本]中的实体和关系数据。

[上下文]:
{history}

[文本]:
{text}

[结果]:

图社区摘要:

  • 社区发现:借助图数据库社区发现算法,对知识图谱进行社区划分,将图谱逻辑切分为多个独立的子图。常用的图社区算法有LPA、Louvain、Leiden等,其中Leiden算法可以计算社区分层,具备更高的灵活性(支持从不同层次洞察知识图谱),也是微软GraphRAG采用的算法。
  • 社区摘要:捞取图社区子图数据(包括点边及属性信息),一并提供给LLM做整体性总结。这一步的挑战是如何引导LLM尽可能保留关键的社区信息,以便全局检索时可以获取到更全面的社区摘要,除了在提示词内引导LLM理解图数据,还可以借助图算法(如PageRank等)标记图元素重要性,辅助LLM更好地理解社区主题。另一个挑战是社区子图的数据规模天然不可控且经常出现局部更新(如文档更新),这对LLM上下文窗口和推理性能有很大挑战,可以考虑流式取数+增量推理的方式进行优化。
  • 保存摘要:保存社区摘要的地方,这里称为社区元数据存储CommunityMetastore,提供社区摘要存储与检索能力,默认采用向量数据库作为存储底座。

提示词:

## 角色
你非常擅长知识图谱的信息总结,能根据给定的知识图谱中的实体和关系的名称以及描述信息,全面、恰当地对知识图谱子图信息做出总结性描述,并且不会丢失关键的信息。

## 技能
### 技能 1: 实体识别
- 准确地识别[Entities:]章节中的实体信息,包括实体名、实体描述信息。
- 实体信息的一般格式有:
(实体名)
(实体名:实体描述)
(实体名:实体属性表)

### 技能 2: 关系识别
- 准确地识别[Relationships:]章节中的关系信息,包括来源实体名、关系名、目标实体名、关系描述信息,实体名也可能是文档ID、目录ID、文本块ID。
- 关系信息的一般格式有:
(来源实体名)-[关系名]->(目标实体名)
(来源实体名)-[关系名:关系描述]->(目标实体名)
(来源实体名)-[关系名:关系属性表]->(目标实体名)

### 技能 3: 图结构理解
--请按照如下步骤理解图结构--
1. 正确地将关系信息中的来源实体名与实体信息关联。
2. 正确地将关系信息中的目标实体名与实体信息关联。
3. 根据提供的关系信息还原出图结构。

### 技能 4: 知识图谱总结
--请按照如下步骤总结知识图谱--
1. 确定知识图谱表达的主题或话题,突出关键实体和关系。
2. 使用准确、恰当、简洁的语言总结图结构表达的信息,不要生成与图结构中无关的信息。

## 约束条件
- 不要在答案中描述你的思考过程,直接给出用户问题的答案,不要生成无关信息。
- 确保以第三人称书写,从客观角度对知识图谱表达的信息进行总结性描述。
- 如果实体或关系的描述信息为空,对最终的总结信息没有贡献,不要生成无关信息。
- 如果提供的描述信息相互矛盾,请解决矛盾并提供一个单一、连贯的描述。
- 避免使用停用词和过于常见的词汇。

## 参考案例
--案例仅帮助你理解提示词的输入和输出格式,请不要在答案中使用它们。--
输入:

Entities:
(菲尔・贾伯#菲尔兹咖啡创始人)
(菲尔兹咖啡#加利福尼亚州伯克利创立的咖啡品牌)
(雅各布・贾伯#菲尔・贾伯的儿子)
(美国多地#菲尔兹咖啡的扩展地区)

Relationships:
(菲尔・贾伯#创建#菲尔兹咖啡#1978年在加利福尼亚州伯克利创立)
(菲尔兹咖啡#位于#加利福尼亚州伯克利#菲尔兹咖啡的创立地点)
(菲尔・贾伯#拥有#雅各布・贾伯#菲尔・贾伯的儿子)
(雅各布・贾伯#担任#首席执行官#在2005年成为菲尔兹咖啡的首席执行官)
(菲尔兹咖啡#扩展至#美国多地#菲尔兹咖啡的扩展范围)

输出:

菲尔兹咖啡是由菲尔・贾伯在1978年于加利福尼亚州伯克利创立的咖啡品牌。菲尔・贾伯的儿子雅各布・贾伯在2005年接任首席执行官,领导公司扩展到了美国多地,进一步巩固了菲尔兹咖啡作为加利福尼亚州伯克利创立的咖啡品牌的市场地位。

----

请根据接下来[知识图谱]提供的信息,按照上述要求,总结知识图谱表达的信息。

[知识图谱]:
{graph}

[总结]:

多路搜索召回:

  • 全局搜索查询:由于该Paper将图社区摘要直接保存在社区元数据存储,因此全局搜索策略被简化为社区元数据存储上的搜索操作,而非采用MapReduce这样的全量扫描加二次汇总的方式。这样大大降低了全局搜索的token开销和查询延迟,至于对搜索质量的影响可以通过优化全局搜索策略持续改进。
  • 本地搜索查询:本地搜索仍采用和朴素GraphRAG一样的方式,即通过关键词提取后,遍历相关知识图谱子图。这样仍可以保留未来对向量索引、全文索引、NL2GQL等能力的扩展性。
  • 搜索策略选择:整合全局搜索和本地搜索,而非使用分离的入口,以达到更好的使用体验。
  • 基于意图识别:借助LLM对查询意图进行理解,将查询分类为全局/本地/未知,基于分类结果进行路由。这里最大的挑战是当下LLM对查询意图的识别仍不够精确(当然也和上下文确实有很大关系),未来通过智能体结合记忆和反思能力或许可以做得更好,保守起见没有采用该方式。
  • 基于混合检索:既然不能做到很好的路由策略,不如简而化之,直接采用混合检索的策略,实现全局和本地的多路搜索召回。这里有个比较利好的前提是全局搜索并不会强依赖LLM服务(本地检索需要借助LLM实现关键词提取),最差情况下用户的查询会退化全局检索。

提示词:

## 角色
你非常擅长结合提示词模板提供的[上下文]信息与[知识图谱]信息,准确恰当地回答用户的问题,并保证不会输出与上下文和知识图谱无关的信息。

## 技能
### 技能 1: 上下文理解
- 准确地理解[上下文]提供的信息,上下文信息可能被拆分为多个章节。
- 上下文的每个章节内容都会以[Section]开始,并按需进行了编号。
- 上下文信息提供了与用户问题相关度最高的总结性描述,请合理使用它们。

### 技能 2: 知识图谱理解
- 准确地识别[知识图谱]中提供的[Entities:]章节中的实体信息和[Relationships:]章节中的关系信息,实体和关系信息的一般格式为:
  • 实体信息格式:
  • (实体名)
  • (实体名:实体描述)
  • (实体名:实体属性表)
  • 关系信息的格式:
  • (来源实体名)-[关系名]->(目标实体名)
  • (来源实体名)-[关系名:关系描述]->(目标实体名)
  • (来源实体名)-[关系名:关系属性表]->(目标实体名)
- 正确地将关系信息中的实体名/ID与实体信息关联,还原出图结构。
- 将图结构所表达的信息作为用户提问的明细上下文,辅助生成更好的答案。

## 约束条件
- 不要在答案中描述你的思考过程,直接给出用户问题的答案,不要生成无关信息。
- 若[知识图谱]没有提供信息,此时应根据[上下文]提供的信息回答问题。
- 确保以第三人称书写,从客观角度结合[上下文]和[知识图谱]表达的信息回答问题。
- 若提供的信息相互矛盾,请解决矛盾并提供一个单一、连贯的描述。
- 避免使用停用词和过于常见的词汇。

## 参考案例

[上下文]:
Section 1:
菲尔・贾伯的大儿子叫雅各布・贾伯。
Section 2:
菲尔・贾伯的小儿子叫比尔・贾伯。
[知识图谱]:
Entities:
(菲尔・贾伯#菲尔兹咖啡创始人)
(菲尔兹咖啡#加利福尼亚州伯克利创立的咖啡品牌)
(雅各布・贾伯#菲尔・贾伯的儿子)
(美国多地#菲尔兹咖啡的扩展地区)

Relationships:
(菲尔・贾伯#创建#菲尔兹咖啡#1978年在加利福尼亚州伯克利创立)
(菲尔兹咖啡#位于#加利福尼亚州伯克利#菲尔兹咖啡的创立地点)
(菲尔・贾伯#拥有#雅各布・贾伯#菲尔・贾伯的儿子)
(雅各布・贾伯#担任#首席执行官#在2005年成为菲尔兹咖啡的首席执行官)
(菲尔兹咖啡#扩展至#美国多地#菲尔兹咖啡的扩展范围)

----

接下来的[上下文]和[知识图谱]的信息,可以帮助你回答更好地用户的问题。

[上下文]:
{context}

[知识图谱]:
{graph}

(16)Kotaemon【乐高】20240515

项目:https://github.com/Cinnamon/kotaemon/tree/main

总结:一套现成的问答积木套装,既能直接拿来用,又能自由拆装改造。用户要用就用,开发要改就改,随心所欲不失章法。

架构:一个开源的干净且可定制的RAG UI,用于构建和定制自己的文档问答系统。既考虑了最终用户的需求,也考虑了开发者的需求。

(17)FlashRAG【百宝箱】20240522

论文:FlashRAG: A Modular Toolkit for Efficient Retrieval-Augmented Generation Research

总结:把各路RAG神器打包成一个工具包,让研究者像挑选积木一样,随心所欲地搭建自己的检索模型。

架构:FlashRAG是一个高效且模块化的开源工具包,旨在帮助研究人员在统一框架内重现现有的RAG方法并开发他们自己的RAG算法。我们的工具包实现了12种先进的RAG方法,并收集和整理了32个基准数据集。

基准数据集总结:

任务数据集名称知识来源训练集大小验证集大小测试集大小
QANQWiki79,1688,7573,610
QATriviaQAWiki & Web78,7858,83711,313
多跳QAHotpotQAWiki90,4477,405/
多跳QA2WikiMultiHopQAWiki15,00012,576/
长问题QAELI5Reddit272,6341,507/
多选QAMMLU-99,8421,53114,042

(18)GRAG【侦探】20240526

论文:GRAG: Graph Retrieval-Augmented Generation

总结:不满足于表面线索,深入挖掘文本之间的关联网络,像破案一样追踪每条信息背后的真相,让答案更准确。

架构:传统RAG模型在处理复杂的图结构数据时忽视了文本之间的联系和数据库的拓扑信息,从而导致了性能瓶颈。GRAG通过强调子图结构的重要性,显著提升了检索和生成过程的性能并降低幻觉。

这里的模型细致解释一下:

GRAG模型由四个主要阶段组成,即k阶子图索引、图检索、软剪枝和生成:

  1. k阶子图索引:对图中的每个节点及其周围的k阶邻居进行编码,并存储其图嵌入。

  2. 图检索:使用预训练语言模型(PLM)将查询转换为向量,并检索与查询最相关的前N个子图。

  3. 软剪枝:在检索到的子图结构,对与查询不相关的节点和边进行软剪枝,以减少其对最终生成的影响。

  4. 生成:整合剪枝后的文本子图和原始查询,通过GNN聚合子图内的信息。最后,利用文本信息(text tokens)和子图信息(graph token)控制生成。

具体来说,GRAG模型采用了一种双重提示策略,即硬提示和软提示。如图2(d)所示,硬提示将检索到的子图转换为层次化的文本描述,保留拓扑信息和语义细节。如图2(c)所示,检索到的子图在剪枝过后通过GNN聚合文本和拓扑信息生成图token,随后用于引导大语言模型的生成过程。

(19)Camel-GraphRAG【左右开弓】20240527

项目:https://github.com/camel-ai/camel【这个不错,可以看看】

总结:一只眼睛用Mistral扫描文本提取情报,另只眼睛用Neo4j编织关系网。查找时左右眼配合,既能找相似的,又能顺着线索图追踪,让搜索更全面精准。

架构:Camel-GraphRAG依托Mistral模型提供支持,从给定的内容中提取知识并构建知识结构,然后将这些信息存储在 Neo4j图数据库中。随后采用一种混合方法,将向量检索与知识图谱检索相结合,来查询和探索所存储的知识。

(20)G-RAG【串门神器】20240528

论文:Don’t Forget to Connect! Improving RAG with Graph-based Reranking

总结:不再是单打独斗地查资料,而是给每个知识点都建立人际关系网。像个社交达人,不仅知道每个朋友的特长,还清楚谁和谁是酒肉朋友,找答案时直接顺藤摸瓜。

架构:RAG 在处理文档与问题上下文的关系时仍存在挑战,当文档与问题的关联性不明显或仅包含部分信息时,模型可能无法有效利用这些文档。此外,如何合理推断文档之间的关联也是一个重要问题。G-RAG实现了RAG检索器和阅读器之间基于图神经网络(GNN)的重排器。该方法结合了文档之间的连接信息和语义信息(通过抽象语义表示图),为 RAG 提供了基于上下文的排序器。

1.文档图的构建

  • 对每个问题-文档对,将问题和文档文本拼接后使用 AMR BART 解析生成AMR图。
  • 基于这些 AMR图 构建无向文档图,其中节点表示文档,边表示文档之间的共同概念。
  • 通过消息传递机制更新边特征。

2.节点特征的生成

  • 使用预训练语言模型对所有检索到的文档进行编码,得到初始节点表示。
  • 通过识别从“question”节点到其他节点的最短单源路径(SSSP),提取路径上的节点概念,构建AMR信息序列,并将其与文档文本拼接后再次编码,得到最终的节点特征。

3.边特征的生成

  • 计算文档之间的共同节点数和共同边数,作为边的特征,并进行归一化处理。

4.图神经网络的表示更新

  • 基于初始节点和边特征,使用图神经网络进行多轮迭代更新,通过聚合邻居节点的特征来更新每个节点的表示。

5.重排序得分和训练损失

  • 使用余弦相似度计算每个文档的重排序得分,并使用交叉熵损失函数和成对排名损失函数进行训练。成对排名损失函数能够更好地处理排名分数的平局情况。

(21)LLM-Graph-Builder【搬运工】【这个就是之前让大家学习的】

项目:https://github.com/neo4j-labs/llm-graph-builder

总结:给混乱的文字安个明白的家。不是简单地搬运,而是像个强迫症患者,把每个知识点都贴上标签,画上关系线,最后在Neo4j的数据库里盖起一座井井有序的知识大厦。

架构:Neo4j开源的基于LLM提取知识图谱的生成器,可以把非结构化数据转换成Neo4j中的知识图谱。利用大模型从非结构化数据中提取节点、关系及其属性。

LLM Graph Builder可以把非结构化数据,PDF、文档、文本、YouTube视频、网页等转换成存储在 Neo4j 中的知识图谱。利用大模型OpenAI、Gemini 、Llama3、Diffbot、Claude、Qwen等从非结构化数据中提取节点、关系及其属性(可自定义要提取的关系、节点)。主要特征:

(1) 知识图谱创建:使用LLMs将非结构化数据转换为结构化知识图谱。

(2) 提供Schema:提供您自己的自定义Schema或使用已有的现有Schema来生成graph

(3) 查看图表:在 Bloom 中一次查看特定源或多个源的graph。

(4) AI聊天:对话即可查询与 Neo4j 数据库中的数据进行交互,还可提供来源的元数据(支持使用不同 RAG 方法(GraphRAG、Vector、Text2Cypher)进行知识问答)。

在线体验:https://llm-graph-builder.neo4jlabs.com/

(22)MRAG【八爪鱼】20240607

论文:Multi-Head RAG: Solving Multi-Aspect Problems with LLMs

总结:不是只长一个脑袋死磕问题,而是像章鱼一样长出多个触角,每个触角负责抓取一个角度。简单说,这就是AI版的"一心多用"。

架构:现有的 RAG 解决方案并未专注于可能需要获取内容差异显著的多个文档的查询。此类查询经常出现,但具有挑战性,因为这些文档的嵌入在嵌入空间中可能相距较远,使得难以全部检索到它们。本文介绍了多头 RAG(MRAG),这是一种新颖的方案,旨在通过一个简单而强大的想法来填补这一空白:利用 Transformer 多头注意力层的激活,而非解码器层,作为获取多方面文档的键。其驱动动机是不同的注意力头可以学习捕获不同的数据方面。利用相应的激活会产生代表数据项和查询各个层面的嵌入,从而提高复杂查询的检索准确性。

(23)PlanRAG【战略家】20240618

论文:PlanRAG: A Plan-then-Retrieval Augmented Generation for Generative Large Language Models as Decision Makers

总结:先制定完整作战计划,再根据规则和数据分析局势,最后做出最佳战术决策。

架构:PlanRAG研究如何利用大型语言模型解决复杂数据分析决策问题的方案,通过定义决策问答(Decision QA)任务,即根据决策问题Q、业务规则R和数据库D,确定最佳决策d。PlanRAG首先生成决策计划,然后检索器生成数据分析的查询。

(24)FoRAG【作家】20240619

论文:FoRAG: Factuality-optimized Retrieval Augmented Generation for Web-enhanced Long-form Question Answering

总结:先列写作大纲构思文章框架,再逐段扩充完善内容。同时还配备了一个"编辑",通过仔细的事实核查和修改建议,帮助完善每个细节,确保作品的质量。

架构:FoRAG提出了一种新颖的大纲增强生成器,在第一阶段生成器使用大纲模板,根据用户查询和上下文草拟答案大纲,第二阶段基于生成的大纲扩展每个观点,构建最终答案。同时提出一种基于精心设计的双精细粒度RLHF框架的事实性优化方法,通过在事实性评估和奖励建模两个核心步骤中引入细粒度设计,提供了更密集的奖励信号。

这里着重讲解一下 事实性优化方法:

  1. 直接应用RLHF的困难:直接将传统的基于人类反馈的强化学习(RLHF)应用于事实性优化所面临的两个主要困难:人工标注事实性标签的成本高昂,以及整体性奖励(holistic reward)提供的稀疏训练信号,这在长答案中尤为突出。
  2. 双细粒度RLHF框架:为了克服这些困难,提出了一个双细粒度的RLHF框架。该框架通过在事实性评估和奖励建模两个核心步骤中引入细粒度设计,提供了更密集的奖励信号。
  3. 细粒度评估:三种评估粒度:
    • 整体性:将整个答案作为一个单元进行评估。
    • 句子级别:将答案分割成句子,并分别评估每个句子。
    • 子声明级别:进一步将每个句子分解为多个子声明,并分别评估每个子声明。
  4. 细粒度奖励建模:提出了两种奖励建模粒度:
    • 序列级别:为每个序列学习单一的奖励,反映相应序列的事实性。
    • 标记级别:为序列中的每个标记学习奖励,通过聚合所有标记级别的奖励来计算序列的奖励。
  5. PPO优化:采用近端策略优化(PPO)方法来优化生成模型,通过最大化训练好的奖励模型提供的奖励。

通过广泛的实验,验证了所提出的事实性优化RAG(FoRAG)方法在英文和中文基准测试中的优越性。特别是,当将该方法应用于Llama2-7B-chat时,得到的模型FoRAG-L-7B在连贯性、有用性和事实性这三个常用指标上超过了WebGPT-175B,而FoRAG-L-7B的参数数量仅为WebGPT-175B的1/24。

Tips:Paper指标比较过程中,常常会采用雷氏比较法。即我比你好的,才和你比。以己之长打对方之短,以己之有打对方之无;用自己的长处和对手的短处去比较。后期科研实战会详细介绍。

(25)Multi-Meta-RAG【元筛选器】20240617

论文:Multi-Meta-RAG: Improving RAG for Multi-Hop Queries using Database Filtering with LLM-Extracted Metadata

总结:像个经验丰富的资料管理员,通过多重筛选机制,从海量信息中精准定位最相关的内容。它不只看表面,还会深入分析文档的"身份标签"(元数据),确保找到的每份资料都真正对题。

架构:Multi-Meta-RAG使用数据库过滤和LLM提取的元数据来改进RAG从各种来源中选择与问题相关的相关文档。

(26)W-RAG【进化搜索】20240815

论文:W-RAG: Weakly Supervised Dense Retrieval in RAG for Open-domain Question Answering

总结:像个善于自我进化的搜索引擎,通过大模型对文章段落的评分来学习什么是好答案,逐步提升自己找到关键信息的能力。

架构:开放域问答中的弱监督密集检索技术,利用大型语言模型的排序能力为训练密集检索器创建弱标注数据。通过评估大型语言模型基于问题和每个段落生成正确答案的概率,对通过 BM25 检索到的前 K 个段落进行重新排序。排名最高的段落随后被用作密集检索的正训练示例。

(27)Meta-Knowledge-RAG【学者】20240816

论文:Meta Knowledge for Retrieval Augmented Large Language Models

总结:像个学术界的资深研究员,不仅收集资料,还会主动思考问题,为每份文档做批注和总结,甚至预先设想可能的问题。它会把相关的知识点串联起来,形成知识网络,让查询变得更有深度和广度,就像有一个学者在帮你做研究综述。

架构:Meta-Knowledge-RAG(MK Summary)引入了一种新颖的以数据为中心的 RAG 工作流程,将传统的 “检索-读取” 系统转变为更先进的 “准备-重写-检索-读取” 框架,以实现对知识库的更高领域专家级理解。我们的方法依赖于为每个文档生成元数据和合成的问题与答案以及为基于元数据的文档集群引入元知识摘要的新概念。所提出的创新实现了个性化的用户查询增强和跨知识库的深度信息检索。

(28)TC-RAG【记忆术士】20240817

论文:TC-RAG: Turing-Complete RAG’s Case study on Medical LLM Systems

总结:给LLM装了个带自动清理功能的大脑。就像我们解题,会把重要步骤写在草稿纸上,做完就划掉。它不是死记硬背,该记的记住,该忘的及时清空,像个会收拾房间的学霸。

架构:通过引入图灵完备的系统来管理状态变量,从而实现更高效、准确的知识检索。通过利用具有自适应检索、推理和规划能力的记忆堆栈系统,TC-RAG不仅确保了检索过程的受控停止,还通过Push和Pop操作减轻了错误知识的积累。

TC-RAG利用基于栈的记忆系统以及对应的状态变量来实现对整个RAG框架的状态管理与终止判定,让模型能够自适应地进行检索以及在合适的时刻输出最终答案。

  1. 在一开始的时候,大模型将用户Query压栈,接下来大模型将不断的执行所定义的复合操作(Composed Action Set),例如:思考(push),反思(pop),工具执行(push),总结(pop->push)等。在工具执行的过程中,大模型被允许使用多源数据(图谱、文档、网页百科等)。
  2. 在大模型执行到Conclusion/Thought时,系统会不断更新它的状态变量(状态变量的计算方法在下文);当大模型执行到有Pop的动作时,会将状态变量重置为上一个Thought的值,以确保系统的完备性。
  3. 最后在大模型输出Conclusion且状态变量小于阈值时,输出最终答案,否则大模型的结论行为会被视为思考行为处理,并继续进行下一步推理。

为了解决自适应检索中的停机问题,我们在系统中引入了状态变量来监测系统状态。只有当状态变量满足终止条件时,整个系统才会停机。在实践中,TC-RAG分别尝试了条件困惑度和不确定性这两种不同的状态变量作为量化系统当前状态的指标。

(1) 条件困惑度通过计算大模型在用户提问内容的基础上,生成栈顶输出内容时的困惑度而获得:

(2)不确定性则是通过计算输出栈顶输出信息的熵值所得到的:

当系统状态值较低或不确定性较低时,表明此时大模型对于最终的结果已经有了比较高的信心。

整个方法的伪代码如下:

如果将ReACT的执行过程视作栈的话,就可以发现这是一个单向的栈(只有push,没有pop)。先目前的Reflexion工作,虽然纳入了反思过程,但其上一次的错误思考过程还是被纳入到栈中了。因此,大量的错误知识被累计,token资源被浪费,容易导致资源lost in middle问题。除此之外,ReACT等方法没有引入系统变量监测系统,因此该类模型往往都是黑盒的,即仅仅依靠大模型自己来决定是否结束检索和思考。

这篇文章还做了一个可视化对比实验:

基于ReACT的方法在处理无关噪声的积累时存在困难,这导致了系统的过度自信和错误的结论。例如“仅仅因为单位不同”的错误,ReACT就得到了错误的判断。相比之下,TC-RAG能够有效管理其内存,并利用总结和回溯操作修剪错误的检索结果,从而得出更加简洁和准确的结论。这凸显了TC-RAG在处理复杂任务时的优势。此外,作者也发现基于ReACT的方法由于缺乏状态管理,往往会在系统状态值较高时过早确定答案。而TC-RAG能够动态地监控RAG过程,确保系统状态值符合终止条件,这进一步说明了构建系统状态的重要性。

这篇是北大计算机学院的文章,思路很不错,值得借鉴。

动机:在真实医学场景中,是否检索/怎样检索/如何规划检索/如何处理检索过程中的瑕疵 是非常重要的四个难点。

(1)是否检索:使用检索后由于大量的无关噪声被检索到,因此模型的回答反而被误导了。这时候是不需要检索的!

(2)怎样准确检索:在真实场景下,一个懂医学的医生查阅资料的过程和普通人问诊是完全不一样的, 不会一股脑的将全部知识点拿去检索。

(3)如何规划检索: 在真实场景下,一个懂医学的医生查阅资料的过程是有规划的,并且能够灵活的使用多种医学工具。

(4)如何处理检索过程中的瑕疵:在检索过程中,检索到的错误知识(例如过时知识)或任务无关的噪声知识是很常见的,然而医生大多数时候是能够根据自己的认知来纠正错误重新检索的。

(29)iText2KG【建筑师】20240905【这个用于学习LLM向知识图谱转化】

论文:iText2KG: Incremental Knowledge Graphs Construction Using Large Language Models

项目:https://github.com/AuvaLab/itext2kg

总结:像个有条理的工程师,通过分步骤提炼、提取和整合信息,逐步将零散文档转化为系统的知识网络,而且不需要事先准备详细的建筑图纸,可以根据需要灵活地扩建和完善。

架构:iText2KG(增量式知识图谱构建)利用大型语言模型 (LLM) 从原始文档中构建知识图谱,并通过四个模块(文档提炼器、增量实体提取器、增量关系提取器和图谱集成器)实现增量式知识图谱构建,无需事先定义本体或进行大量的监督训练。

(30)GraphInsight【图谱解读】20240905

论文:GraphInsight: Unlocking Insights in Large Language Models for Graph Structure Understanding

总结:像个擅长信息图表分析的专家,知道把重要信息放在最显眼的位置,同时在需要时查阅参考资料来补充细节,并能step by step地推理复杂图表,让AI既能把握全局又不遗漏细节。

架构:GraphInsight旨在提升LLMs对宏观和微观层面图形信息理解的新框架。GraphInsight基于两大关键策略:1)将关键图形信息置于LLMs记忆性能较强的位置;

2)借鉴检索增强生成(RAG)的思想,对记忆性能较弱的区域引入轻量级外部知识库。此外,GraphInsight探索将这两种策略整合到LLM代理过程中,以应对需要多步推理的复合图任务。

动机:

(1)图结构信息主要通过自然语言描述传递【结构格式转换(如邻接矩阵和列表)和顺序格式转换(如逐边描述)】,描述长度随图规模增加而变长,挑战了LLMs的长序列理解能力;

(2)LLMs在不同序列位置的记忆性能不均匀,存在“位置偏差”现象,影响了其对关键节点或边的记忆。

方案:

(1)针对宏图理解任务,提出了一种根据局部图结构的重要性重新组织图描述序列的方法。

  • 计算图中每个节点的PageRank分数,以衡量其重要性。
  • 将图分解为一系列互不相交的子图描述,每个子图描述由其中心节点及其直接相连的邻居组成。
  • 根据PageRank分数对子图描述进行排序,并将最重要的子图描述放置在LLMs的强记忆区域(即序列的头部和尾部)。
  • 公式如下:
  • 其中,表示KL散度,表示序列位置p的重要性分布,表示LLMs的内在理解分布。

(2)针对微观层面的图形理解任务,提出了一种构建轻量级外部知识库的方法,以补充LLMs在弱记忆区域的记忆不足。

  • 对于弱记忆区域中的节点和边,提取其信息并存储在GraphRAG知识库中。
  • 当需要进行微图理解任务时,从知识库中检索相关信息,并将其与输入的图描述序列结合,形成增强提示输入LLMs进行推理。
  • 公式如下:
  • 其中,分别表示节点和边的增强信息集。

(31)FlexRAG【压缩专家】20240924

论文:Lighter And Better: Towards Flexible Context Adaptation For Retrieval Augmented Generation

总结:把长篇大论浓缩成精华摘要,而且压缩比例可以根据需要灵活调整,既不丢失关键信息,又能节省存储和处理成本。就像把一本厚书精炼成一份简明扼要的读书笔记。

架构:FlexRAG检索到的上下文在被LLMs编码之前被压缩为紧凑的嵌入。同时这些压缩后的嵌入经过优化以提升下游RAG的性能。FlexRAG的一个关键特性是其灵活性,它能够有效支持不同的压缩比,并选择性地保留重要上下文。得益于这些技术设计,FlexRAG在显著降低运行成本的同时实现了卓越的生成质量。在各种问答数据集上进行的全面实验验证了我们的方法是RAG系统的一种具有成本效益且灵活的解决方案。

动机:现有的RAG系统在处理长篇幅的检索上下文时,需要大量的计算资源进行编码,导致运行成本高昂。

一个是上下文压缩(Context Compression):将 token 嵌入(即文本中每个单词的向量表示)压缩成更紧凑的摘要向量(summary vectors)。这样做的目的是减少上下文的数据量,同时尽量保留重要的信息。通过压缩,可以减少模型处理上下文时的计算负担,提高效率。

一个是上下文过滤(Context Filtering):从输入提示中筛选出重要的 token 嵌入。这意味着只有与任务最相关的信息被保留,而其他不太重要的信息则被过滤掉。过滤有助于去除噪声和不相关的信息,使得模型能够更专注于对任务有用的信息。例如:互信息方案。

一个是提示微调(Prompt Tuning):通过学习一个软提示(soft-prompt)来改善下游任务的性能。软提示是一种可训练的提示,可以帮助模型更好地理解和执行特定的任务。通过调整提示,模型可以更好地适应特定的任务,提高任务的准确性和效果。

(32)CoTKR【图谱翻译】20240929

论文:CoTKR: Chain-of-Thought Enhanced Knowledge Rewriting for Complex Knowledge Graph Question Answering

总结:像个耐心的老师,先理解知识的来龙去脉,再一步步讲解,不是简单复述而是深入浅出地转述。同时通过不断收集"学生"的反馈来改进自己的讲解方式,让知识传递更加清晰有效。

架构:CoTKR(Chain-of-Thought Enhanced Knowledge Rewriting)方法交替生成推理路径和相应知识,从而克服了单步知识改写的限制。此外,为了弥合知识改写器和问答模型之间的偏好差异,我们提出了一种训练策略,即从问答反馈中对齐偏好通过利用QA模型的反馈进一步优化知识改写器。

(33)Open-RAG【智囊团】20241002

论文:Open-RAG: Enhanced Retrieval-Augmented Reasoning with Open-Source Large Language Models

总结:把庞大的语言模型分解成专家小组,让它们既能独立思考又能协同工作,还特别会分辨真假信息,关键时刻知道该不该查资料,像个经验丰富的智囊团。

架构:Open-RAG通过开源大语言模型提高RAG中的推理能力,将任意密集的大语言模型转换为参数高效的稀疏专家混合(MoE)模型,该模型能够处理复杂的推理任务,包括单跳和多跳查询。OPEN-RAG独特地训练模型以应对那些看似相关但具有误导性的挑战性干扰项。

这里学习一下它的推理流程即可:它学习生成检索/不检索标记,对比相关和不相关上下文,并将答案归类为部分支持、完全支持或不支持。然后在推理时,给定一个(多跳)用户查询,首先强制模型在输入条件为不检索的情况下生成答案,并根据模型的置信度动态决定是否需要检索。【这个思路挺棒的,先看你做的怎么样,然后再给出规划。】

  • 检索/不检索:模型学会生成检索/不检索的标记,以指示是否需要检索来回答查询。
  • 相关性评估:对于检索到的内容,模型生成相关性标记,指示内容是否与查询相关。
  • 生成答案:根据预测的相关性、支持度和效用标记,对所有可能的答案进行排序,生成最终答案。

单跳和多跳查询它是这样做的:OPEN-RAG将任意密集LLM转换为参数高效的稀疏专家混合(MoE)模型,能够处理包括单跳和多跳查询在内的复杂推理任务。路由器R从头开始训练。FFN层保持冻结状态,并由基于并行适配器的专家E进行调整。其他层被复制。

(34)TableRAG【Excel专家】20241007

论文:TableRAG: Million-Token Table Understanding with Language Models

总结:不只简单地查看表格数据,而是懂得从表头和单元格两个维度去理解和检索数据,就像熟练使用数据透视表一样,能快速定位和提取所需的关键信息。

架构:TableRAG专为表格理解设计了检索增强生成框架,通过查询扩展结合Schema和单元格检索,能够在提供信息给语言模型之前精准定位关键数据,从而实现更高效的数据编码和精确检索,大幅缩短提示长度并减少信息丢失。

(35)LightRAG【蜘蛛侠】20241008

论文:LightRAG: Simple and Fast Retrieval-Augmented Generation

总结:在知识的网中灵活穿梭,既能抓住知识点之间的丝,又能借网顺藤摸瓜。像个长了千里眼的图书管理员,不仅知道每本书在哪,还知道哪些书该一起看。

项目:https://github.com/HKUDS/LightRAG【我在代码中,借鉴了KG统一调用的设计】

架构:该框架将图结构融入文本索引和检索过程中。这一创新框架采用了一个双层检索系统,从低级和高级知识发现中增强全面的信息检索。此外,将图结构与向量表示相结合,便于高效检索相关实体及其关系,显著提高了响应时间,同时保持了上下文相关性。这一能力通过增量更新算法得到了进一步增强,该算法确保了新数据的及时整合,使系统能够在快速变化的数据环境中保持有效性和响应性。

具体讲解一下它的整体流程,原理还是很简单的:

图基文本索引(Graph-Based Text Indexing)

步骤1:实体和关系提取

使用大型语言模型(LLM)对文档进行分析,识别出文本中的实体(如人名、地点、组织等)和它们之间的关系(如“属于”、“位于”等)。

将文档分割成多个小块(chunks),以提高处理效率。

步骤2:LLM Profiling生成键值对

对于每个识别出的实体和关系,使用LLM生成一个键值对(key-value pair),其中键(key)是一个或多个关键词,值(value)是与实体或关系相关的文本段落。

步骤3:去重优化

通过去重(Deduplication)过程,合并来自不同文档块中的相同实体和关系,减少图操作的开销。

双层检索范式(Dual-Level Retrieval Paradigm)

步骤4:生成查询关键词

对于给定的用户查询,提取局部(low-level)和全局(high-level)关键词。【这么做的原因是,分类低级关键词和高级关键词,便于指导知识图谱双级检索】

步骤5:关键词匹配

使用向量数据库匹配局部关键词与候选实体,以及全局关键词与全局关键词关联的关系。【它这里代码引入了namespace概念,每次查询都会基于这个进行判断】

步骤6:整合高阶相关性

为了增强查询的相关性,LightRAG会收集检索到的图元素的邻接节点,这涉及到检索节点和边的一跳邻接节点。

检索增强答案生成

步骤7:使用检索到的信息

利用检索到的信息(包括实体和关系的值),通过通用的LLM生成答案。

步骤8:上下文整合与答案生成

将用户查询与多源文本合并,LLM生成符合查询意图的信息性答案。

增量知识库的快速适应

步骤9:增量更新知识库

当有新文档加入时,使用与之前相同的图基索引步骤处理新文档,生成新的知识图谱数据。

将新知识图谱数据与原有知识图谱合并,实现新数据的无缝整合。

步骤10:减少计算开销

避免重建整个索引图,减少计算开销,实现新数据的快速整合。

下面是Paper中附带的一个示例:

(36)AstuteRAG【明智判官】20241009

论文:Astute RAG: Overcoming Imperfect Retrieval Augmentation and Knowledge Conflicts for Large Language Models

总结:对外部信息保持警惕,不轻信检索结果,善用自身积累的知识,甄别信息真伪,像资深法官一样,权衡多方证据定论。

架构:通过适应性地从LLMs内部知识中提取信息,结合外部检索结果,并根据信息的可靠性来最终确定答案,从而提高系统的鲁棒性和可信度。

(37)TurboRAG【速记高手】20241010

论文:TurboRAG: Accelerating Retrieval-Augmented Generation with Precomputed KV Caches for Chunked Text

总结:提前把功课做好,把答案都记在小本本里。像个考前突击的学霸,不是临场抱佛脚,而是把常考题提前整理成错题本。需要的时候直接翻出来用,省得每次都要现场推导一遍。

架构:TurboRAG通过离线预计算和存储文档的KV缓存来优化RAG系统的推理范式。与传统方法不同,TurboRAG在每次推理时不再计算这些KV缓存,而是检索预先计算的缓存以进行高效的预填充,从而消除了重复在线计算的需要。这种方法显著减少了计算开销,加快了响应时间,同时保持了准确性。

(38)VisRAG【火眼金睛】20241014

论文:VisRAG: Vision-based Retrieval-augmented Generation on Multi-modality Documents

总结:终于悟出文字不过是图像的一种特殊表现形式。像个开了天眼的阅读者,不再执着于逐字解析,而是直接"看"透全局。用照相机代替了OCR,懂得了"一图胜千言"的精髓。

架构:通过构建基于视觉-语言模型 (VLM) 的RAG流程,直接将文档作为图像嵌入并检索,从而增强生成效果。相比传统文本RAG,VisRAG避免了解析过程中的信息损失,更全面地保留了原始文档的信息。实验显示,VisRAG在检索和生成阶段均超越传统RAG,端到端性能提升达25-39%。VisRAG不仅有效利用训练数据,还展现出强大的泛化能力,成为多模态文档RAG的理想选择。

清华佬发布的,思路很新奇,重点流程有两个:

(1)检索:借鉴了文本密集检索器的 Bi-Encoder 架构,将查询和文档(直接使用文档图像,而非依赖提取的文本内容)映射到嵌入空间。

(2)生成:考虑到检索出的页面往往都不止一页,而大多数多模态大模型只能接受单张图片,所以提出了两种方案来实现:

  • 页面合并(Page Concatenation):将检索出的页面合并为一张图片,在VisRAG中,作者主要尝试的是水平合并。
  • 加权筛选(Weighted Selection):让VLM为top-k中的每个页面生成一个答案,并选择置信度最高的答案作为最终答案。

(39)RuleRAG【循规蹈矩】20241015

论文:RuleRAG: Rule-guided retrieval-augmented generation with language models for question answering

总结:用规矩来教AI做事,就像带新人入职,先给本员工手册。不是漫无目的地学,而是像个严格的老师,先把规矩和范例都讲明白,然后再让学生自己动手。做多了,这些规矩就变成了肌肉记忆,下次遇到类似问题自然知道怎么处理。

架构:RuleRAG提出了基于语言模型的规则引导检索增强生成方法,该方法明确引入符号规则作为上下文学习(RuleRAG - ICL)的示例,以引导检索器按照规则方向检索逻辑相关的文档,并统一引导生成器在同一组规则的指导下生成有依据的答案。此外,查询和规则的组合可进一步用作有监督的微调数据,用以更新检索器和生成器(RuleRAG - FT),从而实现更好的基于规则的指令遵循能力,进而检索到更具支持性的结果并生成更可接受的答案。

这里重点讲述一下规则库R:

规则库R:包含了用于指导检索和生成的规则,这些规则以自然语言形式表达,如“[实体1, r1, 实体2] 导致 [实体1, r2, 实体2]”;

如何获取规则:【其实就是,两个人的关系会随着时间的推进发生变化。】

  • 在静态场景中,两个实体之间可以同时建立几种不同的关系。
  • 在时间场景中,两个实体可以在不同的时间戳下多次交互。

因此,如果关系r1(规则主体)在逻辑上可以解释实体之间关系r2(规则头部)的出现,将其相关性表示为自然语言形式的规则:[实体1, r1, 实体2] 导致 [实体1, r2, 实体2]。

如何推理:

从图中可以看到:

  • 当接收到一个查询q,分析该查询以识别其中包含的关系,从预定义的规则集合R中选择 以识别出的关系作为头部(即规则结论部分)的规则,形成一个子集Rq。这些规则将作为指导查询q的搜索方向。
  • 对于每个选定的规则r∈Rq,查询q和规则r被组合成一个新的查询字符串或者向量,用于新的查询。
  • 使用这个新的查询对语料库D检索。
  • 为了避免不同规则之间可能产生的冲突,系统单独处理每个查询-规则对(q, r),独立地执行检索。
  • 对于每个(q, r)对,系统根据相关性得分挑选top-k个文档,记作Drq。
  • 所有由不同规则r产生的Drq集合被合并,形成查询q的最终检索结果Dq。
  • 利用查询q、相应的规则Rq以及最终检索到的文档Dq来推导出回答a。

两个微调:

一个是规则引导的检索器微调(RGFT-retriever),微调过程中,检索器学习区分正例(与查询和规则相关的文档)和负例(不相关的文档)。常通过对比学习来实现,其中检索器的损失函数鼓励模型更倾向于正例;

另一个是规则引导的生成器微调(RGFT-generator),使用检索到的文档、规则和正确答案来训练生成器;

对应的提示词:

(40)Self-RAG【反思者】20241023

论文:Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection

总结:在回答问题时,不仅会查阅资料,还会不断思考和检查自己的答案是否准确完整。通过"边说边想"的方式,像一个谨慎的学者一样,确保每个观点都有可靠的依据支持。

架构:Self-RAG通过检索和自我反思来提升语言模型的质量和准确性。框架训练一个单一的任意语言模型,该模型能按需自适应地检索文段,并使用被称为反思标记的特殊标记来对检索到的文段及其自身生成的内容进行生成和反思。生成反思标记使得语言模型在推理阶段具备可控性,使其能够根据不同的任务要求调整自身行为。

上面这个图属于对比图,一般放到Paper第一张图,未来我们也会用到。核心技巧:求同存异。

左边传统RAG:先利用query检索召回相关文档,然后将这些文档结合prompt+LLM进行生成回答;

Self-RAG

第一步:按需检索,当LLM生成时需要检索内容支撑时,就触发[Retrieve]token,表示接下来要用检索内容;

第二步:利用prompt+检索内容进行并行生成,并在生成过程显示出对检索内容的相关度判断的token([Relevant],[Supported],[Irrelevent],[Partailly]);

第三步:对上步生成的内容进行评价筛选,选择一个最佳片段作为输出;重复上面的步骤,直至回答完;

对比RAG,self-RAG框架的不同之处就是:在生成过程中利用特殊的token达到更精细的控制——要不要检索、检索内容相关性怎样、利用检索内容生成的质量怎样。达到这些目的,就会让RAG+LLM生成的内容在质量、事实性、验证性上得到提升;

借这篇文章,再说明一下,我们引入新的变量、指标后,都需要介绍其含义,常见的形式:表格。

[Retrieve]类型为检索标签,取值为yes时候表示生成需要到检索;[IsREL]、[IsSUP]、[IsUSE]这三类为评价类标签,分别代表相关性、支持程度、有用性三个方面。

(41)Plan×RAG【项目经理】20241028

论文:Plan×RAG: Planning-guided Retrieval Augmented Generation

总结:先规划后行动,把大任务分解成小任务,安排多个"专家"并行工作。每个专家负责自己的领域,最后由项目经理统筹汇总结果。这种方式不仅更快、更准,还能清楚交代每个结论的来源。

架构:Plan×RAG是一个新颖的框架,它将现有RAG框架的 “检索 - 推理” 范式扩充为 “计划 - 检索”范式。Plan×RAG 将推理计划制定为有向无环图(DAG),将查询分解为相互关联的原子子查询。答案生成遵循 DAG 结构,通过并行检索和生成显著提高效率。虽然最先进的RAG解决方案需要大量的数据生成和语言模型(LMs)的微调,但Plan×RAG纳入了冻结的LMs作为即插即用的专家来生成高质量的答案。

这里补充一下插拔式专家有哪些:

马尔可夫假设(Markov Assumption),即每个子查询的答案只依赖于其直接父节点的答案。

  • 动态查询专家(Dynamic Query Expert):负责生成子查询,并确保子查询之间的马尔可夫依赖关系。动态查询专家将父节点的答案嵌入到子查询中,生成完整的子查询。
  • 批评家专家(Critic Expert):评估生成过程中是否需要额外信息,动态触发检索。批评家专家分析当前上下文和生成任务,决定是否需要检索额外信息。
  • 相关性专家(Relevance Expert):确保选择最相关的文档进行检索,减少上下文窗口的使用。相关性专家对检索到的文档进行相关性评分、排序和选择。
  • 聚合器专家(Aggregator Expert):将多个子查询的答案整合为对原始查询的综合响应。聚合器专家确保最终响应全面、平衡地覆盖原始查询的所有方面。

Tips:Paper看不懂怎么办,直接丢给AI,讲解具体步骤 + 示例步骤,这样理解速度特别快,然后再根据架构图一目了然。

具体步骤:

  1. 生成推理DAG:
  • 使用GPT-4生成推理DAG,将原始查询分解为多个子查询。
  • 每个子查询包含一个特殊标签(如),用于动态嵌入父节点的答案。
  1. 处理每个子查询:
  • 按照DAG的拓扑顺序处理每个子查询。
  • 对于每个子查询,动态查询专家生成完整的子查询。
  • 批评家专家评估是否需要检索额外信息,动态触发检索。
  • 相关性专家选择最相关的文档进行检索。
  • 生成器语言模型(如Llama3-8B-instruct)生成子查询的答案。
  1. 整合答案:
  • 聚合器专家将所有子查询的答案整合为对原始查询的综合响应。
  1. 调试和回溯:
  • 如果生成的答案有误,通过分析DAG和相应的子查询,识别和修正错误。
  • 仅重新生成受影响的路径,并重新运行聚合器,确保最终生成的响应是正确的。

示例:

假设有一个查询:“最后两届男子板球世界杯决赛的举办地之间的距离是多少?”

  1. 生成推理DAG:
  • Q1.1:“最后一届男子板球世界杯决赛的举办地是哪里?”
  • Q1.2:“上一届男子板球世界杯决赛的举办地是哪里?”
  • Q2.1:“计算Q1.1和Q1.2的举办地之间的距离。”
  1. 处理每个子查询:
  • 并行处理Q1.1和Q1.2,分别检索相关文档并生成答案。
  • 生成Q2.1的答案时,批评家专家评估是否需要额外信息,动态触发检索。
  • 相关性专家选择最相关的文档进行检索。
  1. 整合答案:
  • 聚合器专家将Q1.1、Q1.2和Q2.1的答案整合为对原始查询的综合响应。
  1. 调试和回溯:
  • 如果生成的答案有误,通过分析DAG和相应的子查询,识别和修正错误。
  • 仅重新生成受影响的路径,并重新运行聚合器,确保最终生成的响应是正确的。

(42)SubgraphRAG【定位仪】20241028

论文:Simple is Effective: The Roles of Graphs and Large Language Models in Knowledge-Graph-Based Retrieval-Augmented Generation

总结:不是漫无目的地大海捞针,而是精准绘制一张小型知识地图,让 AI 能快速找到答案。

架构:SubgraphRAG扩展了基于KG的RAG框架,通过检索子图并利用LLM进行推理和答案预测。将轻量级多层感知器与并行三元组评分机制相结合,以实现高效灵活的子图检索,同时编码有向结构距离以提高检索有效性。检索到的子图大小可以灵活调整,以匹配查询需求和下游LLM的能力。这种设计在模型复杂性和推理能力之间取得了平衡,实现了可扩展且通用的检索过程。

查询:“Which organizations have business partnerships with at least one company founded respectively by Elon Musk, Jeff Bezos, and Bill Gates - but weren’t founded by any of them?”

子图检索:SubgraphRAG 会检索包含 Elon Musk、Jeff Bezos 和 Bill Gates 创立的公司以及与这些公司有商业合作关系的组织的三元组。

答案:SubgraphRAG 返回的答案是 [Nvidia, Nasa]。Nvidia 与 Tesla(由 Elon Musk 创立)、Amazon(由 Jeff Bezos 创立)和 Microsoft(由 Bill Gates 创立)都有商业合作关系,而 Nvidia 本身并非由这三人中的任何一个创立。

核心步骤分析:

1、查询解析和实体提取(Query Analysis and Entity Extraction):SubgraphRAG从用户查询中识别出主题实体(Topic Entities)。这些实体是查询中直接提及的或者与查询紧密相关的知识图谱中的节点。

2、子图提取(Subgraph Extraction):使用一个轻量级的多层感知器(MLP)模型来编码和评估潜在子图的相关性。然后,基于MLP的评分,从知识图谱中检索最相关的子图。

  • 结构特征构建(Structural Feature Construction):SubgraphRAG 会计算查询中的实体与知识图谱中实体之间的结构距离,使用方向性距离编码(DDE)来表示这些距离。
  • 并行提取相关三元组(Extract Relevant Triples in Parallel):SubgraphRAG 并行地从知识图谱中提取与主题实体相关的三元组。

3、LLM推理(LLM Reasoning):设计了专门的提示模板,这些模板指导LLM如何利用检索到的子图信息来生成答案。

(43)RuRAG【炼金术士】20241104

论文:RuAG: Learned-rule-augmented Generation for Large Language Models

总结:像个炼金术士,能将海量数据提炼成清晰的逻辑规则,并用通俗易懂的语言表达出来,让AI在实际应用中更有智慧。

架构:旨在通过将大量离线数据自动蒸馏成可解释的一阶逻辑规则,并注入大型语言模型(LLM)中,以提升其推理能力。该框架使用蒙特卡洛树搜索(MCTS)来发现逻辑规则,并将这些规则转化为自然语言,实现针对LLM下游任务的知识注入和无缝集成。该论文在公共和私有工业任务上评估了该框架的有效性,证明了其在多样化任务中增强LLM能力的潜力。

蒙特卡洛树搜索在智能体中的应用示例:中间评价智能体(critic)来根据用户智能体和助理智能体出的各种观点进行决策来完成最终任务.

(44)RAGViz【透视眼】20241104

论文:RAGViz: Diagnose and Visualize Retrieval-Augmented Generation

总结:让RAG系统变透明,看得见模型在读哪句话,像医生看X光片一样,哪里不对一目了然。

架构:RAGViz提供了对检索文档和模型注意力的可视化,帮助用户理解生成的标记与检索文档之间的交互,可用于诊断和可视化RAG系统。

这篇Paper相当于打开RAG黑盒。

动机:询问“为什么猪会飞?”,突出显示的生成内容没有基于任何上下文文档,展示了内部幻觉。

系统架构:近似最近邻(ANN)索引、后端服务器、LLM推理服务器和前端用户界面。

  1. ANN索引(Dense Retrieval):
  • 在密集检索中,查询和文档被编码成高维特征向量,然后通过相似性搜索(如余弦相似度或内积)来确定查询向量的最近邻居。
  • RAGViz使用分布式系统来存储和索引这些向量,每个节点存储一部分向量并提供REST API来返回查询的近似最近邻。
  1. 上下文构建器(Context Builder):
  • 后端服务器处理构建语言模型上下文的所有逻辑,包括加载嵌入模型、管理后端逻辑和存储完整语料库。
  • 接收到的查询经过认证后被编码成嵌入向量,并路由到所有工作节点进行ANN搜索。
  • 从每个工作节点检索到的顶部文档会被重新排序,以返回整个数据集中查询的最终最近邻。
  • RAGViz提供两种文档片段提取方法:naive first(简单首段)和sliding window(滑动窗口)。
  1. 生成和注意力输出(Generation and Attention Output):
  • RAGViz需要一个GPU节点来运行LLM推理任务。
  • 系统使用vLLM库进行快速LLM推理,生成文本,但由于vLLM不支持注意力输出,系统随后使用HuggingFace模型库来获取注意力分数。
  • 这些分数通过对所有头和层的文档窗口的平均值来计算累积的文档级别注意力分数。
  1. 前端用户界面(Frontend User Interface):
  • 前端用户界面基于Next.JS框架构建,并作为静态文件托管在Apache web服务器上。
  • 用户界面使用表单收集查询信息和其他参数,并在接收到后端的注意力分数后,将它们存储在React状态中以用于注意力可视化。
  • 用户可以通过拖动选择输出标记来检查累积关注度,前端会突出显示文档中相关度高的标记。
  • 前端还提供切换文档包含状态的按钮,并将带有更新文档集的新查询路由到重写端点。

窗口大小为5、步长为2的滑动窗口片段提取方法的演示:

(45)AgenticRAG【智能助手】20241105

项目:https://weaviate.io/blog/what-is-agentic-rag

总结:不再是简单的查找复制,而是配了个能当机要秘书的助手。像个得力的行政官,不光会查资料,还知道什么时候该打电话,什么时候该开会,什么时候该请示领导。

架构:将AI智能体纳入RAG流程中,以协调其组件并执行超出简单信息检索和生成的额外行动,以克服非智能体流程的局限性。

单智能体:

多智能体:

(46)HtmlRAG【排版师】20241105

论文:HtmlRAG: HTML is Better Than Plain Text for Modeling Retrieved Knowledge in RAG Systems

总结:把知识不是当作流水账来记,而是像排版杂志一样,该加粗的加粗,该标红的标红。就像一个挑剔的美编,觉得光有内容不够,还得讲究排版,这样重点才能一目了然。

架构:HtmlRAGRAG中使用HTML而不是纯文本作为检索知识的格式,在对外部文档中的知识进行建模时,HTML比纯文本更好,并且大多数LLM具有强大的理解HTML的能力。HtmlRAG提出了HTML清理、压缩和修剪策略,以缩短HTML同时最小化信息损失。

动机:传统的RAG系统从Web上检索结果,下载搜索结果的HTML源文件,并提取纯文本。这一过程虽能获得由Web提供的知识,但却导致HTML文档中固有的结构性和语义信息损失。

当将包含表格结构的网页转化为纯文本时,其信息会变得无序,且原有的HTML标签(如和)也被舍弃,这些标签在信息传递中起着重要作用。

挑战:HTML文档通常包含大量的额外内容,如标签、JavaScript和CSS规范,这些内容增加了输入的tokens数量和计算噪音。

核心步骤:HTML清理、块树构建及HTML修剪。

  1. HTML清理
  • 移除CSS样式、注释和JavaScript代码。
  • 清理冗长的HTML标签属性。
  1. 块树构建
  • 将获取的所有HTML文档拼接在一起,然后使用Beautiful Soup解析拼接后的HTML文档,形成一个单一的DOM树。
  • 为优化计算效率,合并DOM树中的多个子节点,以形成大小适中的“块”。每个块的中文字数由预设的最大单词数(maxWords)来控制,确保块的粒度适应后续的修剪需求。
  1. HTML修剪
  • 基于文本嵌入的块修剪:初步修剪基于文本嵌入的相似性分数,确保与用户查询高度相关的块被保留。使用贪婪算法,低相似性得分的块将被逐步删除,直到满足模型的上下文窗口限制。经过这一过程,HTML文档的冗余结构会被重新调整,移除再次出现的无效标签。
  • 基于生成模型的精细块修剪:在初步修剪完成后,HtmlRAG将使用生成模型对剩余块进行进一步精细修剪。生成模型能够处理更长的上下文,并从整体上考虑块的信息。根据每个块的路径生成概率来评估其重要性,然后使用贪婪算法删除不重要的块,最终得到精简的HTML文档。

LLM提示词:

(47)M3DocRAG【感官达人】20241107

论文:M3DocRAG: Multi-modal Retrieval is What You Need for Multi-page Multi-document Understanding

总结:不是只会读书,还能看图识图,听声辨位。像个综艺节目里的全能选手,图片能看懂,文字能理解,该跳跃思维时就跳跃,该专注细节时就专注,各种挑战都难不倒。

架构:M3DocRAG是一种新颖的多模态RAG框架,能够灵活适应各种文档上下文(封闭域和开放域)、问题跳转(单跳和多跳)和证据模式(文本、图表、图形等)。M3DocRAG使用多模态检索器和MLM查找相关文档并回答问题,因此它可以有效地处理单个或多个文档,同时保留视觉信息。

三个阶段:

  1. 文档嵌入阶段:把所有文档页面转为RGB图像,并从页面图像中提取视觉嵌入(例如 ColPali)。
  2. 页面检索阶段:用文本查询检索相似度高的前K个页面。对于开放域设置,创建近似页面索引,比如倒排文件索引(IVF),以加快搜索速度。
  3. 问答阶段:使用MLM进行视觉问答以获取最终答案。

动机:现有的DocVQA任务,主要有以下两种方案:

1、聚焦于单页文档的视觉问答

2、从文档中提取文本(比如OCR或PDF文本提取)并运用检索增强生成(RAG),即检索模型找出相关段落,语言模型依据段落回答问题

存在问题:

  • 问题往往需要跨越不同页面或文档的信息,现有的VQA方法难以处理众多长文档;
  • 部分文档具有复杂的视觉格式,像表格、图表和混合布局,可诸如OCR这类的文本提取方法会忽略这些细微之处,致使文档解读不完整或不准确。
📌 [ 笔者 ]   文艺倾年
📃 [ 更新 ]   2025.2.2
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,
              本人也很想知道这些错误,恳望读者批评指正!

在这里插入图片描述


http://www.niftyadmin.cn/n/5841142.html

相关文章

62.病毒在封闭空间中的传播时间|Marscode AI刷题

1.题目 问题描述 在一个封闭的房间里摆满了座位,每个座位东西向和南北向都有固定 1 米的间隔。座位上坐满了人,坐着的人可能带了口罩,也可能没有带口罩。我们已经知道房间里的某个人已经感染了病毒,病毒的传播速度是每秒钟感染距…

leetcode——验证二叉搜索树(java)

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入…

编程AI深度实战:给vim装上AI

系列文章: 编程AI深度实战:私有模型deep seek r1,必会ollama-CSDN博客 编程AI深度实战:自己的AI,必会LangChain-CSDN博客 编程AI深度实战:给vim装上AI-CSDN博客 编程AI深度实战:火的编程AI&…

python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理

【1】引言 前序学习进程中,对图像的操作均基于各个像素点上的BGR值不同而展开。 对于彩色图像,每个像素点上的BGR值为三个整数,因为是三通道图像;对于灰度图像,各个像素上的BGR值是一个整数,因为这是单通…

区间加法 II - 解题思路与代码解析

区间加法 II - 解题思路与代码解析 问题描述 给定一个 m x n 的矩阵 M,矩阵初始时所有单元格为 0。我们有一系列操作,每个操作都是一个二元组 [ai, bi],表示在矩阵中对前 ai 行和前 bi 列的所有元素加 1。 我们的任务是在执行所有操作后&a…

扩散模型(二)

相关阅读:扩散模型(一) Parameterization of L t L_t Lt​ for Training Loss 回想一下,我们需要训练一个神经网络来近似反向扩散过程中的条件概率分布,即, p θ ( x t − 1 ∣ x t ) N ( x t − 1 ; μ θ ( x t…

MLM之MiniCPM-o:MiniCPM-o的简介(涉及MiniCPM-o 2.6和MiniCPM-V 2.6)、安装和使用方法、案例应用之详细攻略

MLM之MiniCPM-o:MiniCPM-o的简介(涉及MiniCPM-o 2.6和MiniCPM-V 2.6)、安装和使用方法、案例应用之详细攻略 目录 MiniCPM-o的简介 0、更新日志 1、MiniCPM-o系列模型特点 MiniCPM-o 2.6 的主要特点 MiniCPM-V 2.6的主要特点 2、MiniCPM-o系列模型架构 MiniC…

第27节课:安全审计与防御—构建坚固的网络安全防线

目录 安全审计工具与流程安全审计工具NessusNmapBurp Suite 安全审计流程规划与准备信息收集漏洞扫描分析与评估报告与建议 安全防御策略网络层防御应用层防御数据层防御安全管理 结语 在当今数字化时代,网络安全已成为企业和个人不可忽视的重要议题。随着网络攻击手…