微信扫码
与创始人交个朋友
我要投稿
推荐语:RAG发展波澜壮阔,这篇万字长文精心总结,助您领略其一年风光。核心内容:1. 一年内RAG系统的代表性成果2. 向量化模型在NLP任务中的应用3. RAG工作流程中的重要前提
点击蓝字
关注我们
过去的一年内,作为AI应用领域的重要一环,RAG(检索增强生成)的发展可谓是一幅波澜壮阔的画卷。春花初绽,GraphRAG宛如晨曦破晓;夏日炎炎,各类开源工具以及框架蓬勃发展之火如荼;金秋时节,多模态和复杂RAG创新不断,仿佛清泉流淌,滋润着智慧的沃土;冬之孕育,Agent又启新征程,成为RAG新范式的开端。轮番登场,各领风骚,奇技纷呈,美不胜收。如冬雪覆盖大地,孕育着来年的希望,这些进步预示着RAG将在未来继续进化,为新的一年带来无限可能。
在此,我精心遴选了这一年内最具代表性的RAG系统、顶会论文和技术报告,每一篇都附有详细的注解、来源说明、知识摘要,以及代码地址,皆可复现尝试。乙巳蛇年将至,愿执此万字长文,将一百零八个特色RAG工作进行总结展示,助大家领略RAG在这一年间的无限风光,感受其带来的普惠之力,共赏这一年的智慧结晶。
|内容概览
摘要:
|BGE: One-Stop Retrieval Toolkit For Search and RAG
代码地址:https://github.com/FlagOpen/FlagEmbedding
模型地址:https://huggingface.co/BAAI
BGE智源研究院提出并逐步实现了“通用向量模型”的构想,旨在创建适应不同任务、语言和数据类型的模型体系,为检索增强生成(RAG)提供综合服务。此过程分为几个阶段实施:
任务统一性:首先推出BGE v1模型,在2023年8月发布,该模型通过大量中英文数据训练,支持多种下游任务,特别是在中文方面表现出色,成为当时技术状态(SOTA)的领先者。
语言统一性:接着,智源推出了支持超过100种语言的BGE M3模型,于2024年2月发布。它不仅增强了多语言和跨语言能力,还首次在一个模型中统一了向量检索、稀疏检索和多向量检索三种主要检索能力,并扩展了输入长度支持更长文本。BGE M3在多个评测基准上取得了业内最佳成绩,广受好评并在业界得到了广泛应用。
衍生版本:基于BGE模型的成功,智源进一步开发了具有特定功能的衍生版本,如精准排序、多模态混合检索和支持上下文学习能力等,这些创新在算法和技术社区中引起了广泛关注和讨论。
BGE的模型权重、推理及训练代码、训练数据均面向社区开放。自2024年初至今,BGE系列模型的累计下载量已超过1亿次,成为下载量最多同时也是首个下载量超过一亿次的国产开源AI模型。
|NV-Embed: Improved Techniques for Training LLMs as Generalist Embedding Models
论文链接:https://arxiv.org/abs/2405.17428
模型地址:https://huggingface.co/nvidia/NV-Embed-v2
基于双向语言模型的嵌入模型长期占据主导,但近年来基于解码器的 LLM 嵌入模型开始在一些任务中表现出色。然而,先前的领先工作多依赖于大量专有合成数据进行微调。因此,该论文提出NV-Embed 模型,核心内容包括:
模型架构:提出潜在注意力层获取池化嵌入,相比平均池化和使用 LLM 最后<EOS>标记嵌入,提高了检索和下游任务准确性;在对比训练中移除 LLM 的因果注意力掩码,提升了表示学习能力。
模型训练:采用两阶段对比指令调整方法。第一阶段在检索数据集上进行对比训练,利用批内负样本和精心挑选的硬负样本;第二阶段将各种非检索数据集融入指令调整,提高了非检索任务准确性和检索性能。
实验结果上,基准测试成绩上在 Massive Text Embedding Benchmark(MTEB)的 56 个任务中取得 69.32 的高分,排名第一,在其中 15 个检索任务中也取得最高得分 59.36。消融研究上,双向注意力掩码在 56 个任务中的 MTEB 得分上始终优于因果注意力掩码;平均池化在 56 个任务中的表现优于<EOS> - last 标记嵌入,潜在注意力层相比自注意力层对检索、分类和 STS 子任务有益。最重要的是,NV-Embed 模型通过新颖的架构设计和两阶段训练程序,显著增强了 LLM 作为通用嵌入模型的能力,且仅使用公开数据就取得了领先的结果。
|Arctic-Embed: Scalable, Efficient, and Accurate Text Embedding Model
论文链接:https://arxiv.org/abs/2405.05374
代码地址:https://github.com/Snowflake-Labs/arctic-embed
嵌入模型因其无需额外调优即可提供准确的检索性能,而成为搜索和检索增强生成(RAG)工作负载的热门选择。与传统的关键词搜索相比,嵌入模型编码的信息不仅限于Token重叠,还能捕捉语义相似性。随着这些模型的实用性和广泛应用,开源和研究社区不断推出更强大的文本嵌入模型,如E5、GTE和Jina。这些进步得益于快速的实验和改进周期,以及大规模开放评估基准测试的支持,如MSMARCO、BEIR和MTEB。这些评估平台结合了简单高效的评价方法和广泛的任务覆盖,极大地促进了模型的开发和优化。
为了描述了训练数据集的创建和背后的配方,论文介绍了Arctic-Embed文本嵌入模型家族,该系列包括五个模型,参数量从22M到334M不等,在发布时,每个模型在其对应规模上实现了MTEB检索排行榜上的SOTA检索准确性。尤其是最大的模型Arctic-Embed-L,超越了诸如Cohere的Embed-v3和OpenAI的Text-Embed-3-Large等闭源模型。核心内容包括:
数据集创建与训练配方:详细描述了训练数据集的创建过程及背后的训练配方。通过一系列消融研究,作者探讨并验证了影响模型性能的关键因素,这些研究揭示了模型成功的原因。
数据组织的重要性:研究表明,检索质量的改进更强烈地依赖于训练期间的数据采样策略和负样本挖掘方法,而不是单纯的数据规模扩大或批量大小增加。这挑战了之前研究中对大规模数据和大批次训练的重视。
合成数据改进:论文提出了一种新颖的查询生成技术,基于挖掘出的硬负例来增强训练数据。这种方法比直接同时生成查询和负例的传统方法更为有效,被认为是提升模型性能的关键成分。
Arctic-Embed模型家族的开放发布为社区提供了强大的工具,在检索任务中展现了卓越性能。论文不仅分享了详细的训练配方,还通过消融研究强调了数据组织策略和技术创新对于模型性能的重要作用。特别是针对合成数据的改进方法,提供了一个新的视角,即如何通过优化数据构建过程来显著提高模型的效果。
|mGTE: Generalized Long-Context Text Representation and Reranking Models for Multilingual Text Retrieval
论文链接:https://arxiv.org/abs/2407.19669
模型地址:https://hf.co/Alibaba-NLP/gte-multilingual-base
随着大语言模型和检索增强生成系统的发展,对通用、即插即用的文本表示模型(TRM)和重新排序器的需求激增。新应用需要处理长文本和多语言文本,传统基于编码器的模型无法满足需求,因此需要升级模型,使其具备多语言以及长文本能力。论文提出了mGTE模型,核心内容包括:
文本编码器:引入了一个用 Rotary Position Embedding(RoPE)和 Unpadding 增强的文本编码器,在原生 8192-Token 上下文(比之前的多语言编码器的 512 长)中进行预训练。通过两阶段课程学习的掩码语言建模(MLM)进行预训练,具体包括 MLM-2048 和 MLM-8192 两个阶段,对 BERT 架构进行了多处改进,如替换绝对位置嵌入、升级前馈网络、调整 Dropout 等,并详细介绍了数据来源和训练设置。
文本表示模型:基于上述编码器,通过对比学习构建混合文本表示模型,包括对比预训练和微调两个步骤,预训练数据包含多种文本对,微调阶段结合了 Matryoshka 嵌入和稀疏表示的多任务学习,并详细说明了训练设置和数据来源。
文本重新排序器:使用交叉编码器架构构建重新排序器,将查询和文档一起作为输入,直接预测它们的相关性得分,并基于预训练的 8k 上下文文本编码器模型通过 InfoNCE 进行一步微调,调整了负样本设置。
通过实验验证了其训练长文本模型的有效性,同时文本编码器优于相同规模的 XLM-R,TRM 和重新排序器在性能上与最先进模型相当且在长上下文检索上表现更好,模型在训练和推理过程中效率更高.
|Jasper and Stella: distillation of SOTA embedding models
论文链接:https://arxiv.org/abs/2412.19048
模型地址:https://huggingface.co/infgrad/jasper_en_vision_language_v1
性能卓越的模型往往存在大量参数和高维度的问题,例如 NV-Embedv2、BGE-En-ICL、E5mistral-7b-Instruct 等模型有 7B 参数且向量维度达 4096d,这致使推理和检索速度迟缓,形成了精度与速度之间的权衡困境。论文清晰界定了学生模型(待训练的文本嵌入模型)、教师模型(用于指导学生模型生成向量的 SOTA 嵌入模型且不参与训练)、向量(文本嵌入或表示,是最后隐藏状态的池化)、学生向量、教师向量以及多种损失函数,为后续模型和训练方法的阐述奠定了基础。核心如下:
模型架构:创新性地融合了语言模型和视觉编码器。其中,ViT 图像编码器负责将图像转换为视觉标记嵌入,池化层对视觉标记进行投影和数量缩减以适配语言模型输入维度,变换编码器或解码器(如 BERT、GPT2 等常见文本嵌入模型)承担主要的文本处理工作,多个全连接层则用于将向量投影到特定维度,各组件相互协作,构成了一个完整且功能强大的架构体系。
阶段 1&2:教师向量蒸馏:精心设计了三种损失函数。余弦损失旨在最小化学生向量和教师向量在高维空间的夹角;相似性损失补充余弦损失,确保学生向量和教师向量计算的文本对相似性值一致;三元组损失进一步降低对学生向量的要求,通过教师向量生成三元组数据训练学生模型。最终损失为三者加权和,且此阶段无需监督数据,可利用大量无监督文本训练。同时,阶段 1 和 2 在训练参数上有所区分,阶段 1 仅训练全连接层,阶段 2 则训练全连接层和学生模型的后三层。
阶段 3:降维:鉴于前两阶段蒸馏导致学生向量维度过大(如 Jasper 模型中可达 12288d),依据约翰逊 - 林登施特劳斯引理,通过添加特定形状的全连接层(来降低维度。此阶段以相似性损失和三元组损失为函数,训练所有参数,并且为保证前一阶段 12288d 向量的准确性,仍用三种损失函数训练。此外,还提出可将学生模型自身向量作为教师向量进行自蒸馏降维,虽可能有性能损失,但能利用无监督数据和模型自身实现降维操作。
阶段 4:可视化 Jasper 模型:采用图像字幕数据训练视觉编码器,本质上属于蒸馏过程,其中字幕向量为教师向量,图像向量为学生向量,损失函数与阶段 1 相同。在训练时,针对多个学生向量分别计算损失并取平均作为最终损失,从而赋予模型一定的图像和文本编码能力。
|InstructRetro: Instruction Tuning post Retrieval-Augmented Pretraining
论文链接:https://arxiv.org/abs/2310.07713
代码地址:https://huggingface.co/nvidia/retro-48b-instruct-4k
如先前研究中,Retro 等模型在降低困惑度和提高事实准确性方面取得一定成果。然而,现有的预训练检索增强 LLM 参数规模相对较小,像 Retro 有 7.5B 参数、Retro++ 有 9.5B 参数、Atlas 有 11B 参数等,且训练的 Token 数量有限,这极大限制了其在指令调整后的零样本泛化能力,难以充分发挥大型语言模型的潜在优势。论文提出Retro 48B 模型,是目前最大的检索增强预训练的 LLM。训练过程如下:
预训练:以 43B 的 GPT 模型为基础,在 1.2 万亿 tokens 上继续预训练,其中 1.1 万亿用于预训练 GPT 骨干网络,1000 亿用于检索增强的持续预训练。通过使用 Faiss 索引和 Retro-fitting 技术克服了大规模检索数据库和预训练成本的挑战。实验表明,Retro 48B 在困惑度上显著优于仅在 1.2T tokens 上训练的 GPT 43B,且仅增加 2.58% 的 GPU 训练时长。
指令调整:使用多种高质量指令调整数据集对模型进行训练,包括 SODA、ELI5 等。在训练过程中,对于 Retro 模型,通过手动设置门控机制在指令调整时禁用 Retro 编码器,只更新解码器骨干网络的权重。
在 8 个短形式问答和阅读理解任务、4 个长形式问答任务以及 3 个总结任务上,InstructRetro 相比基于 GPT 的指令调整模型有显著提升,平均提升分别为 7%、10% 和 16%。此外,研究发现可以直接去除 InstructRetro 架构中的编码器,仅使用解码器骨干网络(InstructRetro 43B)也能取得相当的结果。经过指令调整后,InstructRetro 在零样本任务上表现出强大能力,显著优于基于 GPT 的检索增强生成模型。可以直接使用 InstructRetro 的解码器骨干网络获得可比结果,为通过检索增强预训练获得更好的 GPT 解码器提供了方向。
|ListConRanker: A Contrastive Text Reranker with Listwise Encoding
论文链接:https://arxiv.org/abs/2501.07111v1
模型地址:https://huggingface.co/ByteDance/ListConRanker
重排序模型是信息检索系统中的一个关键组件,它的主要任务是根据给定的查询与文本段落之间的语义相似度来调整段落的顺序。随着检索增强生成(RAG)技术的普及,这种模型的作用变得更为重要。在处理长文本和大量候选文档时,传统的RAG方法往往效率不高,导致检索效果不佳。同时,现有的点对点(Pointwise)和成对(Pairwise)编码策略在处理全局对比信息方面存在一定的局限性,这可能会影响最终排序结果的准确性。因此,改进重排序模型以更好地适应长文本处理和提高面对大规模文档集时的检索性能,以及探索超越现有编码方法的新策略,对于提升信息检索系统的整体表现至关重要。论文提出ListConRanker,核心内容包括:
原始特征提取:将查询和段落输入基于 BERT 的嵌入模型获取特征,但这些特征不含段落间比较信息。
列表编码:通过 ListTransformer 和 ListAttention 对特征进行处理。ListTransformer 类似 Transformer Encoder,利用可学习嵌入区分查询和段落特征,并借助 ListAttention 保持查询特征,同时学习段落间全局对比信息,最后结合原始和列表特征确定最终相似度。
Circle Loss:采用 Circle Loss 作为损失函数,可同时输入多个正负样本提高数据效率,自适应调整梯度权重,使模型训练更高效。
迭代推理:由于 GPU 内存限制,训练和实际使用时输入段落数量不同,为解决此问题提出迭代推理方法,在每次迭代中确定部分段落排名,重新输入剩余段落直至满足终止条件。
在中文大规模文本嵌入基准(C-MTEB)的重排序部分评估,包括 cMedQA1.0、cMedQA2.0、MMarcoReranking 和 T2Reranking 数据集,使用平均准确率(mAP)衡量模型有效性,ListConRanker 在各数据集上表现优异,尤其在 MMarcoReranking 和 T2Reranking 数据集上优势明显。
|MLLM Is a Strong Reranker: Advancing Multimodal Retrieval-augmented Generation via Knowledge-enhanced Reranking and Noise-injected Training
论文链接:https://arxiv.org/abs/2407.21439
代码地址:https://github.com/IDEA-FinAI/RagVL
MLLMs 在处理多模态信息方面有进展,但依赖静态训练数据,存在信息过时和上下文感知有限等问题。Multimodal RAG 虽有前景,但会遇到 多粒度噪声对应(Multi-Granularity Noisy Correspondence,MNC )问题,影响检索和生成的准确性。传统 VQA 与多模态知识寻求问答不同,多模态 RAG 面临粗粒度(查询-字幕)和细粒度(查询-图像)噪声挑战,如 CLIP 在检索阶段匹配查询和图像存在困难。论文提出RagVL,核心内容包括:
多模态检索器:基于 CLIP 文本和图像编码器的双编码器架构,检索与文本查询相关的图像。
诱导 MLLMs 排序能力:基于多模态 QA 数据集构建指令跟随数据,设置相关和不相关图像对,用字幕感知排序任务训练重排序器。通过提问判断图像与问题相关性,根据生成 “是” 的概率对候选图像重排序。设置自然阈值和自适应阈值,过滤低相关性图像,提高检索准确性。
噪声注入训练:对单 / 多图像交错数据集标准化图像输入数量,进行负采样。对图像应用高斯噪声并对比对数重新分配训练损失权重,增强模型鲁棒性。
诱导 MLLMs 排序能力后,检索性能大幅提高,如在 WebQA 上 R@2 平均提高 40%,知识增强重排序方法表现优越,自适应阈值能准确过滤无关图像,提高准确性和 F1 分数。应用 RagVL 后,模型性能优异,自然阈值在检索增强生成中效果更好。
|A Gradient Accumulation Method for Dense Retriever under Memory Constraint
论文链接:https://arxiv.org/abs/2406.12356v3
代码地址:https://github.com/DSBA-Lab/Contrastive-Accumulation
密集检索旨在用神经网络响应用户查询从数据库检索相关段落,常使用 InfoNCE 损失训练。理论和实证表明,InfoNCE 损失训练时大批次对稳定和有效训练很关键,能使查询和相关段落表示更接近、无关段落表示更远离,为解决硬件瓶颈,已有一些内存减少方法。如 GradAccum 虽能拆分大批次减少内存,但在 InfoNCE 损失下会减少每个查询的负样本。GradCache 分解反向传播过程减少内存,虽能使用与总批次相同数量的负样本,但计算开销大、训练时间长且无法超越高资源场景。Pre-Batch Negatives 虽能缓存段落表示增加负样本,但训练不稳定且性能提升有限。论文提出CONTACCUM方法,核心内容包括:
问题发现:在低资源设置下,GradAccum 用于处理无法一次放入内存的总批次。它将总批次分解为积累步骤,每次处理局部批次计算梯度。但每个积累步骤中负样本数量比使用总批次时少,因为一次前向传播使用的段落数少,虽总数据量用于权重更新与总批次相同,但无法维持负样本数量。
双记忆库结构:为解决 GradAccum 负样本少的问题,CONTACCUM 采用双记忆库结构分别缓存查询和段落表示,类似先进先出队列。在训练时,利用当前和记忆库中的表示构建相似矩阵计算损失,记忆库中表示因停止梯度操作不参与反向传播。其负样本数量比 GradAccum 多,在特定条件下甚至能比总批次利用更多负样本,从而在低资源下性能优于高资源场景。
分析 InfoNCE 损失反向传播过程发现,查询和段落编码器的梯度受对方生成的表示影响,且梯度计算中使用的表示数量由记忆库大小决定。Pre-batch negatives 仅用段落记忆库会导致梯度范数不平衡,使训练不稳定。CONTACCUM 通过使用相同大小的查询和段落记忆库,能保证两个编码器梯度范数相似,稳定训练过程。
|Improving Text Embeddings with Large Language Models
论文链接:https://arxiv.org/abs/2401.00368
模型地址:https://github.com/microsoft/unilm/tree/master/e5
文本嵌入技术对文本匹配、问答系统以及搜索、广告和推荐系统等至关重要。最近,检索增强生成(RAG)模型也高度依赖于高质量的文本嵌入来进行信息检索。从简单的词向量平均到Sentence-BERT,再到更为复杂的E5和BGE模型,文本表示方法不断演进。这些新方法通过设计特定的预训练策略并使用高质量数据进行微调来改进文本嵌入的质量。然而,当前模型依赖复杂的训练流程和大量的工程工作。许多模型仅支持少数几种语言,如英语或中文,限制了其广泛适用性。大多数嵌入模型基于BERT类架构,未能充分利用大语言模型(LLM)的优势,也没有突破输入长度的限制。为了应对上述挑战,文中介绍了一种新的方法,核心内容包括:
两步提示策略:利用大模型如类似Mistral-7B的架构,通过一个两步提示策略(two-step prompting strategy),让模型自主生成多种语言的任务和相应的数据,以增强数据多样性。
文本获取:不同于传统的句子平均或仅使用序列的第一个/最后一个token的方法。当获取文本嵌入时,采用的是单塔架构,并在query和doc之间插入一个 <EOS> token。然后,取LLM最后一层中对应于这个token的嵌入作为整个query-doc对的表示。对于查询(Query),输入格式为Instruct: {task_definition} \n Query: {query}。这里,task_definition是之前大语言模型(LLM)生成的任务定义或者是已知任务的描述。这种方式有助于模型理解查询的具体上下文和目标。对于文档(Doc),输入直接是文档本身,不添加任何前缀提示(Prefix Prompt)。这样做的好处是可以对文档进行索引缓存,从而在后续检索过程中提高效率。
模型训练:采用了标准的InfoNCE损失函数来计算In-Batch负样本和难负样本的损失。InfoNCE损失常用于对比学习,旨在拉近正样本对之间的距离,同时推开负样本对的距离,从而优化文本嵌入的质量。
传统NLP流程通常是先通过如LSI、词袋模型、Word2vec或BERT等方法进行文本表示,再进行任务建模。然而,现在大模型在文本生成方面表现出色,反而促使我们通过其生成的结果来学习更有效的文本表示。这反映了范式的转变——利用强大的生成能力间接提升文本表示的质量。
|Generative Representational Instruction Tuning
论文链接:https://arxiv.org/abs/2402.09906
代码地址:https://github.com/ContextualAI/gritlm
文本问题可归为生成或嵌入,但现有模型通常只能擅长其中一种。将两者统一到一个模型中是人工智能领域的长期目标,而此前的研究在这方面存在不足。论文提出GRIT 方法,核心内容包括:
Embedding任务:给定一个指令,让语言模型生成文本的表征。这类似于当前流行的统一句向量模型的训练方式。并采用传统对比学习,拉近相关文本之间的距离,疏远不相关文本的距离。文本表征获取上,使用双向注意力机制获得隐藏状态,并将最后一层隐状态中对应文本部分(排除Instruction和Prompt位置的文字)求和再平均,作为文本的表征向量。
Generation任务:给定一个指令,让语言模型生成对应的回复Response。这是大模型SFT的常见训练方式。每个Token只能看到之前的Token,进行预测下一个Token的语言建模任务,仅计算生成Response部分的Token上的损失。
论文创新性地结合了Embedding和Generation两种任务的训练方法,通过Instruction Tuning使得语言模型能够灵活应对不同类型的任务。它在Embedding任务中使用双向注意力机制和对比学习来优化文本表征,在Generation任务中则依赖单向注意力机制进行有效的文本生成。这种综合训练策略显著提升了模型在多种自然语言处理任务中的表现。
|KBAlign: Efficient Self Adaptation on Specific Knowledge Bases
论文链接:https://arxiv.org/abs/2411.14790v3
代码地址:https://github.com/thunlp/KBAlign
大语言模型在下游任务中虽有能力,但特定领域适应仍关键,现有方法如检索增强生成(RAG)等存在不足,且外部知识信号并非必需,故需新方法激活模型自主适应能力。论文提出KBAlign方法,核心内容包括:
任务设置:定义知识库(KB)适应任务,给定 KB、模型和检索器,目标是提升模型对 KB 信息的掌握及测试集表现,结合训练和推理方法优化。
自标注:用骨干模型 M 对 KB 文本进行标注,根据任务选择短依赖或长依赖标注策略生成问答对,训练模型,增强其鲁棒性和泛化能力。
迭代调优:包括初始调优(用标注数据和部分检索上下文训练 M)和自验证调优(基于模型预测和真实答案迭代验证并改进)。
针对性推理:采用查询扩展(QE)和自验证策略优化生成结果,提升模型下游性能。
选用 LooGLE、ASQA、JEC-QA 数据集及 MiniCPM-2.4B、LLaMA-3.1、GPT-3.5 等模型进行了测试,在多数指标上 KBAlign 使模型性能显著提升。
|KB-Plugin: A Plug-and-play Framework for Large Language Models to Induce Programs over Low-resourced Knowledge Bases
论文链接:https://arxiv.org/abs/2402.01619v1
代码地址:https://github.com/THU-KEG/KB-Plugin
利用知识库辅助大语言模型回答复杂问题的研究增多,程序归纳(PI)是有前景的范式,但多数 PI 方法依赖大量标注数据,低资源知识库面临挑战,主要问题是如何在低资源知识库缺乏标注数据的情况下,让大语言模型利用其知识进行程序归纳,关键在于编码知识库模式信息和让 PI 插件学习提取利用相关信息。论文提出KB-Plugin,核心内容包括:
插件架构:采用 LoRA 实现模式插件和 PI 插件,将知识和技能编码到插件参数中,LoRA 具有不增加输入长度和推理延迟的优势,使KB-Plugin即插即用,让LLMs能够在任何低资源的KB上诱导程序。
学习与转移框架:包括四个步骤。首先基于源知识库和数据生成多个不同模式的源知识库及增强数据;接着通过自监督三元组完成任务学习每个源知识库和目标知识库的模式插件;然后训练 PI 插件使其能根据不同模式插件提取信息生成正确程序;最后将训练好的 PI 插件转移到目标知识库,并使用约束解码保证生成有效程序
使用 KQA Pro 作为源域数据集,WebQSP、GraphQ、GrailQA、MetaQA 和 SoAyBench 作为目标域数据集,与多种低资源 PI 方法和监督模型比较。KB-Plugin 在多个数据集上取得比现有低资源 PI 方法更好或相当的性能,在 GraphQ、GrailQA 和 MetaQA 上甚至超越部分监督方法,且使用的骨干 LLM 更小。
摘要:
传统RAG方法侧重于语义相似性,忽略了文本内容之间的结构化关系知识,经常以重复的文本片段形式出现,导致上下文过长,影响理解。再加上由于只能检索文档的子集,RAG无法全面掌握全局信息,在需要综合多源信息的任务如查询聚焦摘要中表现不佳。为了解决上述问题,GraphRAG系列工作应运而生,其最具价值的地方在于提出一套落地可行的基于知识图谱的方案,通过结合图结构和外部知识库,显著提高了RAG系统在检索和生成方面的性能,使得模型能够更好地捕捉文本间的关联,并提供了更加全面和准确的回答,之后衍生的各类创新也有助于克服现有RAG技术面临的挑战,推动其在更多应用场景中的高效部署。这些方案不仅提升了RAG处理复杂关系的能力,还增强了对全局信息的理解,减少了冗余信息。
|From Local to Global: A Graph RAG Approach to Query-Focused Summarization
论文链接:https://arxiv.org/abs/2404.16130
代码链接:https://github.com/microsoft/graphrag
检索增强生成(RAG)可从外部知识源检索信息以回答问题,但在处理针对整个文本语料库的全局问题(如 “数据集中的主要主题是什么?”)时存在不足,因为这本质上是一个查询聚焦的摘要(QFS)任务,而非简单的检索任务。现有的 QFS 方法又难以扩展到典型 RAG 系统索引的大量文本。因此论文旨在结合检索增强生成(RAG)和聚焦查询的摘要(QFS)技术,解决在处理大规模文本时回答全局问题的挑战。核心内容包括:
文本分块:将源文档分割为合适粒度的文本块,需平衡长文本块减少 LLM 调用但可能降低召回率的问题。
提取元素实例:使用多部分 LLM 提示从文本块中识别和提取图节点(如实体)和边(如关系)实例,可通过提供特定领域的少量示例来定制提示,并通过多轮 “收集” 提高提取效果。
生成元素摘要:利用 LLM 将提取的实例转换为描述性文本摘要,处理可能的实体重复问题,并形成与传统知识图不同的图索引。
划分图社区:将上一步创建的索引构建为无向加权图,使用社区检测算法(如 Leiden 算法)将其划分为紧密相关节点的社区,以实现分治式的全局摘要。
生成社区摘要:为 Leiden 层次结构中的每个社区创建摘要,根据社区级别和元素摘要Token数采用不同的生成方法,这些摘要可用于理解数据集结构或回答问题。
生成最终答案:给定用户查询,先准备社区摘要并分块,然后并行生成中间答案并筛选,最后将有用的中间答案汇总为最终答案返回给用户。
比较了 Graph RAG 的四个层次社区摘要(C0-C3)、直接对源文本应用 Map-Reduce 方法(TS)和朴素的 “语义搜索” RAG 方法(SS)六种条件,Graph RAG 在全面性和多样性上优于朴素 RAG,C1-C3 在这两个指标上也比 TS 有轻微改进,且在 Token 成本上更具优势。根级社区摘要在迭代问答中高效且在全面性和多样性上优于朴素 RAG。
|Multi-Meta-RAG: Improving RAG for Multi-Hop Queries using Database Filtering with LLM-Extracted Metadata
论文链接:https://arxiv.org/abs/2406.13213v2
代码地址:https://github.com/mxpoliakov/multi-meta-rag
传统的 RAG 应用程序在回答多跳问题方面表现不佳,这些问题需要检索和推理支持证据的多个元素。论文引入了 Multi-Meta-RAG ,该方法使用数据库过滤和 LLM 提取的元数据来改进 RAG 从各种来源中选择与问题相关的相关文档。核心内容包括:
提取相关查询元数据:使用数据库过滤和LLM提取的元数据来提高文档选择的相关性,利用辅助 LLM 通过构建 Few-Shot Prompt 提取文章来源和发布日期等元数据,其中文章来源是主要的过滤字段,发布日期在部分查询中提取。实验中使用 ChatGPT进行提取,平均每个查询耗时 0.7 秒。
改进块选择:将 MultiHop-RAG 知识库中的文章分割成块,转换为向量存储在支持元数据过滤的向量数据库中。在检索阶段,结合元数据过滤和嵌入模型检索最相关的块,并使用重排序模块进一步筛选。
使用两个性能较好的嵌入模型进行测试,结果表明 Multi-Meta-RAG 在所有核心指标上上均有显著提升,在LLM 响应生成实验上,选取 GPT-4 和 Google PaLM 进行实验,与基线 RAG 相比,两种模型的准确性都有大幅提高。但是这个方法也存在一些局限性,比如它需要特定领域和格式的问题集,还需要额外的推理时间来提取元数据。不过因为它简单易懂、效果显著的方法,被langchain官方点名,受很多评论推荐。
论文链接:https://arxiv.org/abs/2409.13731
代码地址:https://github.com/OpenSPG/KAG
RAG 技术虽有助于 LLMs 获取领域知识并构建应用,但存在向量相似性与知识推理相关性差距及对知识逻辑不敏感等问题,在专业领域难以提供准确答案。知识图谱具有组织信息和推理的优势,可弥补 RAG 的不足,从而引出 KAG 框架,核心内容包括:
KAG-Builder:负责构建离线索引,通过 LLMFriSPG 实现知识表示升级与结构 - 文本块相互索引,经信息获取、语义对齐和存储写入流程为后续提供基础。
KAG-Solver:负责核心推理,借逻辑形式引导混合推理,整合多类推理,用多轮求解与知识对齐解决复杂问题并提升准确性。
KAG-Model :负责通用模型优化,着重增强 NLU、NLI 和 NLG 能力,借助数据集与指令策略训练,引入 Onepass Inference 提升性能与效率。
聚焦于优化自然语言理解(NLU)、自然语言推理(NLI)和自然语言生成(NLG)三种能力,还探索了将多个推理过程集成到单个推理中的方法,并通过 Onepass Inference 模型提高性能和效率。在支付宝电子政务服务场景中应用 KAG 框架构建问答应用,在处理行政流程相关问题时,相比 NaiveRAG,KAG 在完整性和准确性上有显著提高,同时基于支付宝健康管理场景开发医疗问答应用,通过使用严格约束的模式构建知识图谱和逻辑形式推理等方法,在处理疾病、症状等相关问题时取得了较高的召回率和准确率。
|RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval
论文链接:https://arxiv.org/abs/2401.18059
代码地址:https://github.com/parthsarthi03/raptor
大多数现有方法仅从检索语料库中检索短的连续块,限制了对整个文档上下文的整体理解。RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval)引入了一种新方法,即递归嵌入、聚类和总结文本块,从下往上构建具有不同总结级别的树。在推理时,RAPTOR 模型从这棵树中检索,整合不同抽象级别的长文档中的信息。主要创新内容包括:
软聚类方法:允许文本块跨多个聚类,基于高斯混合模型(GMMs)和UMAP技术进行降维,以捕捉文本数据的复杂结构和关系,从而优化文本聚类效果。
递归的向量分析:精准地对文本块进行聚类,并提炼出这些聚类的核心摘要,自下而上地构建出一个结构化的树形模型。在此树中,相近的节点自然聚集形成兄弟关系,而它们的父节点则承载着整个集群的概要性文本信息。这种设计确保了文本信息的层次化和结构化表达,便于理解和检索。
在推理时,RAPTOR 模型从这棵树中检索,整合不同抽象级别的长文档中的信息,上层节点在处理主题或多跳查询时重要,全树搜索效果优于仅关注特定层的检索策略,体现了树结构在处理不同类型问题上的优势。RAPTOR 在结合不同检索器和语言模型时,均优于传统检索增强方法,在多个指标和任务上取得新的最优结果,具有计算效率高、能处理长复杂文本等优点。
|LightRAG: Simple and Fast Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2410.05779
代码地址:https://github.com/HKUDS/LightRAG
RAG系统存在显著的局限性,包括依赖于平面数据表示和缺乏足够的上下文感知能力,这可能导致答案碎片化,无法捕捉复杂的相互依赖关系。为了解决这些挑战,本论文提出了LightRAG,将图结构整合到文本索引和检索过程中。这一创新框架采用了双层检索系统,从低层次和高层次的知识发现中增强了全面信息检索。LightRAG 架构的核心内容包括:
基于图的文本索引:将文档分割,利用大语言模型识别和提取实体及关系,创建知识图谱。包括提取实体和关系、生成键值对和去重三个步骤,具有全面信息理解、增强检索性能和快速适应增量知识库等优势。
双层检索范式:生成详细和抽象级别的查询键,包括低层级检索特定实体及关系和高层级检索更广泛主题。通过结合图结构和向量表示,提高检索效率和结果相关性。
检索增强答案生成:利用检索信息和通用大语言模型生成答案,并整合上下文和查询,将用户查询与多源文本合并,LLM生成符合查询意图的信息性答案。
增量知识库的快速适应:当有新文档加入时,使用与之前相同的图基索引步骤处理新文档,生成新的知识图谱数据。将新知识图谱数据与原有知识图谱合并,实现新数据的无缝整合,避免重建整个索引图,减少计算开销,实现新数据的快速整合。
在大规模语料库和复杂查询中,基于图的 RAG 系统(如 LightRAG 和 GraphRAG)优于基于块的检索方法,LightRAG 在多样性指标上表现突出,且在处理复杂查询和提供全面信息方面优于 GraphRAG,LightRAG 在索引和检索过程中使用更少的Token和 API 调用,在增量数据更新阶段效率更高。
|Simple is Effective: The Roles of Graphs and Large Language Models in Knowledge-Graph-Based Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2410.20724
代码地址:https://github.com/Graph-COM/SubgraphRAG
目前基于知识图谱的 RAG 备受关注,但现有框架在检索有效性和效率的平衡上存在不足。知识图谱的图结构在组织知识方面具有优势,但从其复杂结构中检索信息面临挑战,如传统文本检索方法无法满足复杂推理任务需求,基于 KG 的 RAG 计算成本高,且提取的结构信息需平衡覆盖关键证据和不超出 LLM 推理能力。论文提出SubgraphRAG 框架,包括:
子图检索:将子图检索问题转化为可学习的分布问题,采用轻量级多层感知器(MLP)结合并行三元组评分机制,并通过方向距离编码(DDE)等技术提高检索效率和效果。检索的子图形式灵活、大小可根据查询和 LLM 能力调整。
LLM 推理:利用 LLM 对检索到的子图进行推理,通过将子图中的三元组线性化后融入提示,引导 LLM 基于子图进行推理和回答,并生成基于知识的解释。避免了对 LLM 的微调,保持了模型的通用性和对不同知识图谱的适应性。
在检索有效性上,SubgraphRAG 远超其他方法。如在处理 GPT-4o 标注的三元组时,RoG 性能大幅下降,而 SubgraphRAG 保持稳定,表明其三元组选择机制更灵活有效。在效率方面,虽比余弦相似度基线稍慢,但比其他基线快一到两个数量级,且在不同数据集间的泛化能力突出。在多跳推理问题上表现突出,能更好利用 LLMs 推理能力,在答案真实性评估和解释生成方面也表现优异。
|Iteratively Refined Early Interaction Alignment for Subgraph Matching based Graph Retrieval
论文链接:https://nips.cc/virtual/2024/poster/93261
代码链接:https://github.com/structlearning/isonetpp
基于子图同构的图检索在分子指纹检测、场景图检索和电路设计等领域有应用,但关键挑战是如何高效地对图进行评分。现有方法如 IsoNet 和 GMN 等存在不足,如 GMN 未明确推断对齐、注意力机制导致非单射映射和过平滑等问题,这促使研究新的方法。本论文提出一种用于基于子图同构的图检索的早期交互神经网络。在图检索任务中,需要从图集中识别出包含与给定查询图同构子图的图,而 IsoNet++ 通过创新的技术在该任务上取得了良好效果。核心内容如下:
子图同构与 Gromov - Wasserstein 距离优化:将子图同构任务表示为二次分配问题或 Gromov - Wasserstein 距离优化任务,通过特定公式计算成本和相关性距离,并可使用投影梯度下降更新对齐,但存在一些问题如无法捕捉密集特征的覆盖成本等。
IsoNet++(Node) 设计:包括节点对伙伴交互更新节点嵌入、多轮懒惰细化节点对齐、使用早期交互 GNN 更新节点表示以及基于远距离监督训练模型等步骤,还介绍了多层急切对齐变体及计算复杂度分析。
IsoNet++(Edge) 扩展:扩展 IsoNet++(Node) 到边缘对齐,包括多轮细化边缘对齐、边缘对齐诱导的早期交互 GNN 等部分,与节点版本类似但在嵌入和交互上基于边缘操作。
将对齐建模为显式数据结构,通过在两个输入图内和之间传递消息计算节点嵌入,并在多轮中懒惰更新对齐,每轮基于当前对齐状态运行分层 GNN,结束后更新对齐。考虑节点对(而非单个节点)作为潜在伙伴,利用节点对之间的边存在与否信息来细化对齐,使节点嵌入能捕获更多信息。结果发现IsoNet++(Node) 和 IsoNet++(Edge) 在所有数据集上显著优于基线方法,边缘对齐效果更好;懒惰多轮更新优于多层更新;节点对伙伴交互优于节点伙伴交互;多轮更新比多层更新更能有效细化对齐。
|Think-on-Graph 2.0: Deep and Faithful Large Language Model Reasoning with Knowledge-guided Retrieval Augmented Generation
论文链接:https://arxiv.org/abs/2407.10805v6
代码链接:https://github.com/IDEA-FinAI/ToG-2
LLMs在构建类似人类对复杂任务洞察力方面仍面临挑战,而解决这些任务往往需要有动机的、持续的努力来理解对象、数字、概念和事件之间的联系,以便预测它们的轨迹并有效行动。遇到的问题主要包括浅层相关性捕获,聚合多样化事实的困难,处理复杂逻辑的能力不足等等,为解决这些挑战,本文提出了Think-on-Graph 2.0 (ToG2.0),通过知识图谱引导的知识检索实现深度和可解释的推理。核心内容包括:
初始化:从问题中提取实体并链接到 KG,选择合适的主题实体,提取相关文档块,让 LLM 评估信息是否足以回答问题。
混合知识探索:包括知识引导的图搜索和知识引导的上下文检索两个主要部分。通过在 KG 上探索关系和实体,以及利用文档计算相关性得分,来迭代地协调和紧密耦合异构知识。
混合知识推理:在每次迭代结束时,用找到的所有知识提示 LLM 评估是否足以回答问题,若不足则继续检索或重构查询。
在多个知识密集型推理基准数据集和自建的 ToG-FinQA 数据集上进行评估,使用精确匹配(EM)和准确率(Acc)等指标,与多种方法比较,包括无外部知识的 LLM 方法、文本型 RAG、KG 型 RAG 和其他混合 RAG 方法。ToG-2 在多个数据集上优于其他基线方法,能提升较小模型的性能,在不同Baseline上也有良好表现。
ToG2.0有效地将文档中的非结构化知识与知识图谱中的结构化洞察力结合起来,作为增强复杂问题解决能力的路线图。通过将问题与知识图谱对齐并将其作为导航工具,深化并细化了RAG范式,不仅确保了事实一致性层面的语义相似性,还促进逻辑一致性层面的长距离关联。这种范式使LLM在推理和问题解决时更接近人类:检查当前线索并根据其现有的知识框架关联潜在实体,不断深入主题直到找到答案。
|CoTKR: Chain-of-Thought Enhanced Knowledge Rewriting for Complex Knowledge Graph Question Answering
论文链接:https://aclanthology.org/2024.emnlp-main.205/
代码链接:https://github.com/wuyike2000/CoTKR
在 RAG 范式下的 KGQA 任务中,关键挑战是将知识图谱中的子图转换为 LLMs 能理解的自然语言,即知识重写(KR),但现有方法存在冗余、遗漏和语义不匹配等问题。论文提出CoTKR 框架,主要内容包括:
CoTKR 方法:在问答框架中,从知识图谱检索问题相关子图后,知识重写器交替进行推理(分解问题确定所需知识)和总结(根据推理结果总结相关知识)操作,逐步生成知识表示。通过交替进行推理和总结操作,以交错方式生成推理痕迹和相应知识,提高知识表示质量,解决单步知识重写的局限性。
PAQAF 训练策略:包括两个阶段,第一阶段用 ChatGPT 生成的知识表示指导知识重写器的监督微调;第二阶段通过 PAQAF,即候选知识表示采样、基于问答反馈的偏好标注、基于 ChatGPT 的数据增强和直接偏好优化,来优化知识重写器。利用问答反馈来评估知识表示质量,构建偏好对并通过直接偏好优化(DPO)来优化知识重写器,缩小知识重写器和问答模型之间的偏好差距。
CoTKR 及 CoTKR+PAQAF 在多数评估指标和大语言模型上的表现优于其他知识重写基线方法,证明了其知识重写策略的有效性,偏好对齐策略(PAQAF)可缩小知识重写器与问答模型之间的偏好差距,增强知识表示的质量,进而提升问答性能。最后,精心设计的知识表示对 KGQA 中的大语言模型至关重要。
|Graph of Records: Boosting Retrieval Augmented Generation for Long-context Summarization with Graphs
论文链接:https://arxiv.org/abs/2410.11001
代码地址:https://github.com/ulab-uiuc/GoR
RAG 虽能通过检索文本块辅助总结,但现有方法未充分利用 LLM 生成的历史响应,这些响应包含潜在有价值信息。利用历史响应面临两个挑战:一是历史响应与文本之间的复杂隐式关联难以揭示,常用的文本嵌入方法在处理此类关联时性能不佳;二是长文本全局总结缺乏有效的监督信号,难以直接将全局参考摘要的监督信号反向传播到模型中以优化相关文本块的选择。论文提出GoR,核心内容包括:
图构建:首先使用 LLMs 基于长文档中的文本块模拟用户查询,生成有意义且多样的查询,避免使用 doc2query 方法的局限性。然后利用这些查询执行 RAG 操作,将检索到的文本块与相应的 LLM 生成的响应连接起来构建图,使历史响应成为连接文本块的桥梁,更好地探索它们之间的关联。
自监督训练目标:鉴于一些随机游走或传播算法不可微,采用图神经网络(GNNs)学习节点嵌入。受 BERTScore 启发,使用它对节点进行排序,使节点嵌入能从参考摘要的间接监督信号中受益。具体设计了对比损失和辅助成对排名损失,对比损失通过 InfoNCE 使查询与正样本在语义嵌入空间更接近,辅助成对排名损失对节点排名施加更严格约束。总体训练目标是两者之和,且该方法训练成本低,无需人工标注标签。
在 AcademicEval、QMSum、WCEP 和 BookSum 四个长文本总结数据集上进行评估,采用 Rouge-1、Rouge-2 和 Rouge-L 作为评估指标。按照 RAG 标准流程处理数据,如使用 TokenTextSplitter 分割文档,设置查询模拟和检索的相关参数等。与包括 Node2Vec、BM25、DPR 等 12 种基线方法进行比较,探索了多种 GNN 架构,发现图注意力网络(GAT)性能最佳,因其在更新节点嵌入时考虑了相邻节点的重要性,能有效捕捉节点的关键信息,而其他架构如 GraphSAGE 因邻居采样机制不稳定表现较差。通过增加训练时模拟查询的数量进行实验,发现随着模拟查询数量增加,R-L 指标呈上升趋势。对比了自监督训练和使用全局参考摘要的监督训练,结果表明自监督训练损失更低,因为全局参考摘要与许多节点相关性高,易使模型优化方向混淆,而自监督标签内容更聚焦,能更有效地引导模型优化。
|RAG-Instruct: Boosting LLMs with Diverse Retrieval-Augmented Instructions
论文链接:https://arxiv.org/abs/2501.00353
代码地址:https://github.com/FreedomIntelligence/RAG-Instruct
当前,大型语言模型通过文档检索与外部知识的整合来减少生成内容中的不准确或幻觉现象,并以此提升在特定任务上的性能。然而,现有的模型在覆盖检索增强生成(RAG)场景和任务多样性方面仍存在局限性。为了解决这些问题,论文引入了一种新的方法RAG-Instruct,旨在克服现有RAG技术在处理复杂、多样化场景及任务时的不足。核心内容包括:
定义多样化的RAG范式:确立了五种不同的RAG查询模式,以涵盖广泛的查询-文档关系,适应更多样化的应用场景。这些模式包括无文档查询、单文档支持查询、多文档支持查询、单文档答案查询以及多文档答案查询。
指令模拟技术的应用:通过利用已有的指令数据集(例如SlimOrca和Evol Instruct),开发了指令模拟技术,用以指导RAG指令的创建。这不仅丰富了合成数据的多样性,也提升了其质量。
大规模合成数据集的构建:基于Wikipedia语料库,构建了一个包含40,000个合成RAG指令的数据集。每个合成案例均涉及选择一个RAG范式、一条模拟指令以及一组源文档,并使用先进的GPT-4o模型生成相应的指令与回应。
在涵盖11项任务的实验中,包括知识密集型问答、多步推理和领域特定基准测试,采用零样本评估方式对模型进行了测试。结果显示,RAG-Instruct相较于多种基线模型,无论是闭源的大型语言模型(LLM),如GPT-4o及其迷你版本,还是开源的RAG模型(例如Llama系列)和指令调优模型(如Qwen2.5-7B-Instruct)均表现出色。尤其值得注意的是,在多个任务上,RAG-Instruct的表现超越了强大的闭源LLMs;而在所有四个类别任务中,特别是多跳推理任务和特定领域的任务上,它也优于专门设计的RAG模型。此外,相比开源的指令调优模型,RAG-Instruct同样展现了更佳的性能,证明了新构建的RAG指令数据集对于增强模型RAG能力的有效性。
|GNN-RAG: Graph Neural Retrieval for Large Language Model Reasoning
论文链接:https://arxiv.org/abs/2405.20139
代码地址:https://github.com/cmavro/GNN-RAG
知识图谱(Knowledge Graphs, KGs)通过三元组结构——即主体、关系和客体的组合,来表述由人工构建的事实性知识,并且这些三元组共同构成了一种图形化的知识表示。知识图谱问答系统(KGQA)的任务是依据知识图谱中编码的信息,对用户提出的自然语言问题作出回应。大型语言模型(Large Language Models, LLMs)因其卓越的自然语言处理能力,在回答问题方面表现出色,成为这一领域的前沿技术。同时,图神经网络(Graph Neural Networks, GNNs)也因为其处理知识图谱中复杂图形数据的能力而在KGQA中得到广泛应用。论文提出了GNN-RAG方法,核心内容包括:
GNN 部分:选用处理复杂图信息能力强的 GNN,通过节点分类优化参数,依据节点最终表示和概率阈值确定候选答案及推理路径,不同 GNN 因问题 - 关系匹配操作不同会获取不同路径,实验中训练了不同 LM 配置的 GNN 模型。
LLM 部分:将 GNN-RAG 获取的推理路径文本化后输入下游 LLM,针对 LLM 对输入提示模板和图信息文本化方式的敏感性,采用 RAG 提示调整方法对 LLaMA2-Chat-7B 模型微调。
用链接实体和 PageRank 算法提取子图,采用 ReaRev 进行 GNN 推理,RoG 进行 RAG 提示调整,用 Hit、Hits@1 和 F1 指标评估,在多跳和多实体问题上表现优异,GNN - RAG 比 RoG 在 F1 指标上有明显提升,GNN - RAG + RA 进一步提高性能,GNN - 检索更高效有效,结合 GNN 和 LLM 诱导路径的检索增强效果最佳,创新地结合了大语言模型的强大语义解析能力和图神经网络的推理优势,提供更精准、更智能的知识图谱问答解决方案。
|KnowTrace: Explicit Knowledge Tracing for Structured Retrieval-Augmented Generation
论文链接:https://openreview.net/pdf?id=F6rZaxOC6m
代码地址:https://github.com/xxrep/SRAG
LLM 在知识问答任务中表现出色,但在面对超出其知识边界的问题时会出现事实错误。检索增强生成(RAG)方法虽能通过检索信息增强 LLM 能力,但现有迭代 RAG 方法在处理多跳问题时,简单将检索文本累积到提示中,使 LLM 难以把握知识结构进行高质量推理。一些方法尝试重构检索文本,但存在计算开销大、可能丢失知识等问题。论文提出KnowTrace,核心内容包括:
总体框架:KnowTrace 将 LLM 视为主动知识组织者,通过知识探索和知识完成两个阶段迭代操作,追踪知识三元组以形成特定知识图谱,直至得出答案。同时,利用知识回溯机制过滤无关信息,提升模型性能。
知识探索阶段:利用 LLM 规划能力,根据当前知识图谱和输入问题判断是否已有足够信息回答问题。若否,则确定需要扩展的实体和关系,生成查询并检索相关文本。
知识完成阶段:基于检索到的文本和给定的实体-关系对,利用 LLM 语言理解能力提取关键知识,填充知识图谱。
知识提示策略:研究了三种将知识图谱信息融入 LLM 提示的策略,包括直接输入三元组、组合成路径和转换为文本,实验表明直接输入三元组(KG-To-Triplets)效果最佳。
在三个标准 MHQA 数据集上评估,采用精确匹配(EM)和 F1 分数作为指标,对比了多种先进的 RAG 方法,使用 LLaMA3-8B-Instruct 和 GPT- 3.5-Turbo-Instruct 作为基础 LLM,采用 BM25、DPR 和 Contriever 作为检索方法,并对不同配置进行了研究KNOWTRACE 通过显式知识追踪将知识结构与多步推理相结合,在多步推理和自学习微调方面表现出色,实验证明其优于现有 RAG 方法,为提升 LLM 推理能力提供了新途径。
|FiDeLiS: Faithful Reasoning in Large Language Model for Knowledge Graph Question Answering
论文链接:https://arxiv.org/abs/2405.13873
代码地址:https://anonymous.4open.science/r/FiDELIS-E7FC
大语言模型在复杂推理任务中易产生错误或 “幻觉” 响应,限制了其在高可靠性领域的应用。知识图谱存储高质量结构化知识,为提高语言模型推理可靠性提供了可能,但将知识图谱与推理模型有效整合面临数据稀疏、查询解释复杂和推理能力要求高等挑战。具体包括如何从知识图谱中准确检索知识以及如何让推理模型理解和利用检索到的知识两个主要问题。论文提出FiDeLiS 方法,核心内容如下:
Path-RAG 模块:通过预训练语言模型生成实体和关系的嵌入并存储在最近邻数据结构中。利用语言模型生成查询关键词,检索相关实体和关系,再基于相关性和邻居信息构建和评分推理步候选,确保高召回率检索和推理路径与知识图谱的有效连接。
DVBS 模块:促使语言模型生成规划步骤,利用束搜索迭代扩展推理路径,通过语言模型的演绎推理能力验证推理步骤和路径,确定何时停止推理,避免误导性推理链。
在三个数据集上的实验表明,FiDeLiS 优于包括基于 GPT-4-turbo 的强基线方法,在处理长尾实体和复杂查询方面表现出色。Path-RAG 和 DVBS 组件对 FiDeLiS 性能至关重要,去除任何一个都会导致性能显著下降,Openai-Embedding Model 作为 Path-RAG 的嵌入模型可提升性能,搜索宽度增加通常提高性能,深度超过 3 时性能可能下降。同时Path - RAG 比普通检索器有更高覆盖率和更好对齐,FiDeLiS 推理步骤有效性更高,推理深度更接近真实情况,在实际案例中也表现更好。Path - Rag 组件有助于提高准确性和效率,使用更快的语言模型可进一步加速。
精准定位,反省自明
摘要:
当任务涉及到从多个段落或文档中提取并综合信息时,RAG的表现尤为不尽如人意。由于缺乏有效的机制来理解各部分之间的逻辑关系,以及如何将分散的知识点有机地结合起来,RAG难以完成复杂的推理或总结工作。例如,在法律咨询、医学诊断等需要深入分析和精确结论的场景中,这一局限性就显得尤为突出。即使检索到了相关的文档,要在其中快速准确定位到最相关的句子或段落也并非易事。为了解决上述问题,一系列的RAG工作如Self-RAG通过检索和自我反思来提升语言模型的质量和准确性,它们有的可以按需自适应地检索文段,使用特殊标记来对检索到的文段及其自身生成的内容进行生成和反思,有的可以通过检索增强思维,在生成初始零样本思维链后,利用相关检索信息逐个修订每个推理步骤,确保思维链条严密可靠;还有借鉴人类长期记忆机制,结合LLMs、知识图谱和个性化PageRank算法,实现新旧知识的深度整合,使每条新知识都能找到最恰当的位置。值得一提的是,通过迭代生成和检索增强的自反馈机制的引入,成功促成了科研助手在实际场景中的落地应用。通过不断的持续学习和改进,相信RAG可以根据用户的需求提供更加精准、有效的服务。
|Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection
论文链接:https://arxiv.org/abs/2310.11511
代码地址:https://github.com/AkariAsai/self-rag
尽管 LLM 能力强大,但因其仅依赖自身参数化知识,常产生包含事实错误的回答。检索增强生成(RAG)方法虽能减少此类问题,但存在检索不灵活、无法保证输出与检索内容一致等缺陷。因此论文提出Self-RAG 框架,核心内容包括:
问题形式化与概述:给定输入,训练模型生成包含多个片段的文本输出,片段中的生成标记包括原始词汇和反射标记(Retrieve、ISREL、ISSUP、ISUSE),分别用于决定是否检索、评估检索内容相关性和支持度以及输出的有用性。
训练评论模型:利用 GPT-4 生成反射标记数据,初始化批评模型并在该数据上训练,使其能生成反射标记评估检索段落和任务输出质量。
训练生成器模型:基于原始输入 - 输出对,利用检索和批评模型扩充数据,训练生成模型预测目标输出和反射标记。
模型通过预测 Retrieve 决定是否检索文本段落,也可设置阈值触发检索;在检索时,利用生成的批判标记进行段级束搜索,根据批判标记类型的加权和更新段分数,可调整权重实现定制化行为或设置硬约束。通过按需检索和自我反思有效提高了 LLM 的质量和事实准确性,在多个任务上取得优异性能,并可在推理时定制模型行为。
|RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Horizon Generation
论文链接:https://arxiv.org/abs/2411.01751
代码地址:https://github.com/CraftJarvis/RAT
RAT是检索增强型思考(Retrieval-Augmented Thoughts)的简称,并不是一项新的技术,而是通过结合思维链(Chain-of-Thoughts, CoT)提示和检索增强生成(Retrieval-Augmented Generation, RAG),来解决长视野(Long-Horizon)推理和生成任务的一种方法。
RAT作为RAG和CoT的有机结合,其将思考作为查询(Thoughts as Queries),并通过逐步修正思考和生成响应的方式进行操作。RAT是一种Zero-Shot提示方法,拥有明显的优势,尤其在传统的CoT提示、RAG以及其他基线方法所面临的挑战中表现突出。这种方法在挑战性代码生成、数学推理、任务规划以及创意写作等方面都取得了显著的成果。
RAT(Retrieval-Augmented Thinking)过程是一个两阶段的迭代方法,核心内容包括:
信息检索与CoT修正:在这个阶段,LLM会基于任务提示生成一个初始的Zero-Shot思维链,这是一种未经训练直接尝试解决问题的方法。随后,对于由LLM生成的每一个中间思考或推理步骤,系统将问题或任务提示连同特定的推理步骤作为查询,从外部知识源中检索相关信息。这一步骤的关键在于动态地调整CoT,根据检索到的相关上下文信息对当前的推理步骤进行修改或细化。这一过程允许LLM将其获得的新信息融入到它的推理链条中,从而改进可能存在的不足或错误。
生成最终响应:在经过第一阶段的信息检索和CoT修正之后,LLM使用更新后的CoT步骤以及检索到的上下文来构建最终的响应或解决方案。这个输出是综合了LLM的推理能力和外部知识的结果,目标是给出一个既详尽又事实准确的答案。
通过这种方式,RAT不仅提升了LLM处理复杂问题的能力,还增强了其答案的事实准确性,使其能够更好地服务于需要精确信息的应用场景。
|HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models
论文链接:https://arxiv.org/abs/2405.14831
代码地址:https://github.com/OSU-NLP-Group/HippoRAG
哺乳动物大脑能存储大量知识并持续整合新信息,但当前的 LLMs 即使使用检索增强生成(RAG),在预训练后整合新经验方面仍存在困难。当前 RAG 方法在处理需要跨段落整合知识的任务时表现不佳,如科学文献综述、法律案例简报和医疗诊断等。HippoRAG 方法基于海马体记忆索引理论,核心内容包括:
离线索引:利用指令调整的 LLM(如 GPT-3.5-turbo-1106)作为人工新皮质,通过开放信息提取(OpenIE)从检索语料库的段落中提取名词短语节点和关系边缘,构建无模式的知识图谱(KG)作为人工海马体索引。同时,使用经过微调的检索编码器(如 Contriever 或 ColBERTv2)为 KG 中相似但不完全相同的名词短语添加额外的同义词关系边缘,以辅助下游的模式完成过程。
在线检索:基于 LLM 的新皮质从查询中提取一组显著的命名实体(查询命名实体),这些命名实体通过检索编码器与 KG 中的节点进行链接,选择与查询命名实体具有最高余弦相似度的节点作为查询节点。然后,以查询节点为种子,在 KG 上运行个性化 PageRank(PPR)算法,该算法仅通过一组用户定义的源节点在图上分配概率,使概率分布偏向于查询节点的相关邻居,从而识别出与查询相关的子图。最后,将 PPR 算法得到的节点概率与之前定义的包含名词短语在每个原始段落中出现次数的矩阵相乘,得到每个段落的排名分数,用于检索。
节点特异性改进:通过定义节点特异性为节点所在段落数的倒数,在运行 PPR 之前将每个查询节点概率与节点特异性相乘,以调整节点及其邻居的概率,进一步提高检索效果。
在 MuSiQue 和 2WikiMultiHopQA 数据集上,HippoRAG 显著优于所有基线方法,在 HotpotQA 数据集上也取得了可比的性能,与 IRCoT 结合时,在所有三个数据集上都带来了显著的性能提升,单步和多步检索性能的提升也带来了问答性能的提高,整体上在知识整合能力、效率提升和持续更新方面表现出优势。
|MemoRAG: Moving towards Next-Gen RAG Via Memory-Inspired Knowledge Discovery
论文链接:https://arxiv.org/abs/2409.05591
代码地址:https://github.com/qhjqhj00/MemoRAG
检索增强生成(RAG)虽可利用外部知识改善,但传统 RAG 系统要求信息需求明确和知识结构良好,难以应对现实中模糊信息需求或非结构化知识的任务。如理解书籍中人物关系等任务,需先识别关键信息再检索相关内容,传统 RAG 在此类任务上表现不佳,即在处理长期信息上存在局限,尤其是在需要持续记忆和动态更新知识的复杂场景中表现欠佳。
论文提出MemoRAG,采用双系统架构,用轻量级但长程的 LLM 构建数据库全局记忆,任务来时生成草稿答案引导检索;再用表现力强的 LLM 基于检索信息生成最终答案。核心结构包括:
记忆模块:将输入Token压缩为记忆Token,引入特殊权重矩阵处理,实现从短期到长期记忆的转换,且在训练中更新相关权重矩阵,包括预训练和监督微调两个阶段,目标是最大化下一个Token的生成概率。
流程优化:先将输入序列转化为紧凑记忆表示,用其生成任务特定线索,再用独立检索器定位证据文本,最后由生成模型基于检索证据生成最终答案。
可处理信息需求模糊、需分布式证据收集和信息聚合等任务,还能应用于个性化助手、终身对话搜索等场景,通过分析相关历史信息提供更准确结果。
|FoRAG: Factuality-optimized Retrieval Augmented Generation for Web-enhanced Long-form Question Answering
论文链接:https://arxiv.org/abs/2406.13779v1
代码地址:https://huggingface.co/forag
RAG通过结合LLMs和检索器,利用搜索引擎增强了长篇问答(Long-form Question Answering)的质量。尽管存在多种开源方法和商业系统,如Bing Chat,但生成的长形答案中存在两个关键问题:事实性不足和逻辑清晰度不够。针对这些问题,本论文提出了FoRAG 框架,核心内容包括:
大纲增强生成器(Outline - Enhanced Generator):采用两阶段生成,先生成大纲再扩展为完整答案,包括大纲阶段和扩展阶段。通过设计的模板引导语言模型确定组织结构和大纲要点,然后基于大纲生成最终答案。训练采用标准监督微调(SFT)程序,并构建了相应的双语数据集。
事实性优化方法(Factuality Optimization):基于双细粒度 RLHF 框架,包括细粒度评估和奖励建模两个核心步骤。评估考虑整体、句子和子声明三个层次,奖励建模有序列级和标记级两种粒度,通过多种组合方式优化生成模型,缓解了传统 RLHF 的稀疏反馈信号问题,且统一了现有细粒度 RLHF 工作。
通过广泛的实验,验证了所提出的事实性优化RAG(FoRAG)方法在英文和中文基准测试中的优越性。特别是,当将该方法应用于Llama2-7B-chat时,得到的模型FoRAG-L-7B在连贯性、有用性和事实性这三个常用指标上超过了WebGPT-175B,而FoRAG-L-7B的参数数量仅为WebGPT-175B的1/24。
|GasketRAG: Systematic Alignment of Large Language Models with Retrievers
论文链接:https://openreview.net/pdf?id=TqLY7QoELU
代码地址:https://anonymous.4open.science/r/9668
检索器和 LLMs 通常分别训练,二者存在脱节现象。检索器基于人类偏好训练,其检索和排序文档的方式与人类习惯相符,但与 LLMs 偏好不完全一致;检索结果常含无关信息,LLMs 对此较为敏感;同时,检索器和 LLMs 在处理查询和文档时都有自身偏好偏差,这些因素影响了 RAG 系统的整体性能,形成偏好差距。以往提高 RAG 性能的工作多侧重于改进检索器检索相关文档的能力或精炼检索文档以去除噪声,且多基于人类偏好,忽视了检索器和 LLMs 自身偏好。论文提出GasketRAG,核心内容包括:
中间引入:在检索器和 LLMs 间引入 Gasket 模型,收集两者偏好数据离线训练该模型。检索时,检索器返回 Top-k 段落,Gasket 模型筛选相关句子增强查询,再次检索后再次筛选,最终将结果输入 LLMs 生成答案。
偏好收集:分别学习 LLMs 和检索器的偏好,将偏好标签扩展为四值系统以整合两者偏好,避免噪声。
Gasket 优化:以提供符合 LLMs 和检索器偏好的知识与背景为目标,采用加权 Kahneman-Tversky 优化(KTO)方法,利用句子 ID 作为信息瓶颈优化模型。
在六个数据集上评估,用 TriviaQA 和 HotpotQA 训练数据收集偏好数据,以 Accuracy 和 Correctness 为指标,使用多种基线方法对比。GasketRAG 在多数测试集和指标上优于已有 RAG 方法,具有良好稳定性和泛化性;偏好训练、加权 KTO 能提升性能,模型和训练数据规模缩放显示其高效性,两次迭代时性能最佳,延迟略高于部分方法但 1-Iteration Gasket 性能较好。
|TC-RAG: Turing-Complete RAG's Case study on Medical LLM Systems
论文链接:https://arxiv.org/abs/2408.09199
代码地址:https://github.com/Artessay/TC-RAG
现有的RAG(Retrieval-Augmented Generation)方法通常没有考虑系统状态变量的管理,这些变量对于实现自适应控制、检索终止和系统收敛性是至关重要的。本文中,作者通过严谨的理论证明,引入了一个新的框架——图灵完备的RAG(Turing-Complete RAG, TC-RAG),该框架利用图灵完备性的概念来处理状态变量,以达成更高效且精确的知识检索。核心内容包括:
内存堆栈系统:该系统具备自适应检索、推理以及规划的能力。通过这种集成,TC-RAG 能够有效地管理系统的状态变化,确保检索过程可以依据预设条件或动态环境适当地停止。此外,借助于内存堆栈的Push和Pop操作,TC-RAG 有助于防止错误信息在系统中的积累,保证了知识检索的质量和准确性。
图灵完备性证明:通过构建与标准图灵机 T 的对应关系,证明 TC 可以模拟 T 的每一步计算,且在接受或拒绝输入时与 T 保持一致,从而证明 TC - RAG 是图灵完备的。
此框架的设计不仅增强了RAG模型的灵活性和功能性,还为解决复杂问题提供了更加坚实的理论基础。通过这种方式,TC-RAG 不仅提高了知识检索的效率和正确性,还为未来研究和发展提供了一条新路径,特别是对于那些需要强逻辑处理和状态跟踪的应用场景。
|OpenScholar: Synthesizing Scientific Literature with Retrieval-augmented LMs
论文链接:https://arxiv.org/abs/2411.14199
代码地址:https://github.com/AkariAsai/OpenScholar
虽然LLM在成为科研助手方面非常有前景,但也面临着重大挑战,包括幻觉、过于依赖过时的预训练数据,并且缺乏透明的信息出处,条条对科研领域都是重大弊病。实验中让GPT-4引用最新文献时,它在CS、生物医学等领域伪造引用的情况达到了78%~90%。因为许多此类系统依赖于黑盒API或通用的LLM ,既没有针对文献综合的任务进行优化,也没有搭配适合科研的开放式、领域特定的检索数据库,并且LLM在科研文献综合任务上的评估也存在限制,现有的基准大多规模较小或只针对单个学科,或者使用了过于简化的任务(如选择题问答),导致整体的效果很差。论文提出了OpenScholar模型,给定科学查询,识别相关论文,综合其研究结果,并生成包含引用的回答,以确保回答的可靠性和可追溯性,核心内容包括:
模型结构:由数据存储、检索器和大语言模型三个关键组件组成。其中数据存储包含 4500 万篇开放获取的科学论文及相应的嵌入;检索器包括双编码器检索器和交叉编码器重排序器,用于筛选相关段落;生成器语言模型则负责根据检索到的段落和输入查询生成回答和引用。
推理过程:采用迭代生成和检索增强的自反馈机制。首先,大语言模型根据输入查询和检索到的段落生成初始响应和反馈;然后,根据反馈进行迭代优化,如有需要还会进行额外检索;最后,对引用进行验证,确保引用的准确性和相关性。
训练方法:利用推理管道合成高质量的训练数据。通过选择高引用论文、生成查询和使用 OpenScholar推理管道生成响应,再经过数据过滤和混合等步骤,训练生成器 LM。训练数据包括答案生成、反馈生成和反馈整合等类型,并混合了通用领域和科学领域的指令调优数据。
同时论文提出了SCHOLARQABENCH 基准,旨在评估模型理解和综合现有研究的能力,涵盖计算机科学、物理学、神经科学和生物医学四个学科。包括对现有单篇论文数据集的整理和改编,以及由博士专家标注的新数据集,任务形式多样,包括封闭式分类、选择题和长篇生成等。评估指标包括正确性(Corr),通过与人类标注的参考答案对比评估模型生成答案的准确性;引用准确性(Cite),衡量模型引用的准确性和相关性;内容质量和组织(LLM,Expert),从相关性(Rel)、覆盖度(Cov)、组织和写作流畅性(Org)等方面评估答案质量,部分任务还评估总体有用性(Use)。
在 SCHOLARQABENCH 基准上,OPENSCHOLAR-8B 在正确性方面优于 GPT-4o 和 PaperQA2 等模型,且引用准确性与人类专家相当。在多论文任务中,OPENSCHOLAR 与 GPT - 4o 结合使用可显著提高 GPT-4o 的正确性,同时 OPENSCHOLAR-8B 的成本远低于 PaperQA2 等系统。
|iText2KG: Incremental Knowledge Graphs Construction Using Large Language Models
论文链接:https://arxiv.org/abs/2409.03284
代码地址:https://github.com/AuvaLab/itext2kg
大多数数据是无结构的,传统的自然语言处理(NLP)方法如命名实体识别和关系抽取在构建知识图谱时面临诸多限制,如依赖预定义实体类型和监督学习。大语言模型的出现为知识图谱构建带来了新的机遇,但仍存在未解决的问题,如语义重复的实体和关系以及主题依赖性。本文引入RAG,实现一种增量式、主题独立的 KG 构建方法,无需后期处理,该方法被称为iText2KG,主要内容包括:
文档提炼器(Document Distiller):使用 LLM 根据预定义的模式或蓝图将输入文档重写为语义块,以提高信噪比并指导图谱构建过程,在不同文档类型上表现出较高的模式一致性和信息一致性。
增量实体提取器(Incremental Entities Extractor):迭代语义块提取全局文档实体,通过与已有实体匹配和相似度计算解决实体歧义问题,在不同知识图谱构建场景下实体解析效果良好。
增量关系提取器(Incremental Relations Extractor):根据全局或局部文档实体作为上下文提取全局文档关系,不同上下文会导致关系提取的不同行为,存在精度和丰富度的权衡。
图谱集成器(Graph Integrator):将提取的全局文档实体和关系输入 Neo4j 构建知识图谱。
文档提炼器在不同文档类型上的模式一致性和信息一致性较高;在关系提取方面,全局实体作上下文时提取的关系更丰富但相关性低,局部实体作上下文时精度更高,在实体 / 关系解析上,iText2KG 方法在iText2KG 在将科学论文、网站和简历转换为图谱的三个场景中都表现出了优于基准方法的性能,同时解决了其他方法中常见的语义重复和未解决实体的问题。
|Corrective Retrieval Augmented Generation
论文链接:https://arxiv.org/abs/2401.15884
代码地址:https://github.com/HuskyInSalt/CRAG
检索增强生成(RAG)虽有帮助,但依赖检索文档的相关性,若检索出错会影响模型表现。多数传统 RAG 方法未考虑检索错误情况,且对检索文档利用不合理。论文提出CRAG 方法,核心内容包括:
模型推理概述:构建轻量级检索评估器估计检索文档与输入查询的相关性得分,量化为三个置信度(Correct、Incorrect、Ambiguous)并触发相应动作,优化检索结果后采用生成模型生成响应。
检索评估器:采用 T5-large 初始化并微调,利用现有数据集收集相关性信号和负样本,评估检索质量,相比 Self - RAG 的评估器更轻量级。
动作触发:根据置信度得分设置上下阈值,触发不同动作。Correct 表示有相关文档,需进一步提炼知识;Incorrect 表示检索文档无关,需进行网络搜索获取知识;Ambiguous 则结合前两者处理方式。
知识提炼:对检索到的相关文档进行分解 - 重组操作,将其分割为内部条带,计算相关性得分后过滤无关条带并重组为内部知识。
网络搜索:当检索结果无关时,利用 ChatGPT 将输入重写为关键词查询,通过网络搜索获取外部知识,并采用知识提炼方法处理。
CRAG 作为一个即插即用的插件,可以显著提升检索增强生成 (RAG) 的性能,并提供了一个轻量级的解决方案来优化信息检索的质量。
规矩之内,细致拆解
摘要:
|RuleRAG: Rule-guided retrieval-augmented generation with language models for question answering
论文链接:https://arxiv.org/abs/2410.22353
代码地址:https://github.com/chenzhongwu20/RuleRAG_ICL_FT
大模型在知识密集型任务中存在不足,如存储知识成本高、处理细粒度查询困难。检索增强生成(RAG)框架作为补充出现,但现有方法在检索和生成阶段存在缺陷,如检索不精准、未合理利用检索内容,逻辑规则可引导人们完成任务,受此启发提出 RuleRAG 方法,方法包括:
RuleRAG-ICL:核心所在,在检索和推理时用查询和规则进行上下文学习。检索时,根据查询关系选规则,将查询和规则组合检索相关文档;生成时,用检索文档、规则和查询构建指令提示 LLM 生成答案。
RuleRAG-FT:通过规则引导微调(RGFT)更新检索器和生成器。检索器微调用查询加规则作输入和启发式检索示例作标签;生成器微调用检索结果、规则和查询作输入及正确答案作监督。
RuleRAG 在不同的语言模型(如 ChatGLM2-6B、Mistral-7B_v0.2、LLAMA2 系列、GPT-3.5-Turbo 等)和检索器(如 DPR、SimCSE、BM25 等)上均有效,且 RuleRAG-FT 通常比 RuleRAG-ICL 表现更好。同时,对于相同架构的语言模型,较大模型(如 LLAMA2-13B)在 RuleRAG 方法下通常比小模型(如 LLAMA2-7B)表现更好。RuleRAG 对可能不需要规则指导的查询也具有鲁棒性,对未训练规则具有泛化能力。
|Auto-RAG: Autonomous Retrieval-Augmented Generation for Large Language
论文链接:https://arxiv.org/abs/2411.19443
代码地址:https://github.com/ictnlp/Auto-RAG
RAG 虽用于知识密集型任务可提高输出质量并减少幻觉,但存在检索内容有噪声、复杂查询难以一次获取足够知识等局限。迭代检索被提出,但现有方法多依赖少量示例提示或手动规则,忽视了 LLM 的推理能力,增加了推理开销。论文提出Auto-RAG,核心内容如下:
基于推理的迭代检索:将迭代检索视为 LLM 和检索器的多轮交互。对于原始数据集中的每个输入-输出对,旨在构建指令数据集合,使 LLM 在迭代检索中能推理和优化查询以得出正确答案。在每次迭代中,Auto-RAG 依据当前状态进行推理,判断是否需要额外检索及所需的具体信息,直至获取足够知识生成最终答案。此过程包含检索规划、信息提取和答案推理三种类型的推理,通过少样本提示引导 LLM 进行推理和查询优化,并对生成的推理和查询进行数据过滤和格式化,以确保数据质量和连贯性。
现实推理:训练后的 Auto-RAG 在迭代检索中能基于推理自主决定何时检索及检索什么内容,接收用户问题并生成推理和规划输出。在 T 次迭代中,若前一次迭代输出包含查询,则利用该查询进行检索,并将检索到的文档作为输入生成本次迭代的输出;若前一次迭代输出包含最终答案,则结束迭代并返回答案。若与检索器交互 T 次后未终止,会利用生成的查询促使自身创建文档作为下一次迭代的输入;若再经过次迭代仍未终止,则提供无检索的答案给用户。
聚焦于问答任务,在六个代表性基准测试上进行实验,使用来自 Natural Questions 和 2WikiMultihopQA 数据集的 10,000 条推理指令训练 Auto-RAG,采用 Llama-3-8B-Instruct 合成推理过程,Qwen1.5-32B-Chat 生成改写查询,并使用 E5-base-v2 作为检索器,2018 年维基百科作为检索语料库,与无检索、单次检索和多次检索的多种方法比较,Auto-RAG 在所有数据集上均取得优异性能,超越其他迭代检索方法。其优势在于能自主确定检索时机和内容,通过推理优化检索策略。
论文链接:https://arxiv.org/abs/2406.13372
代码地址:https://kkk-an.github.io/thread.github.io/
最近在检索增强生成领域取得的进展显著提高了问答系统的性能,特别是对于事实型的“5W”问题。然而,这些系统在解决“1H”问题,特别是如何问题时仍然面临着重大挑战,这些问题对于决策过程至关重要,需要动态、逐步的答案。关键限制在于流行的数据组织范式,即块,它将文档分割为固定大小的段落,破坏了上下文中的逻辑连贯性和连接性。论文提出Thread,核心内容包括:
逻辑单元:作为 THREAD 的检索单元,由前提条件(Prerequisite)、头部(Header)、主体(Body)、链接器(Linker)和元数据(MetaData)五个关键组件构成。根据处理的问题类型可分为步骤(Step)、术语(Terminology)、常见问题(FAQ)和附录(Appendix)四种类型。不同组件和类型协同工作,为处理 “how - to” 问题提供了更具逻辑性和连贯性的信息结构。
基于 LU 的知识库构建:将文档转换为 THREAD 的过程分两步。首先是文档重构(可选),针对格式混乱的文档,利用大语言模型(LLM)将其转换为结构化格式;然后进行 LU 提取和合并,根据内容提取不同类型的 LU,并对相似的 LU 进行合并,最终形成知识库。在文档更新时,依据元数据识别并替换过时的 LU。
与问答系统集成:在回答 “how - to” 问题时,检索器根据 LU 头部与查询的相似度检索相关 LU,选择器依据前提条件筛选,筛选后的 LU 主体被送入基于 LLM 的生成器生成答案。执行动作后,链接器根据结果生成新查询进行下一轮检索,实现动态交互,且在与执行引擎集成时可实现自动化。
在 Mind2Web、Incident Mitigation 和 Wikipedia Instructions 数据集上,THREAD 均优于现有范式。在处理 “how-to” 问题的成功率上,比其他方法提高了 21%-33%,在不同场景下的各项评估指标上都表现更优,如在 Mind2Web 中提升了元素准确率等指标,在 Incident Mitigation 中显著提高了成功率,在 Wikipedia Instructions 中无论是单轮还是多轮交互,都取得了更高的成功率。
论文链接:https://arxiv.org/abs/2410.08815
代码地址:https://github.com/Li-Z-Q/StructRAG
RAG 方法在知识密集型推理任务上表现不佳,因其所需信息分散,难以准确识别和整合。本论文借鉴了人类处理复杂推理任务时的方式。人类通常不会不同于简单阅读散乱的原始内容,而是会将这些信息信息汇总成结构化知识,再利用这些结构化信息进行思考推理。StructRAG 的核心内容包括:
混合结构路由器(Hybrid Structure Router):根据问题和文档核心内容确定最合适的结构类型,如表格、图、算法等,通过 DPO 算法训练,并使用合成 - 模拟 - 判断方法构建偏好训练数据。
分散知识结构化器(Scattered Knowledge Structurizer):基于选定的结构类型,将原始文档中的文本知识提取并重构为结构化知识,利用 LLMs 的能力处理复杂信息。
结构化知识利用器(Structured Knowledge Utilizer):分解复杂问题,从结构化知识中提取精确信息,并进行推理得出最终答案。
在多数任务和文档长度设置下优于基线方法,在复杂任务和信息分散场景中优势更明显。例如在 Loong 基准测试中,StructRAG 在不同数据集上的 LLM 分数和精确匹配率均超过基线方法,在 Podcast Transcripts 上也取得最佳平均性能。
论文链接:https://arxiv.org/abs/2410.1782
代码地址:https://github.com/ShayekhBinIslam/openrag
在各种知识密集型的单跳/多跳短文/长文推理任务上,现有的RAG方法在使用开源LLMs处理复杂查询时,表现出有限的推理能力。本论文提出了一个名为OPEN-RAG的新框架,旨在提高开源LLMs在RAG中的推理能力。利用多种任务和数据集构建训练数据,对原始数据对扩充反射Token,依检索Token情况进一步处理,为不同类型查询设计启发式方法创建监督数据,将密集 LLM 转换为参数高效的稀疏专家混合(MoE)模型,能处理单跳和多跳查询,通过特殊反射Token控制模型行为,训练时学习生成检索相关Token,推理时依此和模型置信度决定是否检索及处理检索内容框架,核心内容包括:
参数高效 MoE 微调:根据任务复杂性将模型转换为 MoE 架构,采用稀疏上循环技术添加少量适配器参数,训练时学习选择性激活专家,冻结部分层仅训练适配器模块。
混合自适应检索方法:基于模型置信度提出含两个阈值的方法确定检索必要性,训练时学习生成检索反射Token,推理时测量无检索设置下输出置信度并与阈值比较,依结果检索和处理。
在无检索基线对比中,OPEN-RAG 性能优于所有监督微调的 LLM,在多跳推理任务中表现突出,在有检索基线对比中,除个别任务外,OPEN - RAG 优于现有开源 RAG 模型,在复杂多跳数据集上表现优于专有 RAG-ChatGPT,在长形式生成中也具竞争力,OPEN-RAG 的自适应检索方法在确定检索时机上更优。
论文链接:https://arxiv.org/abs/2408.08444
代码地址:https://github.com/jmnian/weak_label_for_rag
在开放领域问答等知识密集型任务中,RAG生成系统通过外部信息检索来强化模型,使检索器成为核心组件。尽管密集检索性能卓越,但其训练因缺乏真实证据而受阻,主要原因是人工标注成本高昂。同时现有训练密集检索器的方法虽能找到相关段落,但不能保证提高 RAG 在 OpenQA 中的性能。本文提出 W-RAG,利用模型排序能力为密集检索训练生成弱标签数据。主要内容包括:
弱标签生成:先用简单检索器(如 BM25)从证据库中检索出与问题相关的前 K个段落,然后将每个段落与问题组合,根据 LLM 基于问题 - 段落对生成正确答案的可能性对段落重新排序,选择排名最高的段落作为正例,其相关性得分通过计算答案的对数似然得到。
训练密集检索器:可以使用生成的弱标签训练任何密集检索器,本文研究了 DPR 和 ColBERT 两种。DPR 采用双编码器架构,通过余弦相似性计算相关性得分,并使用多负例排名损失进行训练;ColBERT 采用双编码器架构和后期交互机制,训练数据由三元组样本组成,使用成对 Softmax 交叉熵损失进行优化。
W-RAG 框架通过利用 LLM 排名能力从问答对中提取弱标签,有效提高了检索和 OpenQA 性能。未来将探索增强 RAG 性能的段落类型、研究检索段落压缩方法及提高 RAG 系统在 OpenQA 中的鲁棒性。
论文链接:https://arxiv.org/abs/2406.12430
代码地址:https://github.com/myeon9h/PlanRAG
在许多商业情境中,决策至关重要,但传统决策支持系统中最困难的规划步骤通常由人类负责。本文旨在探索用 LLM 取代人类进行决策的可能性,包括规划、数据检索和决策三个步骤。论文定义了决策问答(Decision QA)任务及基准 DQA,即根据决策问题Q、业务规则R和数据库D,确定最佳决策。提出了一种新的检索增强生成技术——迭代计划后检索增强生成(PlanRAG)。与现有 RAG 技术不同,PlanRAG 让 LLMs 通过两种类型的推理来回答最佳决策。它基于一个能执行规划和基于检索结果推理的单一 LLM,通过在 ReAct 基础上添加Plan和Re-plan指令进行提示,减少使用多个 LLMs 的副作用。核心内容包括:
规划:LLM 以 <Q, S, R> 为输入,生成数据分析的初始计划。该计划描述了决策所需的一系列数据分析步骤,为后续检索提供指导。例如在定位(Locating)场景的贸易节点选择问题中,会确定需要查找哪些数据以及如何分析,如识别目标节点的源节点、计算潜在利润增长等步骤。
检索与回答:LLM 不仅将 <Q, S, R> 作为输入,还结合初始计划,从而能更有效地生成决策所需的数据分析查询。这些查询通过 SQL 或 Cypher 在数据库中执行,查询结果用于判断是否需要重新规划或进一步检索以做出更好决策。在此过程中,规划和检索步骤会迭代进行,直至 LLM 确定无需进一步分析即可做出决策。
重新规划:当最初的计划不足以解决决策问题时进行重新规划。通过特定指令提示 LLM 参考每次检索步骤的结果来评估当前计划,此时 LLM 以 <Q, S, R>、当前计划和查询结果为输入,生成新计划以进行进一步分析或纠正先前分析的方向。
PlanRAG 在定位和构建场景分别比现有 RAG 方法准确率均有所提高 。在不同难度问题、数据库类型、数据缺失分析率、重规划情况和错误类型等方面,PlanRAG 均表现出优势或揭示了重要信息。
论文链接:https://arxiv.org/abs/2403.14403
代码地址:https://github.com/starsuzi/Adaptive-RAG
开放域问答一般涉及检索器和阅读器两个模块,LLMs 与检索器的结合在一定程度上提升了开放域问答的性能,但对于复杂查询仍需更复杂的策略。多跳问答是传统开放域问答的扩展,需要系统从多个文档中收集和整合信息,但现有的方法忽略了查询的多样性,对每个查询都进行迭代访问可能效率低下。自适应检索旨在根据查询的复杂性动态决定是否检索文档,但现有的自适应检索方法仍存在不足,要么过于简单,要么过于复杂。整体来说,现有的方法在处理简单或复杂查询时存在不足,要么对简单查询造成不必要的计算开销,要么无法充分处理复杂的多步查询。论文提出Adaptive-RAG 方法,核心内容包括:
适应检索增强的 LLMs:根据查询的复杂性动态调整检索增强 LLMs 的查询处理策略,涵盖从非检索到单步检索再到多步检索的方法。
查询复杂性评估:通过训练一个较小的语言模型作为分类器,预测查询的复杂性级别,分为简单(A)、中等(B)和复杂(C)三个级别。
训练策略:基于三种不同的检索增强 LLM 策略的结果和数据集的固有偏差自动构建训练数据集,使用交叉熵损失训练分类器。
通过案例对比了 Adaptive - RAG 和自适应检索方法,结果表明 Adaptive-RAG 能够更准确地处理简单和复杂查询,提高了问答系统的整体性能。
论文链接:https://arxiv.org/abs/2406.05085
代码地址:https://github.com/spcl/MRAG
大语言模型虽有成果,但存在训练成本高、易泄露数据、幻觉等问题。RAG 通过检索相关文档为 LLM 提供信息,现有 RAG 方案未关注需检索多方面内容文档的查询,这些查询常见但具有挑战性,因为相关文档的嵌入在嵌入空间中可能相距较远。
论文提出Multi-Head RAG 方法,摒弃标准 RAG 中使用最后一层解码器激活向量作为嵌入的做法,改为利用解码器块多头注意力层在处理最后一个 token 时生成的多个激活向量作为嵌入。这些激活向量来自不同的注意力头,每个头可学习捕获数据的不同方面,从而更全面地表示数据和查询的多面性,且在空间需求上与标准 RAG 相同。同时提出了一套全面的评估方法学和指标,包括合成数据集和真实世界用例,展示了MRAG的有效性。核心内容包括:
数据准备:用支持多头注意力的嵌入模型为文本块创建多方面嵌入,并将其与对应文档或文本块存入数据存储。与标准 RAG 不同,Multi-HeadRAG 的每个多方面嵌入由多个单一方面嵌入组成,每个单一方面嵌入都指向原始文本块,数据存储包含多个嵌入空间,分别捕捉文本的不同方面。
查询执行:首先使用选定模型生成查询的多方面嵌入,然后利用特殊的多方面检索策略在数据存储中查找最近的多方面嵌入及其对应的文本块,最后还可用新设计的指标评估检索结果与多方面要求的契合度。
论文链接:https://arxiv.org/abs/2408.04187v2
代码地址:https://github.com/SuperMedIntel/Medical-Graph-RAG
大语言模型在医学领域面临挑战,如知识难以融入有限的上下文窗口,且医学需要精确术语和准确回应。传统 RAG 及 GraphRAG 在医学应用中存在不足,纯GraphRAG 缺乏确保响应可信度的设计且构建复杂。
本论文提出MedGraphRAG,一个创新的医疗信息检索架构。将图结构与大语言模型结合,以提高医疗诊断的准确性、透明度和临床工作流程集成度,并通过分层图结构和U-检索策略增强信息检索能力,核心内容包括:
医学图构建:采用混合方法进行语义文档分块;提取实体并标注相关信息;通过 Triple Graph Construction 将用户文档与可信医学源及受控词汇相连;识别并链接实体间关系,形成有向图。
图标记与组织:用预定义医学标签总结图,通过聚类形成多层层次标签结构,便于检索。
U-Retrieval 检索策略:结合自上而下精确检索和自下而上响应细化,先基于标签相似性找到相关图和实体,生成初始响应,再逐步整合高层标签完善答案。
MedGraphRAG 显著优于经典 RAG 和 GraphRAG,在长文本生成评估中也表现更好,人类评估显示其响应更可靠、易懂。
RAG在处理和整合多个检索到的文档片段时,由于需要大量的计算资源来计算注意力分数并管理缓存,导致效率较低。此外,检索系统并非总是完美无瑕,可能会引入不相关或干扰性的内容。过多的检索信息可能加重系统负担,增加计算成本,从而影响生成结果的质量。同时,RAG与大语言模型之间的交互通常遵循流水线架构,各组件独立运作,这种碎片化的操作方式带来了诸如组件间知识传递困难、LLM能力整合不足以及实现复杂性高等问题,最终可能导致性能不佳。同时,现有的RAG系统大多依赖于大语言模型,在资源有限的环境中部署变得尤为困难。针对RAG的应用问题需要进行降本增效,相应的工作也应运而生,例如在每次推理时不再实时计算KV缓存,而是利用预先计算好的缓存进行高效预填充,以避免重复在线计算带来的资源浪费;通过基于词汇和信息论的方法识别上下文的重要性,充分利用现代密集检索系统将文档内容提炼为单一高维嵌入,使其包含的信息量与文本内容相匹配,同时为了提高集成度,可以将信息检索系统的索引、检索和重排序功能整合进单个LLM中,实现端到端的信息检索过程。在部署模型时,通过查询引导的推理和异构图索引方法能够有效处理多约束查询,克服局限性。所有的优化策略旨在减少计算开销,提升检索精度,加强LLM与其他组件之间的协同作用,在资源受限的情况下也能保证高质量的结果产出。
|TurboRAG: Accelerating Retrieval-Augmented Generation with Precomputed KV Caches for Chunked Text
论文链接:https://arxiv.org/abs/2410.07590
代码地址:https://github.com/MooreThreads/TurboRAG
RAG 系统面临的一个主要挑战是首次Token时间(TTFT)的高延迟。这种延迟主要是由于需要大量计算来处理和连接多个检索到的文档块。此外,检索到的文档的键值(KV)缓存的重复计算进一步加剧了这种低效率。在传统 RAG 中,计算预填充时使用查询和连接的文档块,在解码时计算注意力分数并存储 KV 缓存。与传统方法不同,TurboRAG 在每次推理时不再计算这些 KV 缓存,而是检索预先计算的缓存以进行高效的预填充,从而消除了重复在线计算的需要。这种方法显著减少了计算开销,加快了响应时间,同时保持了准确性。
TurboRAG 的架构设计基于一个两阶段流程来提高效率和性能,核心内容包括:
离线准备阶段:TurboRAG 会预先计算文档片段的键值(KV)缓存并加以存储。这一过程旨在为在线推理阶段减轻计算负担,通过提前处理信息,确保实时查询时能够快速响应。
在线交互阶段:当系统接收到用户查询时,它会调用事先准备好的 KV 缓存数据,并将这些信息与用户的实际查询相结合,以此来构建出精准的回答。为了优化这个过程,TurboRAG 使用了专门设计的注意力掩码,避免了不同文档间的不必要注意力分散,同时结合相对位置嵌入技术,以维持文档内容中原始的位置关系不变。
这种混合模式使得 TurboRAG 能够与传统的 RAG 系统无缝集成,在无需对现有基础设施做出重大调整的情况下,即可便捷地部署和使用,从而提升了系统的灵活性和适应性。
|Learning to Filter Context for Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2311.08377
代码地址:https://github.com/zorazrw/filco
在开放域问答和事实核查等任务中,检索相关知识对可靠系统至关重要,但检索系统不完美,会使生成模型面临无关或干扰内容,导致生成结果出现问题,本文提出一种过滤策略,基于词汇和信息论方法识别有用上下文,称为FILCO 方法,核心内容包括:
过滤策略:基于 STRINC(判断文本段是否包含生成输出)、LEXICAL(计算内容与输出的一元语法重叠)和 CXMI(衡量提供内容时生成器生成输出的可能性变化)三种方法选择可能有用的内容,训练上下文过滤模型。
训练与生成:用过滤后的内容训练和生成,在训练时将检索段落和查询连接作为输入,得到过滤后的上下文训练,测试时用预测过滤上下文给生成模型,相比传统方法可降低计算成本。
设置了两个基线方法 FULL(使用所有检索段落)和 PSG(段落级过滤),与 FILCO 及 SILVER(使用筛选后的上下文)进行比较。生成性能上FILCO 在所有数据集上均优于 FULL 方法,且比 PSG 方法过滤粒度更细效果更好;与 SILVER 相比,FILCO 性能相当,表明上下文过滤过程训练有效,在提取式问答、复杂问答和抽象生成任务中均有不同程度的性能提升。同时FILCO 能有效减少输入长度(44-64%),且过滤后的上下文在所有任务中都提高了生成答案的精度。
|xRAG: Extreme Context Compression for Retrieval-augmented Generation with One Token
论文链接:https://arxiv.org/abs/2405.13792
代码地址:https://github.com/Hannibal046/xRAG
RALMs 虽在知识密集型任务表现优异,但整合文档到提示中会增加推理成本,还可能超出语言模型上下文限制。如在一些应用场景下,引入相关文档虽有助于生成准确回答,但会大幅扩充输入长度,使处理成本剧增。现有研究主要集中于软提示和硬提示方法。软提示方法如 Gist、AutoCompressor 和 ICAE 等,虽能压缩上下文,但可能需大量内存存储语言模型激活;硬提示方法如 LLMLingua 和 RECOMP 等,压缩率相对较低。且这些方法都未充分利用现代密集检索系统已将文档内容提炼为单个高维嵌入这一特性,该嵌入蕴含的信息与文本相近。论文提出xRAG,核心内容包括:
问题表述:在检索增强生成中,非参数数据存储由文档块及其对应的密集表示组成,通过相似性搜索算法找到相关文档并与查询一起处理,可选择集成上下文压缩模块。
整体架构:从模态融合视角解决文档压缩问题。引入模态投影仪 W,其作用是将检索特征 E 直接投影到语言模型(LLM)的表示空间。与传统 RAG 系统相比,传统 RAG 输入 LLM 的是查询与文档的拼接嵌入,长度较长;而 xRAG 输入为 W (E)⊕Emb (q),长度大幅缩短,仅为 1 + |q|,有效减少了输入长度。
模态融合:从模态融合角度解决文档压缩问题,引入模态投影矩阵 W 将检索特征 E 投影到语言模型表示空间,采用两阶段训练策略:释义预训练和上下文感知指令调整来应对模态融合挑战。投影矩阵 W 采用简单的两层 MLP,是唯一可训练组件,占模型参数比例小,避免了其他压缩方法存储大量激活的问题,简化了集成过程且无额外内存开销。两层 MLP在 Mistral - 7b 模型中占总参数的 0.46%,在 Mixtral - 8x7b 模型中占 0.07%。这种设计与以往需全参数调优的方法不同,保持了框架的简单性,避免了全参数调优可能对 LLM 其他核心能力造成的影响,同时使得 xRAG 能像传统 RAG 一样即插即用。
自蒸馏优化:将 RAG 模型视为 “教师”,xRAG 视为 “学生”,通过最小化两者输出分布的 Kullback-Leibler(KL)散度,引导 xRAG 有效利用上下文信息,增强其在处理噪声或不相关上下文时的鲁棒性。
主要在知识密集型任务上评估 xRAG,包括自然问题、琐事问答、热榜问答、真实问答和事实核查等数据集,使用相应指标进行评估,选择 Mistral-7b 和 Mixtral-8x7b 作为Baseline,使用 2021 年 12 月的维基百科数据作为检索语料库,默认检索模型为 SFR。实验结果证明,xRAG 大幅减少了Token数量且性能优于其他压缩方法,在某些任务上与未压缩模型相当,但在需要推理的任务上仍有差距。计算效率上,通过 Torch Profiler 评估,xRAG 在 CUDA 时间效率上比 RAG 提高了 1.64 倍,在 GFLOPs 上降低了 3.53 倍。此外,xRAG 利用离线构建的文档嵌入,无需为每个压缩Token存储 LLM 激活,避免了额外的内存开销,进一步提升了其在实际应用中的优势。
|Retrieval-enhanced Knowledge Editing in Language Models for Multi-Hop Question Answering
论文链接:https://arxiv.org/abs/2403.19631
代码地址:https://github.com/sycny/RAE
处理多跳问题时,LLMs需要更新和整合与问题相关的多个知识点。现有的模型编辑方法在处理多跳问题时面临困难,因为它们往往无法有效地处理知识点之间的复杂联系,导致生成过时或不正确的回答。为了解决这一问题,论文提出了一种名为检索增强型知识编辑(RAE)框架,专门用于多跳问答任务。核心内容包括:
编辑事实检索:利用编辑事实之间的连接构建知识图,通过最大化互信息(MI)的检索策略提取与问题相关的子图。具体通过将编辑事实整合到外部知识图,基于输入问题从该图中检索包含事实链的子图,并利用语言模型的下一词预测能力估计相关概率来实现。
基于不确定性的冗余事实修剪:定义编辑不确定性为语言模型输出的不确定性,用香农熵量化。通过实验发现,当输入事实为正确的事实链时,模型输出熵最小。因此,在检索到包含较多事实的知识图后,构建不同的事实集候选,通过比较不同子集作为输入时模型的输出熵,选择熵最小的事实集作为最终用于编辑的事实链,以去除冗余信息。
RAE 在多个数据集和语言模型上的编辑性能优于其他方法,主要得益于其新颖的基于互信息的检索目标和有效的修剪策略,且能有效整合外部知识图谱。在多跳事实提取方面,基于互信息的检索方法表现出色,传统嵌入方法表现不佳,概率最大化方法优于传统嵌入方法但仍有差距。修剪策略显著提高了模型编辑性能,对小模型在复杂问题上的提升更明显。RAE 在编辑专有语言模型时也有效且成本较低,在不同编辑批量大小下,RAE 的准确性比对比方法更稳定。
|Self-Retrieval: End-to-End Information Retrieval with One Large Language Model
论文链接:https://arxiv.org/abs/2403.00801
代码地址:https://github.com/icip-cas/SelfRetrieval
大语言模型(LLMs)的兴起给信息检索(IR)系统带来变革,但当前二者交互有限,IR 系统通常采用流水线架构,各组件独立运作,限制了 LLM 能力的充分发挥,阻碍知识共享与深度协作。这种碎片化方式存在诸多问题,如组件间知识共享困难、LLM 能力整合不足、实现复杂且性能可能不佳等,因此需要一种更统一的方法来整合 LLM 到 IR 系统。论文提出Self-Retrieval 架构,核心内容包括:
索引:通过自监督学习将检索语料库内化到 LLM 参数中,采用句子到段落的任务构建索引,训练模型以自回归方式生成源段落,此方法简单有效,与语言模型预训练过程紧密相关。
检索:给定查询,利用模型参数中嵌入的知识直接生成相关段落,先生成潜在文档标题作为全局信息,再生成段落内容,并通过基于 trie 的约束解码算法确保生成的段落与原始语料库中的内容匹配。
重排序:对生成的段落进行自我评估相关性,在训练时利用监督数据中的正例和采样的负例训练模型,推理时根据文档标题得分和自我评估得分的乘积对段落重新排序。
训练与推理:将信息检索的三个任务统一为文本生成任务,使用交叉熵损失以自回归方式训练,训练数据包括自监督实例、监督查询 - 段落对和用于重排序的正负例;推理时先生成文档标题,再生成段落并进行评估和排序。
将 IR 系统的索引、检索和重排序功能整合到单个 LLM 的参数中,实现端到端的信息检索过程,在 Natural Questions(NQ)、TriviaQA 和 MS MARCO 数据集上进行实验,采用 Hits@{1, 5}、Mean Reciprocal Rank(MRR)@5、Recall@{1, 10} 等指标,使用 StableLM - 3B、Llama2 - 7B 等作为骨干模型,并与多种检索基线方法比较,在段落检索和文档检索任务中,Self-Retrieval 均显著优于现有稀疏、密集和生成式检索方法,在检索增强生成任务中也表现出色,消融实验表明各组件对模型性能至关重要,模型性能随 LLM 规模增大而提升,在处理大规模语料库时也具有较好的扩展性和稳定性。
|Enhancing Retrieval-Augmented Generation: A Study of Best Practices
论文链接:https://arxiv.org/abs/2501.07391v1
代码地址:https://github.com/ali-bahrainian/RAG_best_practices
语言模型(如 GPT、BERT、T5 等)在自然语言处理任务中表现出很强的通用性,但存在固有局限性。其静态知识和不透明推理难以保证在语言和知识不断发展的情况下的事实准确性和可靠性。随着新事件和科学进步的出现,需要模型能及时获取最新信息,但持续更新模型成本高且效率低。为解决这些问题,检索增强生成(RAG)模型应运而生。它在推理过程中整合外部知识源,提供最新且准确的信息,通过整合可验证信息增强响应的事实准确性,将语言模型转变为特定领域的专家,推动了其在实际应用中的发展。然而,目前对于设计 RAG 模型的最佳实践仍缺乏深入理解,这正是本文研究的出发点,内容包括:
RAG 设计变体:围绕语言模型大小、提示设计、文档块大小等九个问题展开研究,如探究不同大小语言模型(如 MistralAI 7B 和 45B)对响应质量的影响,以及提示细微差异对检索和生成一致性的作用等。
系统架构:由查询扩展、检索和文本生成三个模块组成。查询扩展模块用 Flan-T5 模型扩展用户查询;检索模块使用 FAISS,基于文档块和句子嵌入进行检索;文本生成模块利用检索结果和提示生成最终答案。
实验设置:数据集选用 TruthfulQA 和 MMLU 数据集,分别代表常识和专业知识场景。知识库以 Wikipedia Vital Articles 为基础,在多语言设置中纳入法德文章。评估指标采用 ROUGE、Embedding Cosine Similarity、MAUVE 和 FActScore 等指标全面评估。明确各模块所用模型及参数设置,如查询扩展用 Google/Flan-T5-Small,文本生成以 Mistral 系列模型为主,Instruct7B 为基线模型等。
实验发现,大模型在部分数据集表现更好,但增加模型大小并非在所有任务都有效;提示设计影响显著,正向提示优于对抗性提示;文档块和知识库大小影响较小;检索步长不宜过小;查询扩展和多语言知识库效果不明显;RAG 系统整体提高了事实准确性,其中 Contrastive In-context Learning RAG 表现最佳,聚焦模式在特定数据集表现较好。
|MiniRAG: Towards Extremely Simple Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2501.06713
代码地址:https://github.com/HKUDS/MiniRAG
随着对高效轻量级 RAG 系统需求的增长,在现有 RAG 框架中部署 SLM 面临性能下降等问题,因其语义理解和文本处理能力有限,难以适应复杂架构。而现有 RAG 系统多依赖大语言模型,在资源受限场景下部署困难。论文提出MiniRAG,核心内容包括:
异构图索引:针对 SLM 在 RAG 系统中的局限,提出语义感知异构图索引机制。该机制将文本块和命名实体组合成节点,通过实体 - 实体边和实体 - 文本块边建立关系,并利用语言模型生成边的语义描述,构建丰富语义网络,减少对复杂语义理解的依赖,使数据索引更有效。
查询语义映射:利用 SLM 进行实体提取和轻量级句子嵌入模型评估语义相似性,通过智能查询引导机制构建推理路径,包括初始实体识别、答案感知实体选择和上下文丰富路径形成等步骤,提高检索效率和准确性。
拓扑增强图检索:结合语义和结构信息,通过嵌入相似性搜索和拓扑增强发现阶段,识别关键关系和提取推理路径,检索查询相关文本块,并将检索结果与答案节点集成,为生成过程提供输入。
选用包含即时通讯、个人内容和本地短文档等场景的数据集,采用准确率和错误率作为评估指标,选择多种 RAG 系统作为基线,并对不同模型进行配置。现有 RAG 系统使用 SLM 时性能严重下降甚至失效,而 MiniRAG 通过创新机制在使用 SLM 时仍保持良好性能,且存储效率高,仅需基线系统 25% 的存储空间。消融研究表明,语义驱动索引替换会导致性能下降,证明了 SLM 的局限性;去除边缘信息或文本块节点会影响系统性能,验证了查询引导推理路径组件的有效性。在复杂餐厅识别案例中,MiniRAG 通过查询引导推理和异构图索引有效处理多约束查询,克服 SLM 局限性,而对比系统 LightRAG 因 SLM 限制无法准确检索答案。
|Scaling Retrieval-Based Language Models with a Trillion-Token Datastore
论文链接:https://arxiv.org/abs/2407.12854v1
代码地址:https://github.com/RulinShao/retrieval-scaling
大语言模型的缩放研究主要集中在训练数据量和参数数量方面,这些因素的缩放规律能够帮助人们预测不同配置下预训练语言模型的成本效益权衡。当前的研究表明,增加训练数据量和模型参数数量通常可以提高模型在各种任务上的性能。然而,本文独辟蹊径,着重考虑了另一个重要的缩放维度:基于检索的语言模型在推理时可用的数据存储量。核心内容包括:
开发MASSIVEDS管道:MASSIVEDS 包含 1.4 万亿个Token,涵盖通用网络数据和特定领域数据,如书籍、科学论文、百科文章等多个领域。为降低研究成本,设计了新的管道。先对数据进行过滤、子采样、索引、检索和评估等操作,通过重新排序操作,减少昂贵步骤的重复计算,使研究在计算上可行。
数据存储扩展:使用 CONTRIEVER - MSMARCO 作为检索器,研究了 LLAMA - 2、LLAMA - 3、PYTHIA 和 OLMO 等模型在不同任务上的表现,包括语言建模和下游任务(如 TriviaQA、MMLU、MedQA 等),评估指标有困惑度(perplexity)和准确率等。
实验结果发现,
语言建模:数据存储规模的增加有助于语言建模,能降低困惑度,且小规模模型在检索辅助下可超越大规模无检索模型,如 LLAMA - 2 7B 在最大规模数据存储检索时优于 LLAMA-2 13B。
下游任务:在知识密集型问答任务(如 NQ 和 TQA)中,检索型语言模型表现更好,性能随数据存储规模单调递增;在 MMLU 任务中也有性能提升,但在 MedQA 任务中只有较弱的模型(如 LLAMA-2 7B)受益较多。总体上,在相同计算预算下,检索型语言模型优于仅基于模型参数的模型。
数据组成影响:MASSIVEDS 在语言建模、TQA 和 MMLU 等任务上优于单领域数据存储,检索器能从相关领域检索文档,提高跨领域性能。
重排序和过滤影响:改进检索过程(如重排序)可提升性能;数据去重对语言建模影响可忽略,但在 NQ 任务中对减少饱和有帮助,而其他数据质量过滤器效果相对有限。
|The Power of Noise: Redefining Retrieval for RAG Systems
论文链接:https://arxiv.org/abs/2401.14887
代码地址:https://github.com/florin-git/The-Power-of-Noise
通过检索组件获得的文档可以分为三类:相关文档(Relevant)、相关但不包含答案文档(Related)和不相关文档(Irrelevant),不相关文档与查询无关,代表了检索过程中的一种信息噪音。
论文使用 Natural Questions 数据集及其子集 NQ-open,对数据进行预处理和文档分类。将检索器返回的文档分为四类:黄金文档(包含正确答案)、相关文档(与查询相关且含答案)、干扰文档(语义相关但无答案)和随机文档(与查询无关)。采用 Contriever 作为默认检索器,结合 FAISS 索引系统,选择多种 LLM 进行测试,并设计了不同的提示组合来研究文档类型、数量和位置对 LLM 的影响。
模型分别对相关但不包含答案文档和黄金文档的注意力分数,模型过分关注一个相关但不包含答案文档(最左边)而忽视黄金文档(最右边),可能导致错误的响应。实验结果发现:
增加干扰文档会导致 LLM 准确性下降,且即使更换检索器也难以缓解这一问题。
黄金文档靠近查询时,LLM 准确性较高;位于中间时准确性最低。
添加随机文档在某些情况下可提高 LLM 准确性,不同模型对噪声的反应有所不同。在实际应用中,添加随机文档通常有益,且稀疏检索器 BM25 在检索相关文档方面表现较好。
需要在相关文档和随机文档之间找到平衡,初步发现检索少量相关文档并补充随机文档至上下文限制可达到较好效果。
由于字数限制,本上篇仅包括108个RAG工作中的前56个
后52个工作见下篇《一百零八智英汇,RAG开启新纪元(下)》
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-24
破解大模型困境:RAG技术如何成为AI的终极武器?
2025-01-24
一百零八智英汇,RAG开启新纪元(下)
2025-01-24
RAG:7种用于向量数据库+相似性搜索的索引方法
2025-01-24
搭建 RAG 系统的技巧和策略
2025-01-24
知乎直答:AI 搜索产品从 0 到 1 实践探索
2025-01-24
RAG文档分块新思路:LGMGC如何提升文档分块的语义连贯性?
2025-01-23
2024 GitHub 十大最佳 RAG 框架
2025-01-23
Vertex AI RAG Engine:Google Cloud最新打造的RAG超级引擎(含代码)
2024-07-18
2024-09-04
2024-05-05
2024-06-20
2024-07-09
2024-07-09
2024-06-13
2024-10-27
2024-05-19
2024-07-07
2025-01-24
2025-01-24
2025-01-20
2025-01-18
2025-01-18
2025-01-18
2025-01-13
2025-01-09