论文:Searching for Best Practices in Retrieval-Augmented Generation
代码:https://github.com/FudanDNN-NLP/RAG
要做一个多模态RAG项目,目前还没想到用什么方案好,先读一下RAG方案测评结果。
提出背景
检索增强生成(Retrieval-Augmented Generation,简称 RAG)技术,这是一种用于改进大型语言模型的方法。让我们简单地拆解这个概念:
- 生成性大型语言模型(LLMs)的问题:这些模型虽然强大,但有时会生成过时或不准确的信息。
为了改进这一点,研究者们通过不同的技术调整这些模型以更好地符合人类的偏好和需求。
- RAG 的介绍:RAG 技术结合了预训练的语言模型和基于检索的模型的优点,旨在提供一个强大的框架来提高模型的性能。
这种方法不需要更新模型的参数,只要有相关的查询文档即可快速部署到特定的领域和组织。
-
RAG 工作流程:RAG 处理包括几个步骤——
- 查询分类:判断一个输入的查询是否需要进行文档检索。
- 检索:高效地获取与查询相关的文档。
- 重排:基于文档与查询的相关性重新排序。
- 重新打包:把检索到的文档组织成更结构化的形式,以便更好地生成响应。
- 摘要:从组织好的文档中提取关键信息,用于生成响应,并消除重复信息。
-
RAG 实现的挑战:实现这些步骤存在多样性和复杂性。例如,检索相关文档可以通过重写查询或生成伪响应等多种方式。
-
本研究的目标和方法:研究旨在通过实验确定 RAG 的最佳实践,包括评估不同方法对整体性能的影响,并最终选择每个步骤最有效的方法。
-
研究的贡献:这项研究不仅全面评估了不同的 RAG 方法,还引入了评估指标和数据集来衡量模型性能。
此外,研究还展示了如何通过整合多模态检索技术来提高对视觉输入的问答能力,并加快多模态内容的生成。
检索增强生成(RAG)的工作流程、实验对比
- 查询分类(3.1节):
- 不是所有的查询都需要外部信息检索,因为大型语言模型(LLM)本身具备处理某些类型查询的能力。
- 系统通过分类来决定哪些查询需要通过RAG进行增强。例如,较新的信息或复杂的问题可能需要外部数据支持。
查询分类器的结果:
- 模型:BERT-base-multilingual
- 度量:
- 准确率(Acc):0.95
- 精确度(Prec):0.96
- 召回率(Rec):0.94
- F1分数:0.95
这表明BERT-base-multilingual模型在查询分类任务上表现良好,平衡了精确度和召回率。
分块(Chunking)选择策略
- 文档分块(3.2节):
- 为了提高检索的精确度,将大文档分割成更小的段落或块是必要的。
- 这可以基于令牌、句子或更高级的语义层次来实现。
- 分块的大小和技术(如从小到大、滑动窗口等)直接影响检索效率和准确性。
不同块大小的比较:
- 块大小:从2048到128不等。
- 度量:
- 平均忠实度:衡量内容与原始文本的一致性。
- 平均相关性:衡量内容与查询相关性。
结果显示较小的块大小(如512、256)在保持内容忠实度和相关性方面表现更佳。
不同分块技能的比较:
- 比较了原始、小到大和滑动窗口等分块技术。
- 度量:
- 平均忠实度和平均相关性:小到大、滑动窗口方法提供了改进的忠实度和相关性,特别是滑动窗口方法在保持高相关性的同时也提供了更高的忠实度。
嵌入(Embedding)选择策略
- 嵌入模型和向量数据库(3.2.3节和3.3节):
- 嵌入模型用于将文本转换为机器能够理解和处理的数值形式,这对于匹配查询和文档非常关键。
- 向量数据库则存储这些数值向量,以便快速检索相关信息。
不同嵌入模型的结果:
- BAAI/LLM-Embedder、BAAI/bge-large-en表现最好
- BAAI系列模型(包括bge系列)整体表现最好
- 数据表明,专门针对检索优化的模型(如BAAI系列)比通用模型表现更好
这三个系列的主要特点和应用场景:
- BAAI系列模型:
- BAAI是北京智源人工智能研究院(Beijing Academy of Artificial Intelligence)的缩写
- 专门针对搜索和检索场景优化设计的embedding模型
- 特点:
- 针对中英文语义匹配和检索进行了特殊优化
- 提供不同规模的模型(base/small/large)以适应不同应用场景
- 在语义相似度和文本检索任务上表现优异
- 主要用途:高性能的文本检索、语义搜索、问答系统等
- Alibaba-NLP/thenlper系列:
- Alibaba-NLP是阿里巴巴开发的自然语言处理模型
- thenlper是社区开发的开源NLP工具
- 特点:
- 更偏向通用NLP任务
- 模型设计相对通用,不像BAAI那样专注于检索场景
- 在一般文本理解任务上表现不错
- 主要用途:通用文本处理、文本分类、命名实体识别等NLP任务
- sentence-transformers系列:
- 是最早的一批专门用于生成句子嵌入的模型之一
- 由UKP Lab开发和维护
- 特点:
- 设计简单直接,容易使用和理解
- 计算资源需求相对较小
- 主要针对句子级别的表示学习
- 主要用途:基础的句子相似度计算、简单的文本匹配任务
从性能表现看,BAAI系列之所以表现最好,是因为:
- 专门针对检索场景优化
- 采用了更先进的训练方法和更大的训练数据
- 模型架构更适合处理检索任务
这就解释了为什么在RAG场景下,BAAI系列的表现显著优于其他两个系列。
它们虽然都是embedding模型,但各自的优化方向和设计目标不同,导致在特定任务上的表现差异较大。
向量数据库(VectorDatabase)选择策略
不同向量数据库的比较:
- 比较了Weaviate、Faiss、Chroma、Qdrant和Milvus等数据库。
- 关键特性:
- 多种索引类型
- 十亿级向量支持
- 混合搜索
- 云原生
Milvus 在多个关键特性上表现出色,是综合性能最强的向量数据库。
检索(Retrieval)策略
- 检索方法(3.4节):
- 根据查询的需要,检索系统会从数据集中找到最相关的文档。
- 可能包括查询重写、查询分解或生成基于查询的伪文档等策略。
- 检索的方法和策略会根据需要检索的数据量和复杂性进行调整。
TREC DL19/20不同检索方法的结果:
- 方法:包括无监督(BM25, Contriever)和监督(LLM-Embedder 及其变体)方法。
- 度量:包括平均精度(mAP)、归一化折扣累积增益(nDCG@10)、召回率(R@50, R@1k)和延迟。
- 结果:表中突出显示了每种方法的最佳和次优结果。HyDE + Hybrid Search 组合在多个度量上表现最佳。
HyDE 假设性文档嵌入:大模型 + 对比学习,从关键词相似度搜索到语义搜索
HyDE在使用不同假设文档和查询连接策略的表现:
- 配置:包括不同的伪文档和查询连接方式。
- 度量:同样包括mAP、nDCG@10、R@50 等。
结果:显示在使用更多伪文档和查询时,性能有所提高,但同时也增加了延迟。
混合搜索中不同alpha值的结果:
- Hyperparameter α:不同的权重值反映在稀疏检索和密集检索之间的平衡。
- 度量:包括mAP、nDCG@10、R@50等。
- 结果:α = 0.3 提供了最佳的平衡,优化了性能和延迟。
重排(Reranking)策略
- 重新排名和文档重组(3.5节和3.6节):
- 在检索到相关文档后,系统会重新排列这些文档,确保最相关的信息最先被呈现。
- 文档的最终排列方式可能影响信息的呈现和后续生成的响应质量。
MS MARCO Passage排名中不同重新排名方法的结果:
- 方法:包括不重新排名、随机排名、DLM 重新排名等。
- 度量:包括MRR@1、MRR@10、命中率@10 和延迟。
- 结果:RankLLaMA 在多个度量上表现最佳,尤其是在延迟较低的情况下。
- 重排的两种主要方法:
-
DLM重排:
- 使用深度语言模型进行重排
- 通过微调实现查询和文档的相关性分类
- 包括三种具体模型:monoT5、monoBERT、RankLLaMA
-
TILDE重排:
- 基于预测模型词汇表中查询词元的概率
- 通过NCE损失函数优化
- 针对文档中出现的词元进行索引
- 特点是速度快,索引体积小
在RAG系统的重排策略中,经过实验对比:
- 推荐使用monoT5作为通用解决方案(性能和效率平衡)
- 如果追求最佳性能可以用RankLLaMA(但延迟高)
- 如果要求快速响应则选择TILDEv2(性能略低但速度极快)
摘要(Summarization)策略
- 问题背景:
- RAG检索的文档可能包含冗余或不必要信息
- 文档太长会降低大模型推理速度
- 需要一个有效的摘要方法来提取关键信息
- 两类解决方案:
- 抽取式(Extractive):直接从原文选取重要句子
- 抽象式(Abstractive):理解后重新组织生成摘要
- 摘要生成(3.7节):
- 从检索到的文档中提取关键信息,去除不必要的内容,这对于生成准确、简洁的响应至关重要。
不同摘要方法的比较:
- 方法:包括无摘要、抽取式(BM25, Contriever)和生成式(SelectiveContext, LongLLMLingua)。
- 度量:F1分数和令牌数(#token)。
- 结果:使用Recomp的抽象式摘要方法能在保持答案质量的同时将文档长度减少57%(从139个token减到59个),既提升了性能也降低了延迟。
微调(Fine-tune)的选择策略
- 问题背景:
- 需要优化RAG中检索器和生成器的性能
- 微调时需要考虑相关和不相关的上下文
- 不同的微调组合方式:
- Dg:仅使用相关文档(dgold)
- Dr:仅使用随机文档(drandom)
- Dgr:混合使用相关和随机文档
- Dgg:使用两份相关文档
- 实验结果:
- 从图表可以看出,Mgr(混合相关和随机文档的模型)表现最佳
- 这种混合策略既保持了对相关信息的有效利用
- 又提高了模型对不相关信息的鲁棒性
结论:采用混合策略(同时使用相关文档和随机文档)效果最好,因为这既保证了模型对相关信息的利用能力,又增强了对干扰信息的鲁棒性。
查询分类(Query Classification)策略
- 性能提升:
- 整体指标提升显著:从0.428提升到0.443
- 查询延迟大幅降低:从16.58秒减少到11.71秒(减少约30%)
- 分类器效果优异:
- BERT-base-multilingual模型作为分类器表现极好
- 所有关键指标都达到了95%左右:
- Accuracy: 0.95
- Precision: 0.96
- Recall: 0.94
- F1: 0.95
- 策略有效性:
- 验证了"查询分类"这个预处理步骤的必要性和有效性
- 证明了将查询分为"sufficient"和"insufficient"两类的策略是正确的
- 确认了使用分类器来自动化决策过程是可行的
- 实践指导:
- 不是所有查询都需要通过RAG检索
- 针对性处理(直接LLM或RAG)比统一处理更高效
- 通过预先分类可以显著提升系统性能和用户体验
核心结论:Query Classification是RAG系统中一个非常重要且有效的优化策略,它既提高了系统性能,又降低了响应时间,是RAG最佳实践中不可或缺的一环。
最佳测评结果
作者描述了两种实施检索增强生成(RAG)系统的最佳实践方法,每种方法都针对特定需求进行了定制:一种注重最大化性能,另一种在效率和效果之间寻求平衡。
-
最佳性能实践:
- 查询分类模块:必要,用于提高系统的整体准确性和效率。
- 检索方法:“Hybrid with HyDE”方法用于检索,以实现最高的性能。
- 重新排名:采用monoT5进行重新排名,优化检索到的文档排序。
- 重组方法:选择“Reverse”进行文档重组,确保相关内容更接近查询,以优化结果。
- 摘要生成:使用Recomp进行摘要处理,以精准总结和简化检索结果。
- 微调策略:Mgr(混合相关和随机文档的模型)表现最佳。
-
平衡效率实践:
- 在保留查询分类和使用Recomp摘要生成的基础上,推荐使用“Hybrid”方法进行检索,使用TILDEv2进行重新排名,以及“Reverse”重组方法。
- 这种配置在减少延迟的同时,保持了与最佳性能实践相当的性能表现。
通过检索即生成策略,加速多模态内容生成,显著提升视觉问答能力
这幅图(图4)描述了多模态检索的工作流程,具体展示了文本到图像(Text2Image)和图像到文本(Image2Text)的检索过程:
文本到图像检索(Text2Image Retrieval):
- 用户查询:用户输入一个文本查询,例如“A dog is sleeping”。
- 检索过程:系统在数据库中查找与文本查询最相似的图像。
- 如果找到高度相似的图像,该图像直接被返回给用户。
- 如果没有找到高度相似的图像,则使用图像生成模型根据文本查询生成新的图像。
图像到文本检索(Image2Text Retrieval):
- 用户提供图像:用户上传一张图像,例如一只狗正在喝水的照片。
- 检索过程:系统尝试在数据库中找到与提供的图像最相似的图像。
- 如果找到高度相似的图像,系统将返回该图像的预存描述(即图像的标签或说明)。
- 如果没有找到高度相似的图像,图像描述模型将生成一个新的描述来解释图像内容。
图示元素:
- 用户查询(蓝色方框)
- 低相似度(绿色箭头)
- 高相似度(蓝色箭头)
- 图像生成模型(黄色标签)
- 图像描述模型(绿色标签)
这种多模态检索能力增强了系统处理图像和文本信息的能力,为用户提供更丰富和互动的查询响应。
它适用于需要快速精确访问图像库的场景,如在线媒体库、教育资源或者客户支持系统。
“检索即生成”(Retrieval as Generation)策略是一种结合检索和生成模型来快速提供多模态内容的方法,特别是在视觉问答(Visual Question Answering, VQA)等应用中。
这种策略利用了现有的数据资源来提供快速且准确的回答,同时利用生成模型来填补检索结果中的空白或提供附加信息。
1. 构建一个强大的多模态数据库
- 数据收集:收集大量的图像和与之相关的文本数据,如描述、标签或问答对。
- 数据索引:使用高效的向量索引技术(如FAISS或Milvus)对图像和文本进行编码和索引,以便快速检索。
2. 实施高效的检索算法
- 多模态嵌入:使用深度学习模型(如CLIP或ViLBERT)生成跨模态嵌入,这可以同时理解图像内容和相关的文本描述。
- 相似性匹配:设计算法以根据用户的视觉或文本查询检索数据库中的相似项。例如,对于视觉问答,根据问题内容检索相关图像和其问答对。
3. 结合生成模型
- 生成未覆盖内容:对于检索结果不足以完全回答用户查询的情况,使用生成模型(如GPT-3或DALL-E)基于检索到的内容生成缺失信息。
- 内容增强:即使检索到了相关内容,也可以使用生成模型增强这些内容的细节或创造性,提供更加丰富和具有吸引力的回答。
4. 优化查询处理
- 智能查询解析:利用自然语言处理技术理解用户查询的具体意图和上下文,从而精准定位到最相关的检索和生成路径。
- 快速响应设计:设计系统以并行处理检索和生成步骤,最小化响应时间。
5. 用户交互与反馈
- 动态学习:系统应能根据用户反馈动态优化检索和生成模型,提高准确性和用户满意度。
- 界面优化:开发直观的用户界面,使用户能轻松提出问题并接收信息,提升整体用户体验。
通过以上步骤,"检索即生成"策略不仅能显著提升视觉问答的能力,还能在教育、电商、客户支持等多个领域提供高效、互动的用户体验。
这种方法充分利用了现有信息资源的同时,通过创造性生成补充内容,满足更广泛的用户需求。