Original 帅气的桌子 神州问学 2024-01-25 05:19

**©作者|**帅气的桌子

**来源|**神州问学

RAG概述

ChatGPT、GLM等生成式人工智能在文本生成、文本到图像生成等任务中表现出令人印象深刻的性能。但它们也存在固有局限性,包括产生幻觉、缺乏对生成文本的可解释性、专业领域知识理解差,以及对最新知识的了解有限。为了克服这些限制,提高模型的能力,有两种主要途径:一种是微调(Fine Tune)来更新模型,另一种是让他们能够与外部世界互动,以不同的形式和方式获取知识。

微调固然效果好,可以让模型真正的“学会”一些私域知识。但是微调也会带来几个问题:首先,由于生成模型依赖于内在知识(权重),因此模型还是无法摆脱幻觉的产生,在对理解门槛高且准确性要求严格的场景下,这就是完全无法接受的,因为用户很难从回答的表面看出模型是否是在胡说八道。其次,在真实场景中,每时每刻都在产生大量数据,对一个事物的概念会迭代的飞快,如某个政策的解读、某个指标的调整等。而模型微调并不是一个简单的工作,无论是从数据准备、算力资源、微调效果、训练时间等各个角度来看,随时用新产生的数据来进行微调都是不现实的,且最终微调的效果也无法保证,能够做到每月更新一次都已经是很理想的状态。

另一种解决方案,RAG(Retrieval Augmented Generation)为生成式模型提供了与外部世界互动提供了一个很有前景的解决方案。RAG的主要作用类似搜索引擎,找到用户提问最相关的知识或者是相关的对话历史,并结合原始提问(查询),创造信息丰富的prompt,指导模型生成准确输出。其本质上应用了情境学习(In-Context Learning)的原理。

在大型语言模型(LLM)领域,创建一个最小可行产品相对简单,但实现生产级性能和可用性是一个艰巨的任务,特别是构建高性能的RAG系统。RAG已在企业私域知识问答等领域广泛应用,例如,现在主流的各类chat to PDF,chat to doc等应用都是基于RAG来搭建的。

RAG基本流程

如下图所示RAG可分为5个基本流程:知识文档的准备;嵌入模型嵌入模型(embedding model);向量数据库;查询检索和生产回答。下面会对每个环节进行详细描述:

https://mmbiz.qpic.cn/mmbiz_png/5KDEHBqSicGxMFHQA8esV3yqibaicmmADnzK4yr5QeiaYTf8RGFCGfwvnzj2P8IUibG5aCKDtdnccjlXvNueSXV6uFA/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

NO.1  知识文档的准备

在构建一个高效的RAG系统时,首要步骤是准备知识文档。现实场景中,我们面对的知识源可能包括多种格式,如Word文档、TXT文件、CSV数据表、Excel表格,甚至是PDF文件、图片和视频等。因此,第一步需要使用专门的文档加载器(例如PDF提取器)或多模态模型(如OCR技术),将这些丰富的知识源转换为大语言模型可理解的纯文本数据。例如,处理PDF文件时,可以利用PDF提取器抽取文本内容;对于图片和视频,OCR技术能够识别并转换其中的文字信息。此外,鉴于文档可能存在过长的问题,我们还需执行一项关键步骤:文档切片。我们需要将长篇文档分割成多个文本块,以便更高效地处理和检索信息。这不仅有助于减轻模型的负担,还能提高信息检索的准确性。我们将在后文中详细讨论文档切片和其背后的逻辑。

NO.2   嵌入模型

嵌入模型的核心任务是将文本转换为向量形式。我们在之前的文章《一文了解向量数据库在RAG中的扮演的角色》中,详细讨论了将文本表示为向量的多种益处。简而言之,我们使用的日常语言中充满歧义和对表达词意无用的助词,而向量表示则更加密集、精确,能够捕捉到句子的上下文关系和核心含义。这种转换使得我们能够通过简单计算向量之间的差异来识别语义上相似的句子。举例举例来说,如果我们想比较“苹果是一种水果”和“香蕉是黄色的”,嵌入模型可以将这些句子转换为向量,然后通过计算它们之间的相似度便可以确定它们的关联程度。那么这样的嵌入模型是如何得到的呢,作为一个经典的例子,我们以Google开发的Word2Vec模型为基础,来探讨其训练过程。

https://mmbiz.qpic.cn/mmbiz_png/5KDEHBqSicGxMFHQA8esV3yqibaicmmADnzmdIjsibCYGB9ibPrlvWDwgvibRZwkCwUYSGbqE7u9Wqia67q6EYdFkicu5Q/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

Word2Vec有两种训练方法,为简单起见我们就以上图展示的CBOW模型方法讲解。CBOW模型的核心思想是在给定一句话中心词的上下文(即该词周围的几个词)的情况下,让模型预测这个中心词。例如,假设我们有一个句子:“The cat sat on the mat”。使用CBOW模型,我们的目标是预测中心词“sat”。具体的训练流程如下: