RAG简介

举报
slx_share 发表于 2024/05/28 15:59:19 2024/05/28
【摘要】 RAG(Retrieval-Augmented Generation)即检索增强生成,一种通过将检索模型和大模型结合生成高质量内容的技术。

1       一句话介绍

RAGRetrieval-Augmented Generation)即检索增强生成,一种通过将检索模型和大模型结合生成高质量内容的技术。

2       基础概念

  • 嵌入(Embedding):将结构化、非结构化数据通过Encoder转化成高维空间中的向量。向量作为一种AI原生数据表示方法,更加适合进行相似度计算、知识库检索等。
  • 提示词(Prompt):为大模型提供上下文信息,让大模型隐式地学习提示词中的信息,并基于此给出更好的答案。

3       RAG作用

大模型本质上是对人类历史知识进行高维压缩,但是压缩是有损压缩、历史知识也有局限性的,因此大模型会存在如下问题:

  • 时效性差:大模型训练数据集总是过时的,因此大模型难以实时回答最新事件相关的问题。
  • 模型幻觉:大模型可能会生成不正确的、虚拟的、带有偏见的内容。
  • 专业深度不够:大模型对垂直领域的问题,难以给出一定专业深度的答案。

RAG技术通过检索特定知识库中相关数据,编织成额外的上下文,同用户query一起构成完整的prompt输入大模型。由此可获得如下优势:

  • 保持知识更新:大模型训练频率达不到实施水准,结合外部知识库并保持知识库的实时更新则可间接地让大模型与世界同步。
  • 提高专业度:丰富垂直领域的专业知识库,让模型回答更专业。
  • 保护私有知识库安全:用户可构建本地私有知识库,相当于利用大模型对私人知识库进行局部管理。模型被视作智能工具,不记忆用户数据。
  • 增加可信度:模型给出答复的同时提供参考数据来源,这种透明操作增加了模型输出的可信度。
  • 较少模型幻觉:幻觉的发生源于模型训练集中知识不充分,利用外挂知识库可减少此类事情的发生。

4       RAG框架

RAG的基础框架包含三个部分:

  • 向量数据库(Indexing):将私有知识库中表格、文本、图片、音视频等数据对象转化成向量,合理组织,存入向量数据库中。
  • 检索模型(Retrieval):负责从向量知识库中查询信息。
  • 生成模型(LLM):负责结合检索出来的信息,生成更准确、丰富的内容。

用户输入Query后,检索模型从向量知识库中检索出与其最相似的kChunk(数据块),QueryChunk组合成Prompt输入LLM中,大模型根据上下文信息给出更高质量的答案。

5       向量数据库

向量数据库是一种专门用于存储和查询向量数据的数据库管理系统。支持向量的检索、降维、聚类(相似性)、计算(加减等)等操作。具有高维、稀疏、支持异构数据、动态变化的特点。Milvus是目前最为流行的开源向量数据库。

5.1      读写流程

向量数据库的读写流程如下图所示:

写流程:

  • 选择一个机器学习模型Encoder用于生成嵌入向量。
  • 输入不同模态的数据,包括表格、文本、图片、音视频等。
  • 生成输入数据对象的嵌入向量。
  • 为输入数据添加元数据,用于检索前后的筛选。
  • 向量数据库一般是分开存储嵌入向量以及元数据的,为嵌入向量及其元数据添加索引便于快速检索。
  • 将嵌入向量、元数据、索引一并存储。

读流程:

  • 输入query
  • 在检索嵌入向量前或后可根据元数据进行嵌入向量的筛选。
  • 采用相同Encoder将输入数据转化为嵌入向量。
  • 根据索引检索数据,同时应用ANN等算法检索出一系列相似嵌入向量的集合。

(向量数据库的索引包括主键索引、向量索引、Filter索引等。相似度的计算包括内积、欧式距离以及余弦相似度等。)

5.2      数据库对比

 

向量数据库与传统关系型数据库对比:


向量数据库与其他非关系型数据库对比:


6       参考

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。