摘要
检索增强生成(RAG)技术在整合最新信息、减轻幻觉以及提升响应质量方面表现出色,特别是在专业领域。尽管许多RAG方法被提出以通过查询依赖检索来增强大型语言模型,但这些方法仍面临复杂的实施和较长的响应时间问题。通常,RAG工作流涉及多个处理步骤,每个步骤可以通过不同的方式执行。本文探讨了现有的RAG方法及其潜在组合,以确定最佳RAG实践。通过大量实验,提出了一些部署RAG的策略,以平衡性能和效率。此外,还展示了多模态检索技术如何显著提高关于视觉输入的问题解答能力,并通过“检索即生成”策略加速多模态内容的生成。资源可在此处获取。
RAG工作流
在这一部分,详细介绍RAG工作流的组件。对于每个模块,回顾常用方法,并选择最终管道的默认和替代方法。后续章节将讨论最佳实践。下图展示了每个模块的工作流和方法。详细的实验设置,包括数据集、超参数和结果,均在附录A中提供。
查询分类
并非所有查询都需要检索增强,因为大型语言模型(LLMs)本身具有固有能力。虽然RAG可以提高信息准确性并减少幻觉,频繁的检索可能增加响应时间。因此,从对查询进行分类开始,以确定是否需要检索。需要检索的查询通过RAG模块处理;其他则由LLM直接处理。通常,当需要超出模型参数的知识时,建议进行检索。然而,检索的必要性因任务而异。例如,对于一个训练到2023年的LLM,可以处理“Sora是由OpenAI开发的”这一翻译请求而无需检索。相反,同一主题的介绍请求则需要检索以提供相关信息。针对15个任务,基于它们是否提供了足够的信息进行分类,具体任务和示例如下图所示。对于完全基于用户提供信息的任务,标记为“足够”,不需要检索;否则,标记为“不足”,可能需要检索。训练了一个分类器来自动化这一决策过程。实验细节在附录A.1中呈现。后续章节探讨了查询分类对工作流的影响,比较了有无分类的场景。
片段划分
将文档分割成较小段落对于提高检索精度和避免大型语言模型中的长度问题至关重要。此过程可以在不同粒度级别应用,例如标记级、句级和语义级。语义级片段划分使用LLM确定分界点,能保存上下文但耗时。句级片段划分在保存文本语义和简洁性之间找到平衡。在本研究中,使用句级片段划分,平衡简洁性和语义保存。我们从四个维度对划分进行研究。
片段大小
片段大小显著影响性能。较大的片段提供更多上下文,增强理解但增加处理时间。较小的片段提高检索召回率并减少时间,但可能缺乏足够的上下文。寻找最佳片段大小需要在忠实性和相关性等指标之间取得平衡。忠实性衡量响应是否产生幻觉或匹配检索到的文本,相关性评估检索到的文本和响应是否与查询匹配。使用Llamalndex评估模块计算上述指标。嵌入模型采用text-embedding-ada-002,支持长输入长度。生成模型和评估模型分别选择了zephyr-7b-alpha和gpt-3.5-turbo。片段重叠大小为20个标记。使用文档1yft_2021的前60页作为语料库,然后提示LLMs生成约170个查询以供研究不同片段大小的影响。
片段划分技术
先进的技术如“小到大”和滑动窗口,通过组织片段块的关系,提升检索质量。小块用于匹配查询,而包含小块及上下文信息的大块被返回。为展示先进片段划分技术的效果,采用LLM-Embedder模型作为嵌入模型。小片段大小为175个标记,大片段大小为512个标记,片段重叠为20个标记。这类技术通过保持上下文并确保检索到相关信息来提升检索质量。详细结果如表4所示。
嵌入模型选择
选择合适的嵌入模型对于有效的查询语义匹配和片段块非常关键。使用FlagEmbedding的评估模块,借助数据集namespace-Pt/msmarco和namespace-Pt/msmarco-corpus,选择适当的开源嵌入模型。如表所示,LLM-Embedder与BAAI/bge-large-en取得了可比的结果,尽管前者的尺寸是后者的三分之一。因此,选择LLM-Embedder以达到性能和尺寸的平衡。
元数据添加
通过添加如标题、关键词和假设问题之类的元数据来增强片段块,可以改进检索,提供更多方式来后处理检索到的文本,并帮助LLMs更好地理解检索信息。将来会在详细研究中探讨元数据的包含。
向量数据库
向量数据库存储嵌入向量及其元数据,利用各种索引和最近邻方法,实现高效的文件检索。影响灵活性、可扩展性以及在现代云基础设施中的易于部署。多种索引类型提供优化搜索能力以适应不同数据特性和使用案例。面对使用大型数据集的LLM应用,亿级向量支持是关键。混合搜索结合了向量搜索与传统关键词搜索,增强了检索准确性。最终,云原生能力确保无缝集成、可扩展性和在云环境中的管理。表5详细比较了五种开源向量数据库:Weaviate、Faiss、Chroma、Qdrant和Milvus。评估表明,Milvus在各数据库中表现最佳,满足所有关键标准并优于其他开源选项。
检索方法
给定用户查询,检索模块根据查询和文档间的相似性从预建语料库中选择最相关的文件。相关的生成模型使用这些文件生成响应。表达不佳和缺乏语义信息的查询可能影响检索过程。通过使用第3.2节中的LLM-Embedder作为查询和文档编码器,评估了三种查询转换方法:查询重写、查询分解和伪文档生成。
查询重写:
通过改写查询以更好地匹配相关文件,提升性能。
查询分解:
基于原始查询中提出的子问题检索文件。
伪文档生成:
根据用户查询生成假设文档,并使用假设答案的嵌入检索类似文件。
近期研究表明,将词汇搜索与向量搜索结合可以显著提高性能。在本研究中,使用BM25进行稀疏检索,并使用Contriever进行密集检索,作为两个强有力的基线。评估了不同检索方法在TREC DL 2019和2020通道排名数据集上的表现。结果表明,监督方法显著优于非监督方法。结合HyDE和混合搜索,推荐HyDE为默认检索方法。为了提高效率,混合搜索结合稀疏检索(BM25)和密集检索(原始嵌入),在较低延迟下取得突出性能。
重排序方法
在初始检索之后,采用重新排序阶段以增强检索文档的相关性,确保最相关信息显示在列表顶部。利用更精确和耗时的方法有效地重新排序文档,增加查询和位于顶端的文档之间的相似性。在重新排序模块中考虑两种方法:DLM重新排序和TILDE重新排序,前者注重性能优化,后者则强调效率:
DLM重新排序:
利用深度语言模型进行重新排序,模型被微调为对文档相关性进行"真"或"假"的分类。
TILDE重新排序:
通过预测模型词汇表中每个查询词的可能性,计算分数。
文档重新包装
文档提供的顺序可能影响后续处理的性能。为解决此问题,在重新排序后集成了一个紧凑的重新包装模块,具有三种重新包装方法:前向、反向和边缘。Inspired by Liu等人的研究,实验证明当相关信息放在输入的头部或尾部时,性能最佳,因此也包括了一个“边缘”选项。由于重新包装方法主要影响后续模块,将通过测试来选择最佳重新包装方法,并在后续章节中讨论。
摘要
检索结果可能包含冗余或不必要信息,可能阻碍LLMs生成准确响应。此外,长提示可能拖慢推理过程。因此,在RAG管道中,利用高效方法对检索到的文档进行总结非常关键。摘要任务可分为抽取式或生成式。抽取式方法将文本分割成句子,然后根据重要性对其进行评分和排序。生成式压缩器则从多文档中合成信息。本文中,因RAG检索与查询相关的信息,我们专注于基于查询的方法。评估了这些方法在三个基准数据集上的表现:NQ、TriviaQA和HotpotQA。总结性方法的比较结果见表10。推荐使用Recomp工具实现出色性能。尽管LongLLMLingua表现欠佳,但其在非训练数据集上的表现出色,因此,可作为替代方法。附录提供了非基于查询的方法的更多实现细节和讨论。
生成器的微调
本节专注于生成器的微调,而检索器的微调将在未来研究中探索。旨在研究微调的影响,特别是相关或不相关背景对生成器性能的影响。微调损失是生成器的真实输出的负对数可能性。为了研究微调的影响,尤其是相关和不相关的背景,定义了dgold
作为与查询相关的背景,drandom
作为随机检索到的背景。根据以下方式调整背景的组成:
Dg
: 增强的背景由查询相关的文档组成。Dr
: 背景包含一个随机采样的文档。Dgr
: 增强的背景由一个相关文档和一个随机选择的文档组成。Dgg
: 增强的背景包含两个查询相关文档的副本。
将未微调的基础生成器标记为Mb
,并将根据相应D
微调的模型标记为Mg
、Mr
、Mgr
、Mgg
。在多个问答和阅读理解数据集上微调模型。选用Llama-2-7B作为基础模型,类似于训练,模型在验证集上评估时使用Dg
、Dr
、Dgr
和不检索的D
。如图所示,混合相关和随机文档训练的模型Mgr
在提供金色或混合背景时表现最佳。这表明在训练时混合相关和随机背景可以增强生成器对不相关信息的鲁棒性,同时确保有效利用相关背景信息。
寻找最佳RAG实践
探讨了实施RAG的最佳实践。首先,使用第3节中为每个模块识别的默认实践。按照图1所示的工作流,逐步优化各个模块,并选择最有效的实现最终的总结模块。基于第3.8节,使用微调的Llama2-7B-Chat模型,其中每个查询由少量随机选择和相关文档增强作为生成器。使用Milvus构建一个向量数据库,包含1000万条英语维基百科文本和400万条医学数据。还研究了移除查询分类、重新排序和总结模块的影响,以评估其贡献。
综合评估
在各种NLP任务和数据集上进行了广泛的实验,以评估RAG系统的性能。具体包括:常识推理、事实核查、开放域QA、多跳QA、医学QA。评估使用RAGAs推荐的指标,包括忠实性、背景相关性、答案相关性和答案正确性。此外,通过计算检索到的文档与金色文档之间的余弦相似度来衡量检索相似性。使用准确性作为常识推理、事实核查和医学QA的评估指标。对于开放域QA和多跳QA,使用标记级F1得分和完全匹配(EM)得分。最终的RAG得分通过计算上述五个RAG能力的平均值来确定。
结果与分析
实验结果表明:
查询分类模块提升了准确性和减少了延迟。
检索模块中的“Hybrid with HyDE”方法虽然达到了最高的RAG分数,但计算成本较高,因此建议使用“Hybrid”或“Original”方法。
重新排序模块的重要性通过其缺席导致的性能下降得以体现,MonoT5方法表现最佳,表明其增强检索文档相关性方面的有效性。
重新包装模块的反向配置表现优异,表明更相关的背景贴近查询位置可以产生最佳结果。
摘要模块中,尽管通过删除总结模块可以实现较低延迟,Recomp仍然是首选,因为它能够应对生成器的最大长度限制。
每个模块对RAG系统的整体性能贡献独特。查询分类模块提高了准确性并缩短了延迟;检索和重新排序模块显著提升系统处理多样化查询的能力;重新包装和总结模块进一步优化系统输出,确保高质量响应。
实施RAG的最佳实践
根据实验发现,建议了两个分别针对不同要求的RAG系统实施实践:一个专注于性能最大化,另一个平衡效率与效能。
最佳性能实践:
建议包含查询分类模块,采用“Hybrid with HyDE”方法进行检索,使用monoT5进行重新排序,选择反向重新包装,并利用Recomp进行总结。
平衡效率实践:
建议包含查询分类模块,使用Hybrid方法进行检索,选用TILDEv2重新排序,选择反向重新包装,并使用Recomp进行总结。
多模态扩展
将RAG扩展至多模态应用,集成了文本到图像和图像到文本的检索能力,使用大量配对图像和文本描述作为检索来源。这些多模态RAG能力提供以下优势:基于检索的方法提供经过验证的多模态材料信息,确保真实性和详细性,并且通常更为高效。计划将这一策略扩展至视频和语音等其他模态,同时探索高效且有效的跨模态检索技术。
结论
本研究旨在识别最佳实践以实施检索增强生成,从而提高大型语言模型生成内容的质量和可靠性。系统地评估了RAG框架中每个模块的多种潜在解决方案,并推荐了每个模块的最有效方法。此外,提出了一个综合评价基准以评估RAG系统,并进行了广泛的实验以确定在各种备选方案中的最佳实践。研究结果不仅有助于更深入地理解检索增强生成系统,还为未来研究奠定了基础。
局限性
在本研究中,评估了不同方法对LLM生成器微调的影响。以往研究已证明同时训练检索器和生成器的可行性,未来计划探索这一可能。本研究采用模块化设计原则,以简化对最佳RAG实施的搜索,从而减少复杂性。由于构建向量数据库和开展实验所需的成本巨大,评估仅限于调查了片段划分模块内代表性技术的有效性和影响。进一步探索不同片段划分技术对整个RAG系统的影响将是一个有趣的研究方向。同时,虽然讨论了对其他模态如语音和视频的应用,但未来的探索可以将这项研究扩展到更多模态上。