RAG学习(一)

温馨提示:

这是本人的第一篇博客,有写的不好的还请包含。写博客的主要目的是在自己枯燥的研究生生涯中寻得一丝精神寄托,当个乐子看就行。由于本人的研究方向是大模型,博客的大部分内容是关于大模型的,这些都是从其他博客或者公众号上面看到的知识点,再结合本人的理解。大家可以多去看看原文。

原文链接:RAG“新手村”速通攻略

本文介绍:

本文主要在基础RAG方案之上,从宏观层面梳理RAG的优化策略和方案。作者主要通过两个方面进行论述,即RAG优化核心策略RAG优化方案。本文未涵盖Prompt Engineering和比较复杂的多模态RAG内容。


0、什么是RAG

检索增强生成(Retrieval Augmented Generation,简称 RAG)为大语言模型 (LLMs) 提供了从数据源检索的信息,以此为基础生成回答。简而言之,RAG 结合了搜索技术和大语言模型的提示功能,即模型根据搜索算法找到的信息作为上下文来回答查询问题。无论是查询还是检索的上下文,都会被整合到发给大语言模型的提示中。

使用RAG的优势在于:LLMs 虽展现出强大能力,但在实际应用中,例如在准确性、知识更新速度和答案透明度方面,仍存在挑战。RAG 被证明能显著提升答案的准确性,并特别是在知识密集型任务上减少模型的错误输出。通过引用信息来源,用户可以核实答案的准确性,从而增强对模型输出的信任。此外,RAG 有助于快速更新知识并引入特定领域的专业知识。RAG 有效结合了大语言模型的参数化知识和非参数化的外部知识库,成为实施LLMs的关键方法之一。


1、策略

首先,让我们看看一般RAG的基础方案,如图1。(为什么说是一般呢?因为还有一种高级RAG技术,由于和本篇文章无关,就不在做论述)

图1:RAG的基础方案

大致流程:(1)将知识进行分块,得到若干块。(2)将得到的块通过Embedding Model进行向量化存储到向量数据库中。(3)用户输入问题经过Embedding Model进行向量,再经过向量数据库进行检索。(4)将检索得到前k个相关的块,以及用户问题通过提示工程输入给大模型。(5)大模型经过分析得到答案。

RAG优化核心策略主要基于Information Retrieval的2-stage经典思路展开:即同时保证高召回率和精度。2-stage在基础RAG策略上进行升级(图2),包含两个阶段:

阶段1:最大化召回率(High Recall),同时接受较低的精度( Low Precision)。此阶段涵盖RAG的Indexing和Retrieval部分(为了区别于一般意义上的Retrieval,我们改称该部分为Recalling),其目标是使用较为快速、低廉的方式覆盖全部输入文档,并保证问题相关的文档切片都可以被召回。

阶段2:提升精度(Higher Precision)。此阶段由新增的Reranking部分构成,其目的是在切片文档被获取后进行“Postprocessing”,以提升Top_K的精度,降低送往大模型文档切片的噪声。

图2:基础RAG -> 2-stage策略

将RAG的准确率从45%提升到98%主要来源于针对IndexingRecallingReranking这三个部分的优化。也就是说这三部分也是RAG优化的核心。

图3: OpenAI RAG最佳实践


2、方案选择

2-stage在Recalling、Indexing和Reranking等三个部分至少存在9个优化点位。每个点位都包括N个技术实现,此外,点位的组合又会产生多种优化方案。

图4: RAG的优化点位

(1、文本分块。2、索引。3、Indexing。4、存储。5、查询优化。6、嵌入。7、向量存储。8、检索。9、重排)

优化方案选择:用“Top-Down”策略。

(一)首先,依据实际业务需求厘清优化目标,明确要在哪一个或者多个部分实现优化。

Recalling、Indexing和Reranking三部分优化目标分别如下:

  1. Recalling的目标是完善Query以取得更高的召回率;
  2. Indexing的优化目标是在提升召回率的同时保证语义完整性;
  3. Reranking的优化目标是保证Top_K的精度。

(二)其次,根据优化目标,选择不同类型的方案或方案组合。(图5)

图5: 主流方案及其优化目标

(1)Standard 2-stage由基础RAG策略+Reranking环节构成。该方案中最重要的是Reranker(也称为cross-encoder,由大模型或者算法实现),其能够在召回的切片之上,基于相关性对切片进行重排,以保证返回最相关的n个切片。

图6: Reranker的基本原理

(2)Question Transformation是通过改写、拓展和丰富问题的语义以提升召回率。当前比较流行的方案包括:

  • Rewrite-Retrieve-Read:使用大模型改写问题;
  • Step Back prompting:使用大模型产生问题的“Step-back Question”,并将问题和Step-back一同用于召回;
  • Follow Up Questions:将历史对话记录融入当前问题进行召回;
  • Multi Query Retrieval:使用大模型基于原始问题,从不同角度产生多个新问题,并使用每一个新问题进行召回;
  • HyDE:使用大模型产生问题的Hypothetical答案,并将问题和答案一同用于召回。

(3)RAG-Fusion结合Multi Query Retrieval 和基于Reciprocal Rank Fusion (RRF)算法的Reranker,通过产生多个问题变种、进行多次召回,再用RRF算法进行合并和排序来提升召回率和精度。RAG-Fusion兼备2-stage和Query Transformation的优点,且不需要大模型来进行Reranking,是当下热度较高的方案。其主要流程如下:

图7: RAG-Fusion的工作流程

(4)Hybrid Search同时执行Keyword Search和Vector Search,并使用RRF算法合并、并重排两种不同检索的结果(下图)。相较于Vector Search,Keyword Search更善于:

  • 精准匹配,例如产品名称和人名;
  • 仅匹配几个字符;
  • 匹配低频度词汇。

图8: Hybrid Search

BM25是Keyword Search的核心算法,该算法估算Keyword与文档之间的相关性,已经被广泛应用于搜索系统,其特点是可以高速完成对海量文档的覆盖。

(5)Small-to-Big采用分离索引和内容的方式以提升Vector Search的完整性。该类方案通常通过一小段索引(节点)关联到一大块完整的切片,以小切片搜索的精确度驱动大切片内容的完整性。Small-to-Big有如下实现:

  • Sentence-window retrieval:索引句子,关联到句子的上下文;
  • Auto-merging retrieval:通过子节点递归关联父节点;
  • Multiple-Vector Retriever:通过切片的Summary,找到存储在Doc Store中的切片原文。

(6)Question Construction是利用Metasearch和Text-to-SQL等技术提升对“结构化”数据查询的准确性。“结构化”数据不仅仅存在于关系型数据中(例如数据库),也存在于非关系型的文本中(例如文本中的数字,年份等)。使用Metasearch和Text-to-SQL可以有效地提升这部分数据的召回率。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值