Retriveal Augmented Generation(RAG)检索增强生成,是一种结合了知识检索和生成模型的技术方法,用于减少“幻觉”的产生,主要使用在问答系统,为用户提供正确的答案。
传统的生成模型,通常是基于大量的通用数据进行训练,但在处理特定领域或专业知识时可能存在一定的限制。为了解决这个问题,RAG 引入了知识检索的概念。在 RAG 中,生成模型与一个知识检索模块相结合。知识检索模块可以通过检索相关的知识库、文档或其他资源来获取特定领域的知识。生成模型可以利用这些检索到的知识来辅助生成过程,提供更准确、丰富的内容。具体而言,当生成模型需要生成一段文本时,它可以首先使用知识检索模块来检索相关的知识片段。然后,生成模型可以将这些知识片段作为输入或参考,以更好地理解任务要求,并生成更具准确性和一致性的文本。
RAG 可以帮助解决私有知识问题,让私有知识库和 AI 大模型更好地融合。通过将私有知识库与大模型结合,RAG 能够使大模型“知道”更多的私有知识,从而提高其回答的准确性和可靠性。RAG框架
RAG技术
RAG技术主要分为两类, RAG Sequence和RAG Token。
-
RAG Sequence:一种通过检索后的文档生成完整序列的方法。对应于每个输入,模型找寻一组相关的文档信息,将这一组文档整体考虑、生成单一的反映组合信息的响应。
-
RAG Token:对响应的每个部分,模型找寻相关的文档,响应是以增量方式构造的,每个部分都反映为该特定部分检索到的文档中的信息。
RAG应用程序示意图如下:
如果仅使用LLM,查询仅依靠预训练时使用的数据集来提供结果,如果使用LLM+RAG的方式,查询会使用向量数据库作为额外的数据集来提供正确的结果。向量数据库是RAG方式的一个重要的数据来源,下面的内容对于向量数据库进行一个简要的介绍。
向量
向量是一组称为维度的数字序列,用于捕捉数据的重要特性。LLM中的嵌入本质上是高纬度的向量。向量通过深度学习的嵌入模型生成,表示数据的语义内容,并不是底层的单词或像素。例如,一个单词可以表示为一个向量,其中每个元素表示该单词在某个维度上的特征。这些特征可以是词频、词性、语义等。通过将文本数据表示为向量,可以使用机器学习算法对其进行处理和分析。
为了帮助理解,这里以2维图形进行说明。这里有三组词汇,基于语义它们分为动物、水果,和城市。当增加一个新的词汇“老虎”时,它最接近的是动物这一组词汇,甚至更接近“猫”,并且远离水果和城市两个组。因此,向量数据库实际上是针对多维空间进行了优化,其中关系基于高维向量空间中的距离和相似性。
向量之间的距离在自然语言处理中,通常用于衡量两个文本之间的语义相似度。例如,在文本分类任务中,可以计算每个文本与各个类别的中心向量之间的 距离,以确定该文本属于哪个类别。向量之间的距离可以通过多种方式计算,例如,余弦距离,点积等。其中,余弦距离是一种常用的方法,它计算的是两个向量之间的夹角余弦值,取值范围在[-1,1]之间,值越大表示两个向量越相似。
向量数据库工作流程
常见的向量数据库如下:
在OCI的云服务中,MySQL Heatwave未来也将提供向量存储和检索。
LLM中向量数据库的角色
-
解决LLM中的幻觉问题。
-
在提示中增加企业特定的内容,以生成更好的响应。
-
使用最相关的内容来避免超过LLM标记限制。
-
相对于LLM的微调而言,成本低廉。
-
实时更新知识库。
-
缓存之前LLM提示/应答,以改进性能降低成本。
由此可见,向量数据库在生成式AI中起到的重要作用,这也是当前众多数据库纷纷增加向量存储功能的原因。
以上内容是关于LLM中Retriveal Augmented Generation(RAG)和向量数据库的简介。暂时是这一系列的最后一篇,后续会继续发布MySQL的相关内容。
感谢关注“MySQL解决方案工程师”!