目录
一、前言
二、LLM主要存在的问题
三、RAG 是什么?
四、RAG中的搜索器
(一)主要的检索技术
(二)知识库索引技术
五、RAG目前遇到的问题和展望
一、前言
随着近几年AIGC的发展,不仅是大模型自身在不断优化,相关支持应用也在不断涌现。本文的主角便是这些技术中较为引人注目的RAG(Retrieval-Augmented Generation)——检索增强生成技术。
LLM虽然已经在通识领域展现出了惊人的能力,但要落实到真正具体的问题解决,特别是针对专业领域,企业领域的一些具体的,私人的数据生成解决方案,仅仅依靠LLM还是远远不够的。
二、LLM主要存在的问题
//易产生幻觉
LLM底层的设计机制决定了它所生成的回答本质是基于概率的而非既定事实的,再加上LLM也缺乏自己校准自己生成内容的能力(这步工作往往是由人类来做),致使只要生成内容是符合它自己的语言逻辑的,就算内容与事实差了十万八千里,它也会毫不犹豫地输出,在人类看来就是一本正经地胡说八道。幻觉的问题不好从根源上去解决,因为这份概率性也是LLM得以展现出创新性的关键所在,但我们可以通过一些方法增加模型回答的准确性。
//模型训练数据的新鲜度不足
在使用chatgpt时它总会强调自己知道的知识范围只到2021年,这就使得LLM可以应用的场景大大减少。规模越大的模型,它的训练成本也更高,在成本有限的情况下我们无法无限制地使用最新的语料来更新大模型。
//数据安全
目前AI的隐私安全也是一个引起了广泛关注的话题,对于企业来说,是不可能把自己的私人企业数据上传到公网上的大模型的,但这样的话就无法借助大模型解决一些涉及企业数据的问题。
以上这些问题中,数据安全可以通过私有化部署的方式解决,而解决第一和第二个问题的钥匙便是RAG技术。
三、RAG 是什么?
在理解这个概念之前我们先要理解的是LLM为何会有上述问题,其核心原因在于LLM没有“固定的记忆”,模型本身只是众多参数与tokens的集合,没有搭载任何数据库。LLM在宏观上表现出的通识理解能力并不是因为它储存了通识知识,而是大量数据训练下它建立了自然语言特征向量之间的联系。
那么我们可以很自然地想到,只要给LLM外挂上数据库,是不是就可以解决问题了呢?事实上也是如此,只是具体操作起来没有字面上那么简单。RAG技术便是这个思路的具体操作范式。
Retrieval-Augmented Generation——检索增强生成,从字面进行拆解就是从已有的数据库中检索信息从而增强生成的效果。这个数据库指代的范围是广义的,不仅仅是关系型或非关系型数据库,还可以是外部知识图谱,外部应用或者搜索引擎。
如果说原本与大模型交互的方式是直接对LLM进行QA问答,那加入了RAG技术后我们其实是先在知识库中检索出了与问题相关的内容,然后将这些内容与问题一并提交给LLM,我们需要的是让LLM根据我们给出的内容来对问题做出回答,如下图所示。
四、RAG中的搜索器
RAG的一个核心便是搜索器,如果把RAG加成下的LLM问答看作是一场开卷考试,那构建更高效准确的搜索器决定了我们能给LLM的回答提供更优质的参考答案。
(一)主要的检索技术
//1.1 相似度检索
相似度检索是使用各种不同的相似度算法(如欧氏距离、余弦等)进行数据检索的一种技术。
在RAG流程中我们通过把问题Embedding为向量,去数据库中匹配与此问题相似度最高的几个内容片段。
//1.2 关键词检索
传统的一种检索方式,RAG所使用的外挂数据库不只是狭义的数据库,搜索引擎也可以成为真实数据的一种来源,对于部分数据,使用关键词检索会高效快速得多。
//1.3 SQL检索
对于企业来说,大部分私人数据的存储形式可能都是关系型数据库,因此SQL检索虽然方式比较基础,也是必不可少的一种检索形式。
(二)知识库索引技术
检索的质量不仅取决于检索技术及其相关优化程序,还取决于数据库本身是否更便于精确检索出我们想要的内容。对于庞大的数据而言,创建索引是提高检索精准度与效率的重要工作。
//2.1 数据分块
由于提交给LLM的问题是有长度限制的,因此当文本过长,或者检索内容仅有部分相关时,需要对文本进行分块。
//2.2 数据向量化
数据的向量化是将文本、图片、音频、视频等转化为向量矩阵的过程,也就是对数据库数据进行Embedding,存入向量数据库。
整个RAG流程如下图所示。
五、RAG目前遇到的问题和展望
1、依赖语义搜索。RAG的高效与准确取决于数据库语料的质量与索引方法,如果检索不到位或者没有高质量的知识文档,那RAG的优势是无法发挥出来的。
2、上下文长度限制。LLM一次性输入的长度限制有时会让我们不得不截断一些语料,致使在一次问答中能为LLM提供的事实资料是有限的,这可能会影响到生成结果的质量。
3、延迟问题。相比于通常的问答,RAG中存在着检索+组成prompt两个步骤,可能会造成一定的延迟,可能不适合依赖即时响应的场景。
RAG整体流程中从知识库索引到检索方式到生成,每一步都有大量的细节可供探讨与优化,相信未来会有更多基于RAG的衍生技术。
参考资料:
1、RAG (检索增强生成)技术详解:揭秘基于垂直领域专有数据的Chatbots是如何实现的 - 知乎
2、大模型应用一:RAG - 知乎
3、https://python.langchain.com/docs/use_cases/question_answering/
作者:王琪| 后端开发工程师
更多AI小知识欢迎关注“神州数码云基地”公众号,回复“AI与数字化转型”进入社群交流
版权声明:文章由神州数码武汉云基地团队实践整理输出,转载请注明出处。