0
点赞
收藏
分享

微信扫一扫

大模型LLM | RAG从入门到精通(二)RAG通用范式


一、Naive RAG

原始RAG是最早的研究范式,主要包括以下几个步骤:

建立索引: 这一过程通常在离线状态下进行,数据清洗并分块,将分块后的知识通过embedding模型产出语义向量,并创建索引。

检索: 用户的query问题,使用相同的embedding模型,计算问题嵌入和文档块嵌入之间的相似度,选择相似度最高的前K个文档块作为当前问题的增强上下文信息。

生成: 将给定的问题和相关文档合并为新的提示,然后由大型语言模型基于提供的信息回答问题。如果有历史对话信息,也可以合并到提示中,用于多轮对话。

大模型LLM | RAG从入门到精通(二)RAG通用范式_大模型

初级RAG主要在三个方面面临挑战:检索质量低、生成质量差和增强过程难。

  • 检索质量低: 首先使用长文本做索引,不能很好的突出主题,建立索引时,核心知识湮没在大量无用的信息中,其次,使用用户原始query做检索,不能很好的突出其核心诉求,这就导致用户query和知识索引不能很好的匹配,检索质量比较差。
  • 生成质量差: 未检索到知识或检索知识质量差时,大模型自主回答私域问题时,容易产生幻觉,或回答内容比较空洞,无法直接使用,知识库失去了本身的意义。
  • 增强过程难: 将检索到的信息与不同任务整合可能具有挑战性,有时会导致输出不连贯或不一致。此外,还有一个担忧是生成模型可能过度依赖增强信息,导致输出仅仅是复述检索内容而没有添加有洞察力或综合信息。

要解决上面的问题,需要在检索前和检索后做一些优化,这就衍生出了高级RAG的解决方案。

二、Advanced RAG

高级RAG相比于初级RAG,基于初级RAG范式,围绕着知识检索做优化,新增了检索前、检索中以及检索后的优化策略,用于解决索引、检索和生成的问题。

大模型LLM | RAG从入门到精通(二)RAG通用范式_人工智能_02

1、检索前优化

检索前优化集中在知识切分、索引方式和query改写的优化上。

知识切分主要把较长的文本按照语义内聚性的分析切成小块,解决核心知识湮没以及语义截断的问题。

索引方式优化技术通过优化数据索引组织方式提升检索效果。比如去除无效数据或插入某些数据来提高索引覆盖程度,从而达到与用户问题的高匹配度问题。

query改写主要需要理解用户想表达的意图,把用户原始的问题转换成适合知识库检索的问题,从而提高检索的精准程度。

2、检索优化

检索阶段的目标是召回知识库中最相关知识。

通常,检索基于向量搜索,它计算查询与索引数据之间的语义相似性。因此,大多数检索优化技术都围绕嵌入模型展开:

微调嵌入模型,将嵌入模型定制为特定领域的上下文,特别是对于术语不断演化或罕见的领域。例如,BAAI/bge是一个高性能的嵌入模型,可以进行微调。

动态嵌入根据单词的上下文进行调整,而静态嵌入则为每个单词使用单一向量。例如,OpenAI的embeddings-ada-02是一个复杂的动态嵌入模型,可以捕获上下文理解。

除了向量搜索之外,还有其他检索技术,例如混合搜索,通常是指将向量搜索与基于关键字的搜索相结合的概念。如果您的检索需要精确的关键字匹配,则此检索技术非常有益。

3、检索后优化

对检索到的上下文进行额外处理可以帮助解决一些问题,例如超出上下文窗口限制或引入噪声,从而阻碍对关键信息的关注。在RAG调查中总结的检索后优化技术包括:

提示压缩:通过删除无关内容并突出重要上下文,减少整体提示长度。

重新排序:使用机器学习模型重新计算检索到的上下文的相关性得分。

三、Modular RAG

随着 RAG 技术的进一步发展和演变,新的技术突破了传统的检索 - 生成框架,基于此催生了模块化RAG 的概念。在结构上它更加自由的和灵活,引入了更多的具体功能模块,例如查询搜索引擎、融合多个回答。技术上将检索与微调、强化学习等技术融合。流程上也对 RAG 模块之间进行设计和编排,出现了多种的 RAG 模式。

然而,模块化RAG并不是突然出现的,三个范式之间是继承与发展的关系。Advanced RAG是Modular RAG的一种特例形式,而Naive RAG则是Advanced RAG的一种特例。

大模型LLM | RAG从入门到精通(二)RAG通用范式_人工智能_03

1、新增模块

  • 搜索模块: 与相似度检索不同,这部分可以被应用于特定的场景并在一些特殊语料上进行检索。一般使用向量、分词、NL2SQL或NL2Cypher等能力进行检索。
  • 预测模块: 这个技术减少用户问题中的冗余和噪声,更加突出用户真实的意图。该模块不是直接进行检索,而是利用LLM来生成必要的上下文。与通过直接检索获得的内容相比,LLM生成上下文后检索得到的内容更有可能包含相关信息。
  • 记忆模块: 多轮对话的留存,以便下次会话时,能知道之前用户问了哪些问题。
  • 融合模块: RAG-Fusion使用LLM将用户查询扩展为多个查询。这个方法不仅捕捉了用户需要的显示信息,也揭示了更深层次的知识。融合过程包括对原始查询和扩展查询的并行向量搜索,智能重排序,并得到最佳搜索结果。这种复杂的方法确保了搜索结果与用户的显式和隐含的意图保持紧密一致,从而能找到更深刻和更相关的信息。
  • 路由模块: RAG系统的检索流程使用了各种来源的内容,包含不同领域、语言、形式。这些内容都可以根据需要进行修改或合并。查询路由器还为查询选择适当的数据库,其中可能包括各种来源内容,如向量数据库、图数据库或关系数据库,或层次结构索引。开发者需要预先定义好查询路由器的决策方式,并通过LLM调用执行,它将查询指向所选的索引。
  • 任务适配器模块: 根据任务定制化Adapter。

2、新增模式

基于上面六大模块,可快速组合出属于自己业务的RAG,每个模块高度可扩展,灵活性极大。

比如:

RR模式,即可构建出传统的Naive RAG;

RRRR模式可构架出Advanced RAG;

还可以实现基于检索结果和用户评价的奖惩机制,用户强化和纠正检索器的行为。



举报

相关推荐

0 条评论