过去一年,RAG的发展波澜壮阔,这篇万字长文精心梳理了最具代表性的成果,从向量化模型的突破到RAG工作流程的关键前提,希望能帮助大家一窥这一年间的技术演进全景。
引言
过去一年,作为AI应用的重要支柱,RAG(检索增强生成)的演进可谓目不暇接。春天,GraphRAG破晓而出;夏天,各类开源工具和框架如火如荼;秋天,多模态与复杂RAG的创新层出不穷;冬天,Agent范式又开启了新篇章。各个方向轮番登场,奇技纷呈。这些进步如同冬雪覆盖大地,孕育着来年的希望,也预示着RAG将在未来持续进化。
本文精心遴选了这一年内最具代表性的RAG系统、顶会论文和技术报告,每一篇均附有详细注解、来源说明、知识摘要以及代码地址,均可复现尝试。乙巳蛇年将至,特以此万字长文总结108个特色RAG工作,助大家领略这一年的无限风光,感受技术带来的普惠之力。
工欲善其事,必先利其器
向量化模型在搜索、推荐和数据挖掘领域扮演着不可或缺的角色,尤其在解决大模型的幻觉问题、知识时效性以及超长文本处理等挑战时,它是核心利器。随着技术飞速发展,E5、GTE、Jina等新模型不断涌现。为了有效比较这些模型的准确性,MTEB、BEIR、AIRBench等基准测试应运而生,有力推动了向量化模型在NLP任务中的应用。同时,随着大语言模型的进步,向量化模型也在进化——训练中融合多种任务数据,采用多阶段训练策略提升通用能力,并逐步探索能在线上高效部署的模型。而优化外部知识的组织方式、提升对外部知识的认知深度,做好知识库优化,是RAG工作流程顺利开展的重要前提。
BGE: One-Stop Retrieval Toolkit For Search and RAG
代码地址:https://github.com/FlagOpen/FlagEmbedding
模型地址:https://huggingface.co/BAAI
智源研究院提出的BGE系列一直致力于打造“通用向量模型”,目标是创建能适应不同任务、语言和数据类型的模型体系,为RAG提供一站式服务。实现路径非常清晰,分几个阶段推进:
- 任务统一性:2023年8月推出的BGE v1,通过大量中英文数据训练,支持多种下游任务,在中文场景下表现尤为突出,成为当时的SOTA。
- 语言统一性:2024年2月发布的BGE M3,支持超过100种语言,首次在一个模型中统一了向量检索、稀疏检索和多向量检索三种主要能力,同时扩展了输入长度,支持更长文本。在多项评测基准上取得业界最佳成绩。
- 衍生版本:基于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的因果注意力掩码,显著提升表示学习能力。
- 模型训练:两阶段对比指令调整——第一阶段在检索数据集上对比训练,利用批内负样本和精心挑选的硬负样本;第二阶段融入非检索数据集,提升非检索任务和检索性能。
在MTEB的56个任务中取得69.32高分,15个检索任务中得分59.36,均排名第一。消融实验也证实了双向注意力掩码、潜在注意力层等设计的有效性。更关键的是,NV-Embed仅使用公开数据就达到了领先水平。
Arctic-Embed: Scalable, Efficient, and Accurate Text Embedding Model
论文链接:https://arxiv.org/abs/2405.05374
代码地址:https://github.com/Snowflake-Labs/arctic-embed
嵌入模型无需额外调优就能提供准确检索,已经成为RAG工作负载的热门选择。和传统关键词搜索相比,嵌入模型不仅能捕捉token重叠,还能理解语义相似性。Snowflake发布的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
随着RAG系统的发展,对通用、即插即用的文本表示模型和重新排序器的需求激增。新应用需要处理长文本和多语言,传统基于编码器的模型已经力不从心。阿里巴巴提出的mGTE模型解决了这个问题:
- 文本编码器:引入RoPE和Unpadding增强的编码器,原生8192 token上下文(远超之前多语言编码器的512),通过两阶段课程学习的MLM预训练,并对BERT架构做了多处改进。
- 文本表示模型:基于上述编码器,通过对比学习构建混合文本表示模型,结合Matryoshka嵌入和稀疏表示的多任务学习。
- 文本重新排序器:采用交叉编码器架构,将查询和文档一起输入直接预测相关性得分,通过InfoNCE微调。
实验证实,mGTE在长上下文检索上表现更好,且训练和推理效率更高。
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等7B参数、4096维),导致推理和检索速度缓慢,形成了精度与速度的权衡困境。这篇论文通过蒸馏技术来解决这个问题:
- 模型架构:创新融合语言模型和视觉编码器,ViT图像编码器处理图像,池化层缩减视觉标记,变换编码器/解码器负责文本处理,全连接层投影维度。
- 阶段1&2:教师向量蒸馏:设计了余弦损失、相似性损失和三元组损失,利用大量无监督文本训练。阶段1只训练全连接层,阶段2训练全连接层和学生模型后三层。
- 阶段3:降维:根据约翰逊-林登施特劳斯引理,通过添加全连接层降低维度,同时保持准确性。
- 阶段4:可视化Jasper模型:使用图像字幕数据训练视觉编码器,赋予模型图像和文本编码能力。
通过这种多阶段蒸馏,可以在保持性能的同时大幅降低模型部署成本。
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有限,限制了零样本泛化能力。NVIDIA的Retro 48B是目前最大的检索增强预训练LLM:
- 预训练:以43B GPT为基础,在1.2万亿tokens上继续预训练,其中1.1万亿用于GPT骨干,1000亿用于检索增强持续预训练。使用Faiss索引和Retro-fitting技术,仅增加2.58%的GPU训练时长就显著提升了困惑度。
- 指令调整:使用SODA、ELI5等高质量数据集训练,通过门控机制在指令调整时禁用Retro编码器,只更新解码器权重。
在多种问答和总结任务上,InstructRetro相比基于GPT的指令调整模型平均提升7%-16%。有趣的是,直接去除编码器仅使用解码器骨干也能取得相当结果,这为检索增强预训练提供了新方向。
ListConRanker: A Contrastive Text Reranker with Listwise Encoding
论文链接:https://arxiv.org/abs/2501.07111v1
模型地址:https://huggingface.co/ByteDance/ListConRanker
重排序模型是信息检索系统中的关键组件。在处理长文本和大量候选文档时,传统点对点或成对编码策略存在局限性。字节跳动提出的ListConRanker采用列表式编码:
- 原始特征提取:用BERT嵌入模型获取特征。
- 列表编码:通过ListTransformer和ListAttention处理,利用可学习嵌入区分查询和段落特征,学习全局对比信息。
- Circle Loss:作为损失函数,同时输入多个正负样本,提高数据效率。
- 迭代推理:解决GPU内存限制导致的训练和实际使用输入段落数量不一致问题。
在C-MTEB重排序部分,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
多模态RAG面临多粒度噪声对应问题(Multi-Granularity Noisy Correspondence),影响检索和生成准确性。论文提出的RagVL框架:
- 多模态检索器:基于CLIP双编码器架构。
- 诱导MLLMs排序能力:构建指令跟随数据,用字幕感知排序任务训练重排序器,通过生成“是”的概率排序候选图像。设置自然阈值和自适应阈值过滤低相关性图像。
- 噪声注入训练:对图像应用高斯噪声并调整损失权重,增强鲁棒性。
在WebQA上R@2平均提高40%,知识增强重排序方法表现优越。
A Gradient Accumulation Method for Dense Retriever under Memory Constraint
论文链接:https://arxiv.org/abs/2406.12356v3
代码地址:https://github.com/DSBA-Lab/Contrastive-Accumulation
密集检索常使用InfoNCE损失,大批次对稳定训练至关重要。但硬件内存有限,GradAccum虽然能拆分大批次,却会减少每个查询的负样本。GradCache虽能使用全部负样本但计算开销大。论文提出的CONTACCUM方法:
- 问题发现:GradAccum的每个积累步骤负样本数量比总批次少,影响训练。
- 双记忆库结构:分别缓存查询和段落表示,类似先进先出队列。训练时利用当前和记忆库中的表示构建相似矩阵计算损失,负样本数量远超GradAccum,甚至能超越总批次。
通过保证两个编码器梯度范数相似,稳定训练过程,在低资源下性能优于高资源场景。
Improving Text Embeddings with Large Language Models
论文链接:https://arxiv.org/abs/2401.00368
模型地址:https://github.com/microsoft/unilm/tree/master/e5
文本嵌入从简单的词向量平均发展到Sentence-BERT、E5、BGE等模型,但当前模型依赖复杂训练流程,多数只支持少数语言,未能充分利用LLM的优势。微软的E5新方法:
- 两步提示策略:利用大模型(如Mistral-7B)自主生成多种语言的任务和数据,增强多样性。
- 文本获取:采用单塔架构,在query和doc间插入
token,取最后一层该token的嵌入作为表示。查询输入包含指令,文档直接输入不加前缀,便于索引缓存。 - 模型训练:标准InfoNCE损失,使用批内负样本和难负样本。
这反映了范式的转变:利用强大的生成能力间接提升文本表示质量。
Generative Representational Instruction Tuning
论文链接:https://arxiv.org/abs/2402.09906
代码地址:https://github.com/ContextualAI/gritlm
文本任务可归为生成或嵌入,但现有模型通常只擅长一种。GRIT方法创新地将两者统一:
- Embedding任务:给定指令,生成文本表征。使用双向注意力获取隐藏状态,将文本部分(排除指令和prompt)求和平均作为表征向量,采用对比学习。
- Generation任务:给定指令,生成响应。使用单向注意力预测下一个token,仅计算响应部分的损失。
通过指令调整,模型能灵活应对不同类型任务,显著提升了多种NLP任务的表现。
KBAlign: Efficient Self Adaptation on Specific Knowledge Bases
论文链接:https://arxiv.org/abs/2411.14790v3
代码地址:https://github.com/thunlp/KBAlign
大模型在下游任务中虽有能力,但特定领域适应仍关键。现有方法存在不足,外部知识信号并非必需。KBAlign提出:
- 自标注:用骨干模型对知识库文本进行标注,生成问答对来训练模型。
- 迭代调优:包括初始调优和自验证调优,逐步提升。
- 针对性推理:采用查询扩展和自验证策略优化生成。
在多个数据集和模型上,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
利用知识库辅助大模型回答复杂问题时,程序归纳是有前景的范式。但多数方法依赖大量标注数据,低资源知识库面临挑战。KB-Plugin:
- 插件架构:采用LoRA实现模式插件和PI插件,即插即用,不增加输入长度和推理延迟。
- 学习与转移框架:包括生成不同模式的源知识库及增强数据、学习模式插件、训练PI插件、转移到目标知识库并约束解码。
在多个数据集上超越现有低资源PI方法,甚至超越部分监督方法,且使用更小的骨干LLM。
关系捕捉,全局理解
传统RAG方法侧重于语义相似性,忽略了文本之间的结构化关系知识,常常出现重复文本片段,导致上下文过长。加上只能检索文档子集,无法全面掌握全局信息,在查询聚焦摘要等任务中表现不佳。为了解决这些问题,GraphRAG系列工作应运而生,其最具价值的地方在于提出了一套落地可行的基于知识图谱的方案。通过结合图结构和外部知识库,显著提高了检索和生成性能,让模型更好地捕捉文本间关联,提供更全面准确的回答。
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
论文链接:https://arxiv.org/abs/2404.16130
代码链接:https://github.com/microsoft/graphrag
RAG可以在回答特定问题时表现不错,但面对“数据集中的主要主题是什么?”这类全局问题时,本质上是查询聚焦的摘要任务,而非简单检索。微软的Graph RAG为此设计了六个步骤:文本分块、提取元素实例、生成元素摘要、划分图社区、生成社区摘要、生成最终答案。实验显示,Graph RAG在全面性和多样性上优于朴素RAG,且Token成本更低。
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提取的元数据(如文章来源、发布日期)来改进文档选择。方法简单但效果显著,被LangChain官方点名推荐。在GPT-4和PaLM上的准确性都有大幅提高。虽然需要额外推理时间提取元数据,但整体收益明显。
KAG: Boosting LLMs in Professional Domains via Knowledge Augmented Generation
论文链接:https://arxiv.org/abs/2409.13731
代码地址:https://github.com/OpenSPG/KAG
RAG在专业领域存在向量相似性与知识推理相关性差距的问题。知识图谱具有组织信息和推理的优势,KAG框架由此提出:KAG-Builder负责构建离线索引(通过LLMFriSPG实现知识表示升级),KAG-Solver负责核心推理(逻辑形式引导混合推理),KAG-Model负责通用模型优化。在支付宝电子政务和健康管理场景中,KAG在完整性和准确性上相比NaiveRAG显著提高。
RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval
论文链接:https://arxiv.org/abs/2401.18059
代码地址:https://github.com/parthsarthi03/raptor
现有方法大多检索短的连续块,限制了对整体上下文的把握。RAPTOR通过递归嵌入、聚类和总结文本块,构建具有不同摘要级别的树。推理时从树中检索,整合不同抽象级别的信息。软聚类方法基于GMM和UMAP,允许文本块跨多个聚类。实验表明,RAPTOR在结合不同检索器和语言模型时均优于传统方法。
LightRAG: Simple and Fast Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2410.05779
代码地址:https://github.com/HKUDS/LightRAG
RAG系统依赖平面数据表示,缺乏上下文感知能力。LightRAG将图结构整合到文本索引和检索中,采用双层检索系统(低层和高层)。基于图的文本索引利用LLM提取实体和关系创建知识图谱,并支持增量更新。在大规模语料库中,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在检索有效性和效率的平衡上存在不足。SubgraphRAG框架将子图检索转化为可学习的分布问题,采用轻量级MLP结合并行三元组评分机制和方向距离编码。检索的子图大小可根据查询和LLM能力调整。实验表明,SubgraphRAG在检索有效性上远超其他方法,效率也比其他基线快一到两个数量级。
Iteratively Refined Early Interaction Alignment for Subgraph Matching based Graph Retrieval
论文链接:https://nips.cc/virtual/2024/poster/93261
代码链接:https://github.com/structlearning/isonetpp
基于子图同构的图检索在分子指纹检测、场景图检索等领域有应用。IsoNet++通过将子图同构任务转化为Gromov-Wasserstein距离优化,采用早期交互神经网络。关键创新包括多轮懒细化节点对齐、节点对伙伴交互等。实验证明IsoNet++在多个数据集上显著优于基线方法。
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
LLM在处理复杂任务时面临浅层相关性捕获、聚合多样化事实困难等问题。ToG2.0通过知识图谱引导的知识检索实现深度推理。混合知识探索包括知识引导的图搜索和上下文检索,两者迭代协调。在多个数据集上优于基线方法,使模型推理更接近人类:检查当前线索,关联潜在实体,不断深入直至找到答案。
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
在KGQA中,关键挑战是将知识图谱的子图转换为LLM能理解的自然语言(知识重写),现有方法存在冗余、遗漏问题。CoTKR框架让知识重写器交替进行推理和总结,逐步生成知识表示。PAQAF训练策略通过问答反馈进行偏好优化,缩小知识重写器和问答模型之间的差距。实验证明该策略有效提升了问答性能。
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通过模拟查询构建图,将历史响应作为连接文本块的桥梁。采用图注意力网络学习节点嵌入,设计对比损失和辅助成对排名损失进行自监督训练。在四个长文本总结数据集上,GoR优于多种基线方法。
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查询模式(无文档、单文档支持、多文档支持、单文档答案、多文档答案),并通过指令模拟技术基于Wikipedia构建了40,000个合成RAG指令数据集。在11项任务中,RAG-Instruct超越多种基线,包括闭源LLM和专门设计的RAG模型。
GNN-RAG: Graph Neural Retrieval for Large Language Model Reasoning
论文链接:https://arxiv.org/abs/2405.20139
代码地址:https://github.com/cma vro/GNN-RAG
知识图谱问答系统需要处理复杂图数据。GNN-RAG结合了图神经网络的推理优势和LLM的语义能力:GNN部分通过节点分类确定候选答案及推理路径,LLM部分将推理路径文本化后生成答案。在多跳和多实体问题上表现优异,F1指标相比RoG明显提升。
KnowTrace: Explicit Knowledge Tracing for Structured Retrieval-Augmented Generation
论文链接:https://openreview.net/pdf?id=F6rZaxOC6m
代码地址:https://github.com/xxrep/SRAG
LLM在多跳问答中,简单累积检索文本难以把握知识结构。KnowTrace将LLM视为主动知识组织者,通过知识探索和知识完成两个阶段迭代追踪知识三元组,形成特定知识图谱。知识提示策略实验表明直接输入三元组效果最佳。在多个MHQA数据集上优于现有RAG方法。
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
LLM在复杂推理中易产生幻觉,知识图谱提高了可靠性。FiDeLiS包含Path-RAG模块(通过预训练语言模型生成嵌入,构建推理步候选)和DVBS模块(利用束搜索迭代扩展推理路径,验证推理步骤)。实验表明FiDeLiS优于强基线,在处理长尾实体和复杂查询方面出色。
精准定位,反省自明
当任务涉及从多个段落或文档中提取并综合信息时,RAG表现往往不尽人意。缺乏有效机制理解各部分间的逻辑关系,难以完成复杂推理。在法律咨询、医学诊断等需要深入分析的场景中,这一局限尤为突出。即使检索到相关文档,快速定位最相关的句子也非易事。为了解决这些问题,一系列工作应运而生:Self-RAG通过检索和自我反思提升质量;RAT通过检索增强思维,逐个修订推理步骤;HippoRAG借鉴人类长期记忆机制;MemoRAG通过记忆模块处理模糊信息需求;FoRAG优化事实性;GasketRAG对齐检索器和LLM偏好;TC-RAG引入图灵完备性;OpenScholar实现科研助手落地;iText2KG增量构建知识图谱;CRAG纠正检索错误。通过这些持续学习和改进,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)的文本,用于决定是否检索、评估相关性和支持度。通过按需检索和自我反思,有效提高了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并非新技术,而是思维链与RAG的巧妙结合。它将思考作为查询,通过两阶段迭代:先生成初始零样本思维链,然后对每个中间推理步骤检索相关信息并修正,最后生成最终响应。在代码生成、数学推理等任务上取得了显著成果,提升了事实准确性。
HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models
论文链接:https://arxiv.org/abs/2405.14831
代码地址:https://github.com/OSU-NLP-Group/HippoRAG
哺乳动物大脑能持续整合新信息,而LLM即使在RAG下仍存在困难。HippoRAG基于海马体理论:离线索引时利用LLM提取名词短语和关系构建无模式知识图谱,在线检索时通过个性化PageRank算法识别相关子图。在MuSiQue和2WikiMultiHopQA数据集上显著优于所有基线,并与IRCoT结合时进一步提升。
MemoRAG: Moving towards Next-Gen RAG Via Memory-Inspired Knowledge Discovery
论文链接:https://arxiv.org/abs/2409.05591
代码地址:https://github.com/qhjqhj00/MemoRAG
传统RAG要求信息需求明确、知识结构良好,难以应对模糊信息需求。MemoRAG采用双系统架构:轻量级长程LLM构建全局记忆,生成草稿答案引导检索;表现力强的LLM基于检索信息生成最终答案。记忆模块将输入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增强了长形式问答,但生成答案存在事实性不足和逻辑清晰度不够的问题。FoRAG包含大纲增强生成器(两阶段生成:先大纲后扩展)和事实性优化方法(基于双细粒度RLHF框架)。实验表明,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
检索器和LLM分开训练,存在偏好差距。GasketRAG在两者间引入Gasket模型,收集两者偏好数据离线训练。检索时返回Top-k段落,Gasket筛选相关句子增强查询并再次筛选。将偏好标签扩展为四值系统,采用加权KTO优化。在六个数据集上优于已有方法,具有良好的稳定性和泛化性。
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未考虑系统状态变量管理。TC-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引用伪造率高达78%~90%。OpenScholar构建了包含4500万篇开放获取论文的数据存储,采用双编码器检索器和交叉编码器重排序器,通过迭代生成和检索增强的自反馈机制生成带引用的回答。在SCHOLARQABENCH基准上,OpenScholar-8B在正确性方面优于GPT-4o和PaperQA2,且成本远低于后者。
iText2KG: Incremental Knowledge Graphs Construction Using Large Language Models
论文链接:https://arxiv.org/abs/2409.03284
代码地址:https://github.com/AuvaLab/itext2kg
大多数数据无结构,传统NLP方法在构建知识图谱时依赖预定义实体类型和监督学习。iText2KG通过文档提炼器、增量实体提取器、增量关系提取器和图谱集成器,实现增量式、主题独立的KG构建。在科学论文、网站和简历转换为图谱的场景中,优于基准方法,解决了语义重复和未解决实体的问题。
Corrective Retrieval Augmented Generation
论文链接:https://arxiv.org/abs/2401.15884
代码地址:https://github.com/HuskyInSalt/CRAG
RAG依赖检索文档的相关性,出错会影响表现。CRAG构建轻量级检索评估器,将相关性量化为三个置信度(Correct、Incorrect、Ambiguous)并触发相应动作。Correct时分解重组知识,Incorrect时网络搜索,Ambiguous则结合两者。作为一个即插即用的插件,CRAG显著提升了RAG性能。
规矩之内,细致拆解
LLM通过无监督学习训练,微调后可在特定领域达到先进水平。但它们在访问和精确定位内部知识库方面能力有限,处理需要深层次推理的任务时可能不如专门优化的系统。此外,知识密集型任务面临高成本知识存储、难以处理细致查询等挑战。为了解决这些问题,一系列RAG工作被提出:RuleRAG通过逻辑规则引导检索和生成;Auto-RAG基于推理自主决定检索时机和内容;Thread用逻辑单元组织如何问题;StructRAG将分散知识结构化为表格、图等;Open-RAG将LLM转换为MoE架构;W-RAG利用排序能力生成弱标签;PlanRAG规划后再检索;Adaptive-RAG根据查询复杂性动态调整策略;Multi-Head RAG利用多头注意力多方面表示数据;MedGraphRAG用于医疗领域。这些改进旨在克服传统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),并通过规则引导微调(RuleRAG-FT)更新检索器和生成器。在不同LLM和检索器上均有效,且对可能不需要规则指导的查询具有鲁棒性。
Auto-RAG: Autonomous Retrieval-Augmented Generation for Large Language Models
论文链接:https://arxiv.org/abs/2411.19443
代码地址:https://github.com/ictnlp/Auto-RAG
迭代检索依赖少量示例或手动规则,忽视了LLM的推理能力。Auto-RAG将迭代检索视为多轮交互,每次迭代基于当前状态推理是否需要检索及需要什么信息,直到生成最终答案。通过少样本提示引导推理和查询优化,训练后能自主决定检索时机和内容。在六个基准测试上均表现优异,超越其他迭代检索方法。
Thread: A Logic-Based Data Organization Paradigm for How-To Question Answering with Retrieval Augmented Generation
论文链接:https://arxiv.org/abs/2406.13372
代码地址:https://kkk-an.github.io/thread.github.io/
现有RAG在处理“how-to”问题时面临挑战,因为块分割破坏了逻辑连贯性。Thread提出逻辑单元(由前提条件、头部、主体、链接器、元数据组成),分为步骤、术语、常见问题、附录四种类型。基于逻辑单元构建知识库,检索时根据头部相似度检索,依据前提条件筛选,实现动态交互。在处理“how-to”问题的成功率上比其他方法提高了21%~33%。
StructRAG: Boosting Knowledge Intensive Reasoning of LLMs via Inference-time Hybrid Information Structurization
论文链接:https://arxiv.org/abs/2410.08815
代码地址:https://github.com/Li-Z-Q/StructRAG
RAG在知识密集型推理任务上表现不佳,因为信息分散。StructRAG借鉴人类处理复杂任务的方式:将信息汇总成结构化知识再利用。混合结构路由器确定最合适的结构类型(表格、图、算法等),分散知识结构化器提取并重构知识,结构化知识利用器分解问题并推理。在多数任务和文档长度设置下优于基线,在复杂信息分散场景中优势更明显。
Open-RAG: Enhanced Retrieval-Augmented Reasoning with Open-Source Large Language Models
论文链接:https://arxiv.org/abs/2410.1782
代码地址:https://github.com/ShayekhBinIslam/openrag
开源LLM在RAG中推理能力有限。Open-RAG将密集LLM转换为参数高效的稀疏MoE模型,通过反射token控制行为。混合自适应检索方法基于模型置信度确定检索必要性。在多跳推理和长形式生成任务中表现突出,自适应检索方法更优。
W-RAG: Weakly Supervised Dense Retrieval in RAG for Open-domain Question Answering
论文链接:https://arxiv.org/abs/2408.08444
代码地址:https://github.com/jmnian/weak_label_for_rag
密集检索训练因缺乏真实证据而受阻。W-RAG利用LLM排序能力生成弱标签:先用简单检索器检索前K个段落,再根据LLM基于段落生成答案的可能性重新排序,选择排名最高的作为正例。用弱标签训练密集检索器(DPR或ColBERT),有效提高了检索和开放域问答性能。
PlanRAG: A Plan-then-Retrieval Augmented Generation for Generative Large Language Models as Decision Makers
论文链接:https://arxiv.org/abs/2406.12430
代码地址:https://github.com/myeon9h/PlanRAG
传统决策支持系统的规划步骤通常由人类负责。PlanRAG让LLM迭代进行规划、检索和回答。LLM先生成数据分析计划,然后根据计划生成查询执行检索,如果计划不足则重新规划。在定位和构建场景中,准确率比现有RAG方法分别高出28.0%和16.0%。
Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity
论文链接:https://arxiv.org/abs/2403.14403
代码地址:https://github.com/starsuzi/Adaptive-RAG
开放域问答中,复杂查询需要更复杂的策略,但现有方法忽略了查询的多样性。Adaptive-RAG通过训练一个小型分类器预测查询复杂度(简单、中等、复杂),动态选择非检索、单步检索或多步检索策略。实验证明该方法提高了问答系统的整体性能。
Multi-Head RAG: Solving Multi-Aspect Problems with LLMs
论文链接:https://arxiv.org/abs/2406.05085
代码地址:https://github.com/spcl/MRAG
标准RAG使用最后一层解码器激活向量作为嵌入,无法处理需检索多方面内容的查询。Multi-Head RAG利用多头注意力层生成的多个激活向量作为多方面嵌入,每个头学习数据的不同方面。数据准备和查询执行时都使用多方面检索策略,空间需求与标准RAG相同。在合成和真实数据集上展示了有效性。
Medical Graph RAG: Towards Safe Medical Large Language Model via Graph Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2408.04187v2
代码地址:https://github.com/SuperMedIntel/Medical-Graph-RAG
LLM在医学领域面临知识难以融入有限上下文等问题。MedGraphRAG采用混合方法语义分块,提取实体并链接可信医学源,构建有向图。通过图标记与组织形成多层次标签,U-Retrieval策略结合自上而下精确检索和自下而上响应细化。显著优于经典RAG和GraphRAG,人类评估显示响应更可靠、易懂。
精蕴慧省,降本增效
RAG在处理多文档片段时需要大量计算资源,检索系统可能引入不相关内容,增加计算成本。同时,RAG与LLM之间的流水线架构存在组件间知识传递困难、整合不足等问题,导致性能不佳。现有RAG系统多依赖大模型,在资源有限环境中部署困难。针对降本增效,一系列工作提出:TurboRAG利用预计算KV缓存避免重复在线计算;FILCO基于词汇和信息论方法过滤上下文;xRAG将文档内容压缩为单一token;RAE利用互信息检索和冗余修剪;Self-Retrieval将索引、检索、重排序整合到单个LLM;最佳实践研究提供RAG设计指南;MiniRAG针对小模型设计异构图索引;Scaling研究探索数据存储规模的影响。这些优化旨在减少计算开销,提升检索精度,在资源受限下保持高质量结果。
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时间高延迟主要来自处理多个文档块和重复计算KV缓存。TurboRAG通过离线预计算文档片段的KV缓存并存储,在线交互时直接检索预先计算的缓存进行高效预填充,并设计专用注意力掩码避免文档间注意力分散。这种混合模式显著加快了响应时间,同时保持了准确性。
Learning to Filter Context for Retrieval-Augmented Generation
论文链接:https://arxiv.org/abs/2311.08377
代码地址:https://github.com/zorazrw/filco
检索系统不完美会引入无关内容。FILCO提出基于STRINC、LEXICAL和CXMI三种方法的上下文过滤策略,训练过滤模型。在生成时,用过滤后的上下文训练和预测,相比传统方法降低计算成本,过滤后输入长度减少44%~64%,同时提高了生成答案的精度。
xRAG: Extreme Context Compression for Retrieval-augmented Generation with One Token
论文链接:https://arxiv.org/abs/2405.13792
代码地址:https://github.com/Hannibal046/xRAG
将检索文档整合到提示中会增加推理成本,甚至超出上下文限制。xRAG从模态融合角度解决压缩问题:引入模态投影仪W将检索特征投影到LLM表示空间,输入长度缩短为1+|q|。采用两阶段训练策略(释义预训练和上下文感知指令调整),并通过自蒸馏优化。Token数量大幅减少,CUDA时间效率提升1.64倍,GFLOPs降低3.53倍。
Retrieval-enhanced Knowledge Editing in Language Models for Multi-Hop Question Answering
论文链接:https://arxiv.org/abs/2403.19631
代码地址:https://github.com/sycny/RAE
多跳问题时,LLM需要更新整合多个知识点。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
现有IR系统采用流水线架构,各组件独立运作,限制了LLM能力的发挥。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
对于RAG设计的最佳实践,研究围绕模型大小、提示设计、文档块大小等九个问题展开。实验发现:大模型在部分数据集表现更好但非万能;正向提示优于对抗性提示;文档块和知识库大小影响较小;检索步长不宜过小;查询扩展和多语言知识库效果不明显;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系统多依赖大模型,在资源受限场景难以部署。MiniRAG针对小模型提出语义感知异构图索引(将文本块和命名实体组合成节点,构建语义网络),查询语义映射(利用小模型进行实体提取和轻量级嵌入评估),拓扑增强图检索(结合语义和结构信息)。使用小模型仍保持良好性能,存储仅需基线系统的25%。
Scaling Retrieval-Based Language Models with a Trillion-Token Datastore
论文链接:https://arxiv.org/abs/2407.12854v1
代码地址:https://github.com/RulinShao/retrieval-scaling
通常缩放研究关注训练数据和参数规模,本文独辟蹊径探索推理时可用的数据存储规模。开发了包含1.4万亿token的MASSIVEDS管道,研究发现:数据存储规模增加有助于语言建模,小模型在检索下可超越大模型;知识密集型问答性能随数据存储单调递增;在相同计算预算下,检索型模型优于仅参数模型;数据组成和重排序等进一步影响性能。
