检索增强生成介绍

1. RAG技术背景

思考:以下问题有什么特点?

在这里插入图片描述
由于大模型进行训练的成本很高,并非能在短期内进行迭代升级,因此,对于以上的问题,我们需要借助“外部的力量”

RAG是什么?

  • RAG定义:Retrieval-Augmented Generation,检索增强生成是一种将信息检索和生成模型相结合的技术。
    通俗来说,RAG就像是一个聪明的“知识助手”,它有两个主要的功能:
    在这里插入图片描述

引入RAG的优势

在这里插入图片描述

RAG相关的Prompt

  • RAG框架的最终输出被设计为一种协同工作模式,将检索到的知识融合到大型语
    言模型的生成过程中。在应对任务特定问题时,RAG会生成一段标准化的句子,
    引导大模型进行回答。下面是RAG输出到大型语言模型的典型模板:
你是一个{task}方面的专家,请结合给定的资料,并回答最终的问题。请如实回答,
如果问题在资料中找不到答案,请回答不知道。
问题:{question} 
资料:
- {information1} 
- {information2} 
- {information3}

RAG在问答中的案例

在这里插入图片描述

RAG与SFT的比较

特性比较 RAG SFT(Supervised Fine-tuning)
知识更新 动态,直接更新检索知识库,无需频繁重新训练,适合数据动态变化场景 静态,需要重新训练用于知识和数据的更新。微调不能保证这些知识的召回,可能不可靠
外部知识 擅长利用外部资源,特别适合处理文本数据,能覆盖大部分文档以及结构化/非结构化数据库等资源 可用于将预训练中外部学习到的知识与大语言模型保持一致,但不适应于频繁变化的数据源
模型定制 无法充分定制模型行为或写作风格 允许根据特定风格或术语调整LLM行为、写作风格或特定领域知识
可解释性&降低幻觉 答案能够追溯到具体的数据来源,提供更高的可解释性和可追踪性,本质上不容易产生错误或虚构的回答 根据特定领域的数据训练模型,有助于减少幻觉,但面对未训练过的输入时仍可能出现幻觉

如何选择RAG or SFT?

在这里插入图片描述

  • RAG侧重“知识扩展”,SFT侧重“行为对齐”。

2. 关键技术概览

RAG基础技术流程

在这里插入图片描述

RAG基础技术流程介绍

在这里插入图片描述

文件切分方法概览

在这里插入图片描述

文件切分技巧

  • 对于自然语言,推荐使用Token分割器,结合Chunk Size和Overlap Size可以得到不同的切分:
  • Chunk Size(块大小):表示将文本划分为较小块的大小。这是分割后每个独立文本块的长度或容量。块大小的选择取决于应用的需求和对文本结构的理解。
  • Overlap Size(重叠大小):指相邻两个文本块之间的重叠部分的大小。在切割文本时,通常希望保留一些上下文信息,重叠大小就是控制这种上下文保留的参数。

向量化:常见的三种向量类型

在这里插入图片描述

知识检索:文本多路召回策略

  • 多路召回逻辑是在文本检索中常用的一种策略,其目的是通过多个召回路径(或
    方法)综合获取候选文档,以提高检索的全面性和准确性。
    在这里插入图片描述

RAG技术汇总

  • RAG 的应用已经不仅仅局限于问答系统,其影响力正在扩展到更多领域。现在,推荐系统、信息抽取和报告生成等多种任务都开始受益于 RAG 技术的应用。与此同时,RAG 技术栈也在井喷。
  • 除了已知的 Langchain 和LlamaIndex 等工具,市场上涌现出更多针对性的 RAG 工具。
    在这里插入图片描述

3. 私域知识问答案例流程

从一个例子开始

  • 任务:创建一个私域知识问答机器人,能够针对任何网站/文档进行相关问答。

在这里插入图片描述

RAG过程示意图

在这里插入图片描述

答案生成:为大语言模型提供额外的知识来回答问题

在这里插入图片描述

通过系统提示给出 LLM 自定义Prompt

  • 第一个组成部分是系统提示。系统提示给予语言模型整体指导。
  • 在这种情况下,我们希望它执行更具体的操作。
  • 下面是一个简短的系统提示示例,为 LLM 提供了更详细的说明:
  • “你是一个交通行业领域的知识机器人,你将获得知识库的提取部分(标有文档)和一个问题,请使用知识库中的信息回答问题。{相关文档}”

检索步骤:从知识库中获取正确的信息

在这里插入图片描述

使用嵌入模型处理知识片段

  • 在索引方面,首先将相关知识库分解为文本块。
    在这里插入图片描述
  • 完成此操作后,我们将每个知识片段通过Embedding模型处理,并返回该知识文本片段的嵌入表示。然后,我们保存该片段以及向量数据库中的嵌入,该数据库针对数字向量进行了优化。
    在这里插入图片描述

使用嵌入找到最匹配的知识片段

在这里插入图片描述

小结:查询向量数据库

  • 实际上,这个“最近的点是什么”问题是通过查询向量数据库。所以实际的过程看起来更像是这样的:
    在这里插入图片描述

RAG在实践中所面对的挑战

在这里插入图片描述
本章小结

  • 描述了RAG技术背景、实现流程
  • 讲解了RAG流程中的关键技术
  • 举例讲解了构建私域知识问答的简单流程

文章内容均引用华为云HCCDA-AI内容:若有侵权,联系即删

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐