searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

RAG研究范式的演变

2024-12-16 09:18:18
1
0

RAG是什么?

传统预训练的语言模型,在生成文本时仅依赖于其预训练期间学到的知识,无法访问最新的信息或特定领域的专业知识,除非训练数据中已经包含了这些信息。因此在做某些专业领域的问答时,存在一定的信息封闭性。RAG全名Retrieval-Augmented Generation,意为检索增强生成技术,它的发展恰恰是来解决信息封闭的问题。它通过引入外部知识源(例如搜索引擎、数据库等),使得模型可以在生成回答时动态检索最新或最相关的文档片段,它与LLM的联动关系可以参考下图:
可以看出,它主要包括三个步骤:1. 索引化。将文档切分成片段,再编码为向量,存储在向量数据库里。2. 检索。检索到与问题相似度最高的top k 的片段。3.生成。将原始问题和检索得到的“块”都作为LLM的输入,令其生成最终的回答。
 
RAG的研究范式一直在持续演进,我们将其发展过程分为三个阶段:朴素RAG(Naive RAG)、高级RAG(Advanced RAG)和模块化RAG(Modular RAG),如图所示。
 

朴素RAG

朴素RAG遵循一个传统的处理流程,包括索引、检索和生成三个阶段,这个过程也被称为“检索-阅读”(Retrieve-Read)框架。

索引(Indexing)

这一阶段从原始数据的清理、提取开始,包括如PDF、HTML、Word和Markdown等格式的文件文件,将其转换为统一的纯文本格式。由于语言模型限制了上下文的长度,这些文本被分割成更小、易于处理的片段。再将这些片段编码为向量,存储到向量数据库中。

检索(Retrieval)

当接收到用户查询时,RAG系统使用与索引阶段相同的编码模型,同样的将查询的语句转换为向量。再计算该查询向量与索引的数据库中的片段向量之间的相似度,得到评分最高的top k个片段。

生成(Generation)

用户的提问和检索出来的文档被放在一起,作为大语言模型一整个连贯的输入,得到相应的回答。不同任务要求不同,那么回答方式可能会有所不同:可以选择自身的参数知识的预测结果,也可以选择严格限定在提供的文档信息内。随着对话的增多,这些对话历史都可以融入提示中,使得大模型可以更好的完成多伦对话功能。
但是朴素RAG也存在一定的问题:
  1. 检索阶段在精确性和召回率上表现不好,可能会选择了不匹配或无关的文本片段,甚至遗漏了关键信息。
  2. 在生成阶段的“幻觉”问题,生成的内容与检索到的上下文并不相关。
  3. 在生成阶段,将检索得到的多个文档进行整合,可能会因为文档本身的相似,造成大量冗余;不同文档的风格也不同,整合到一个回答中复杂度也很高。
 

高级RAG

基于朴素RAG,高级RAG主要通过预检索策略和后检索策略来提升检索质量。

预检索过程

高级RAG着重优化了索引结构和查询的方式。优化索引旨在提高被索引内容的质量,包括增强数据颗粒度、优化索引结构、添加元数据、对齐优化和混合检索等策略。查询优化的目标则是明确用户的原始问题,使其更适合检索任务,使用了查询重写、查询转换、查询扩展等技术。

后检索过程

对于由问题检索得到的一系列上下文,后检索策略关注如何优化它们与查询问题的集成。这一过程主要包括重新排序和压缩上下文。重新排列检索到的信息,将最相关的内容予以定位标记,这种策略已经在LlamaIndex2、LangChain和HayStack等框架中得以实施。直接将所有相关文档输入到大型语言模型(LLMs)可能导致信息过载,为了缓解这一点,后检索工作集中选择必要的信息,强调关键部分,并限制了了相应的上下文长度。
 

模块化RAG

模块化RAG相比前两种范式,大大增强了适应性和多功能性。它增加了搜索模块,可以实现相似性搜索;支持通过微调优化检索器等多种策略来丰富组件功能。

新模块

模块化RAG引入了额外的专业组件来增强检索和生成能力,简单介绍以下几个新模块:
  1. 搜索模块适应特定场景,能够直接跨搜索引擎、数据库和知识图谱等各种数据源进行搜索;
  2. RAGFusion通过采用多查询策略扩展用户查询,利用并行向量搜索和智能重排,解决了传统搜索的局限性。
  3. 记忆模块利用LLM的记忆引导检索,创建一个无界限的记忆池,通过迭代自我增强使文本更紧密地与数据分布对齐。
  4. 路由模块在RAG系统中导航各种数据源,选择查询的最佳路径。
  5. 预测模块旨在通过LLM直接生成上下文来减少冗余和噪音,确保相关性和准确性。

新模式

模块化RAG允许替换模块或重新配置,这样可以针对特殊的任务进行特定处理,可以显著提升针对多类问题的解决能力。并且模块化RAG可以整合新模块、调整现有模块之间的交互流程,大大提升了灵活性,增强了其在不同任务中的适用性。
模块化RAG流的灵活编排展现了自适应检索技术的好处,如FLARE和Self-RAG,它们超越了固定的RAG检索过程,根据不同场景来评估检索的必要性。此外,灵活编排可以让RAG系统更轻松地与其他技术(如微调或强化学习)集成。
0条评论
0 / 1000
c****k
3文章数
0粉丝数
c****k
3 文章 | 0 粉丝
c****k
3文章数
0粉丝数
c****k
3 文章 | 0 粉丝

RAG研究范式的演变

2024-12-16 09:18:18
1
0

RAG是什么?

传统预训练的语言模型,在生成文本时仅依赖于其预训练期间学到的知识,无法访问最新的信息或特定领域的专业知识,除非训练数据中已经包含了这些信息。因此在做某些专业领域的问答时,存在一定的信息封闭性。RAG全名Retrieval-Augmented Generation,意为检索增强生成技术,它的发展恰恰是来解决信息封闭的问题。它通过引入外部知识源(例如搜索引擎、数据库等),使得模型可以在生成回答时动态检索最新或最相关的文档片段,它与LLM的联动关系可以参考下图:
可以看出,它主要包括三个步骤:1. 索引化。将文档切分成片段,再编码为向量,存储在向量数据库里。2. 检索。检索到与问题相似度最高的top k 的片段。3.生成。将原始问题和检索得到的“块”都作为LLM的输入,令其生成最终的回答。
 
RAG的研究范式一直在持续演进,我们将其发展过程分为三个阶段:朴素RAG(Naive RAG)、高级RAG(Advanced RAG)和模块化RAG(Modular RAG),如图所示。
 

朴素RAG

朴素RAG遵循一个传统的处理流程,包括索引、检索和生成三个阶段,这个过程也被称为“检索-阅读”(Retrieve-Read)框架。

索引(Indexing)

这一阶段从原始数据的清理、提取开始,包括如PDF、HTML、Word和Markdown等格式的文件文件,将其转换为统一的纯文本格式。由于语言模型限制了上下文的长度,这些文本被分割成更小、易于处理的片段。再将这些片段编码为向量,存储到向量数据库中。

检索(Retrieval)

当接收到用户查询时,RAG系统使用与索引阶段相同的编码模型,同样的将查询的语句转换为向量。再计算该查询向量与索引的数据库中的片段向量之间的相似度,得到评分最高的top k个片段。

生成(Generation)

用户的提问和检索出来的文档被放在一起,作为大语言模型一整个连贯的输入,得到相应的回答。不同任务要求不同,那么回答方式可能会有所不同:可以选择自身的参数知识的预测结果,也可以选择严格限定在提供的文档信息内。随着对话的增多,这些对话历史都可以融入提示中,使得大模型可以更好的完成多伦对话功能。
但是朴素RAG也存在一定的问题:
  1. 检索阶段在精确性和召回率上表现不好,可能会选择了不匹配或无关的文本片段,甚至遗漏了关键信息。
  2. 在生成阶段的“幻觉”问题,生成的内容与检索到的上下文并不相关。
  3. 在生成阶段,将检索得到的多个文档进行整合,可能会因为文档本身的相似,造成大量冗余;不同文档的风格也不同,整合到一个回答中复杂度也很高。
 

高级RAG

基于朴素RAG,高级RAG主要通过预检索策略和后检索策略来提升检索质量。

预检索过程

高级RAG着重优化了索引结构和查询的方式。优化索引旨在提高被索引内容的质量,包括增强数据颗粒度、优化索引结构、添加元数据、对齐优化和混合检索等策略。查询优化的目标则是明确用户的原始问题,使其更适合检索任务,使用了查询重写、查询转换、查询扩展等技术。

后检索过程

对于由问题检索得到的一系列上下文,后检索策略关注如何优化它们与查询问题的集成。这一过程主要包括重新排序和压缩上下文。重新排列检索到的信息,将最相关的内容予以定位标记,这种策略已经在LlamaIndex2、LangChain和HayStack等框架中得以实施。直接将所有相关文档输入到大型语言模型(LLMs)可能导致信息过载,为了缓解这一点,后检索工作集中选择必要的信息,强调关键部分,并限制了了相应的上下文长度。
 

模块化RAG

模块化RAG相比前两种范式,大大增强了适应性和多功能性。它增加了搜索模块,可以实现相似性搜索;支持通过微调优化检索器等多种策略来丰富组件功能。

新模块

模块化RAG引入了额外的专业组件来增强检索和生成能力,简单介绍以下几个新模块:
  1. 搜索模块适应特定场景,能够直接跨搜索引擎、数据库和知识图谱等各种数据源进行搜索;
  2. RAGFusion通过采用多查询策略扩展用户查询,利用并行向量搜索和智能重排,解决了传统搜索的局限性。
  3. 记忆模块利用LLM的记忆引导检索,创建一个无界限的记忆池,通过迭代自我增强使文本更紧密地与数据分布对齐。
  4. 路由模块在RAG系统中导航各种数据源,选择查询的最佳路径。
  5. 预测模块旨在通过LLM直接生成上下文来减少冗余和噪音,确保相关性和准确性。

新模式

模块化RAG允许替换模块或重新配置,这样可以针对特殊的任务进行特定处理,可以显著提升针对多类问题的解决能力。并且模块化RAG可以整合新模块、调整现有模块之间的交互流程,大大提升了灵活性,增强了其在不同任务中的适用性。
模块化RAG流的灵活编排展现了自适应检索技术的好处,如FLARE和Self-RAG,它们超越了固定的RAG检索过程,根据不同场景来评估检索的必要性。此外,灵活编排可以让RAG系统更轻松地与其他技术(如微调或强化学习)集成。
文章来自个人专栏
个人专栏_LING
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0