跳到主要内容

RAG 的优化进阶与引入 Reranker

信息
2024年8月3日 · ·

本文将探讨 RAG 系统优化进阶与 Reranker 技术在 RAG 系统中的应用,从技术原理到性能评估,再到实际应用,全面解析 RAG 系统及其性能优化。

引言

在简单的 RAG 系统中,通过结合检索和生成技术,已经可以显著提升了对复杂查询的响应质量。Reranker 作为 RAG 系统中一个关键的进阶组件,通过对原 RAG 中检索到的内容进行重新组织,可以进一步提高系统的准确性。

本文将深入探讨 RAG 系统的优化方式,其中会着重介绍 Reranker 技术的基本工作原理、评估方法、优点与局限以及在 RAG 系统中的应用。

RAG 优化分析

RAG 系统的核心是检索Retrieval)与增强生产Augmentation & Generation),因此优化的方向可以从检索质量增强生产效果这两个方面入手。

RAG with Reranker

检索质量

总体而言,RAG 系统的检索质量是局限于索引构建阶段向量索引算法的。其中索引构建阶段往往是既定的全局且粗粒度的方式,其优化层度将极大的决定 RAG 检索的精度和召回效果。常见的优化手段有添加滑动窗口数据清洗等(索引构建发生在 Retrieval 之前,此处将之归入 Pre-Retrieval 阶段)。

  • 滑动窗口:在将原始数据切分成数据块时,允许相邻数据块之间的首尾各重叠部分,如要将"abcdef"切分成长度为 3 的块,可以允许 1 字符的重叠,那么滑动窗口的切分结果就是:["abc", "cde", "ef"](不允许重叠的切分结果则是:["abc", "def"])。 这样可以一定层度保障数据块信息及其索引的完整性,从而提升召回率。
  • 数据清洗:清洗掉不相关的、过时的、不准确的、冗余的信息。

另一方面是向量索引算法方面的优化,对向量索引算法直接进行深入研究和优化往往是不划算的,我们只需要了解这些算法的特性,在不同的场景选择合适的算法及其用法,就能起到很好的优化效果。常见的优化方式是定制 Embedding Model采用动态 Embedding Model进行混合搜索等(此处向量索引算法对应了向量数据库对索引数据的存储和开放检索的能力,归入 Retrieval 阶段正好合适)。

  • 定制 Embedding Model:针对特定领域,使用领域相关的数据对 Embedding Model 进行微调,增强向量转换准度。
  • 动态 Embedding Model:基于 Transformer 架构的 Embedding Model,因为其注意力机制的存在,模型在将词转换为向量时,可以注意到词所处的上下文信息,从而动态的调整词准确的含义。
  • 混合搜索:同时使用关键词过滤和向量相似度搜索两种检索模式,其中关键词可以准确且“硬性”的排除一些不相关内容,而向量相似度搜索则基于对内容的“理解”去筛选最相关的内容,结合了两者优势。

增强生成效果

RAG 系统的增强生成是指将检索到的内容与原始提示整合成更优的提示,将此提示传给 LLM,令 LLM 生成的内容质量提升。这一步中“整合”的优劣,也将极大影响 LLM 最终生成结果的质量(整合实际发生在 Augmentation & Generation 之前,Retrivial 之后,因此可以将这一过程归入 Post-Retrivial 阶段)。

整合环节往往从提示与检索内容的相关性、连贯性、冗余度等方面进行优化,常用的方式是Prompt 压缩Reranking 等。

  • Prompt 压缩:与检索阶段的数据清洗类似,移除无关内容和冗余内容等,突出最相关内容。
  • Reranking:引入 Reranker 模型,增加知识检索范围,比如多路召回,然后对检索到的内容进行相关性排序和筛选,提升检索内容的相关性。

引入 Reranker

上文提到优化增强生产效果的方式有一种是引入 Reranker 模块。Reranker 在信息检索方面所扮演的角色以及产生的效果相当重要,关于 Reranker 的研究和落地也是一个不小的课题,因此这里有必要进一步探索一下。

Reranker 实现方式

在 RAG 系统中,Reranker 模块对检索到的内容与原始提示进行相关度评估,并给出其排序的结果,可以将知识检索范围设置成多路,如此便可以更广泛、更精细地把控最终检索到的内容,从而提高了 RAG 系统的性能。

Reranker 模块可以直接是一个基于加权得分算法的统计方法,也可以是用深度学习模型训练得到端到端(提示和检索内容到得分)的模型。

  • 统计方法:将多路召回的相识度按照一定的权重计算得分,这种方式的很明确,延迟影响也很小。
  • 深度学习模型:神经网络可以很好的分析输入之间语义的相关性,并以得分的形式直接输出,这种方式一定程度上是直接基于语义理解得出的最相关性,具有“柔性”的优点,而且不受多路召回中内容原始相对位置的影响。

Reranker 性能评估

Reranker 的性能通常通过命中率平均倒数排名这两个指标进行评估。

  • 命中率(Hit Rate):检索到的文档中找到正确答案的查询所占的比例。
  • 平均倒数排名(Mean Reciprocal Rank, MRR):所有查询中正确答案排名的倒数的平均值。如果第一个相关文档就是搜索结果的第一位,那么倒数就是 1;如果是第二位,倒数就是 1/2,以此类推。

Hit Rate 和 MRR 也是 Embedding Model 的评估指标,我们可以在不使用 Reranker 的场景下评估 Embedding Model 的这两个性能值,然后再适配不同的 Reranker 模型进行整体性能评估,最终找到综合得分最好的 Embedding + Reranker 组合。

优点与局限性

  1. Reranker 的优点
  • 提高精度:Reranker 通过对检索结果重新排序,可以显著提高最终检索结果的准确性。
  • 灵活性:适用于单路召回和多路召回场景,能够链接各种类型的查询和知识库类型。
  • 减少幻觉:通过提供更准确的上下文减少生成模型产生幻觉的风险。
  • 实时应用:在 RAG 系统中,Reranker 的影响是实时的,它可以作为一个独立模块进行评估和优化。
  1. Reranker 的局限性
  • 增加计算成本:Reranker 的计算成本较高,尤其是基于深度学习模型的计算。
  • 增加系统延时:Reranker 的引入会增加系统的响应时间,尤其是使用深度学习模型时。
  • 增加系统复杂性:集成 Reranker 需要复杂的系统设计支持,并需要持续维护 Reranker 模块。
  • 引入数据隐私和安全风险:Reranker 可能接收到敏感数据。

在对精度和准确性要求较高的场景下,Reranker 的引入是不错的选择;反之,在对响应速度和成本控制要求较高的场景下,需要对 Reranker 持保守态度,可以优先考虑基于统计方法的 Reranker。

应用场景

RAG 系统通过 Reranker 实现了对检索结果的优化,提升了生成模型的输入质量。在 RAG 系统中,Reranker 的应用包括但不限于问答系统、内容创作、自动摘要和搜索等场景。

  • 问答系统:Reranker 帮助系统从大量文档中检索并重排答案,提供更加准确的问题回答。
  • 内容创作:Reranker 通过检索和重排相关信息,为创作者提供灵感和素材。
  • 自动生成摘要:Reranker 在自动摘要的任务中对文档的关键部分进行重排,以生成更加精炼和准确的摘要。

结语

RAG 的优化可以从检索质量和增强生成效果两个方面入手,其中 Reranker 作为 RAG 系统的重要组成部分,通过对检索结果的重新排序,可以显著提高最终检索结果的准确性。

Reranker 的优点在于提高精度、灵活性、减少幻觉和实时应用,但也存在增加计算成本、增加系统延时、增加系统复杂性和引入数据隐私和安全性等局限性。

Reranker 是高精度要求场景下的优选方案,但在对响应速度和成本控制要求较高的场景下,需要对 Reranker 保持保守态度。

Reranker 在问答系统、内容创作、自动摘要和搜索等场景中有着广泛的应用前景。