人工智 能 - RAG(检索增强生成)
大概半年前,我和同事讨论了一个AI应用问题:
如何实现使用自然语言搜索文件名称和内容?
例如以下两个情景:
- 搜索昨天新上传的图片文件。
- 搜索文件内容中包括
发票和爱米云有限公司的pdf文件。
使用传统的基于条件搜索的人机交互方式,需要在软件界面中选择多个条件才能完成上述搜索,这对普通用户而言有一些学习成本和操作复杂度。
我们希望直接在软件中使用自然语言搜索文件,也就是在搜索框中直接输入上述的 昨天新上传的图片文件 这段文字,就可以完成对应的搜索任务,类似下图的效果: 
我们花时间做了一些调研,结果并不理想,主要有两个问题难以解决:一个问题是文件内容可能是动态变化的,而目前的主流LLM(大语言模型)都是通过静态数据训练的,显然不可 能每天用新数据训练一次LLM,那成本太高了。另外一个问题是由于文件有安全访问控制,因此每个人能访问的文件集不一样,显然不可能为每个人单独训练一个LLM,那成本太高了。最后我们得出的结论:能实现,但使用成本太高了,暂时搁置。
可是,峰回路转,柳暗花明,在一次偶然的机会,在elastic的博客上看到一篇技术文章,读后,我如获至宝。这种新技术被称为 检索增强生成(Retrieval-Augmented Generation,RAG)模型,原始论文在2020年的神经信息处理系统大会(NeurIPS 2020)上发表,论文的多名作者分别来自 Meta AI、伦敦大学学院和纽约大学。RAG模型从根本上解决了LLM不能与外部实时数据交互问题。
什么是检索增强生成(RAG)
**检索增强生成(RAG)**是一种使用外部来源检索信息,为大型语言模型 (LLM) 提供最新最准确的信息的技术。
概念有一些过于理论化,为了更形象的理解这一AI领域的最新技术,让我们以学生考试为例:
考试有闭卷和开卷两种方式,闭卷要求学生仅凭大脑记忆完成问题答案,而开卷学生则可以在使用大脑记忆的同时,借助课本、习题册等外部资料的内容完成问题答案。
在LLM模型中,AI作为学生相当于闭卷考试,只能根据过去已获取的知识(通过数据集训练)来回答问题,但在RAG系统中,AI作为学生则相当于开卷考试,它可以结合过去的知识和从外部来源中实时查询到的知识来回答问题,因此结果会更新更准确。
再举个非常简单的例子,您问LLM: 青岛今天会下雨吗?,在RAG技术出现之前它是无法给你答案的,因为它的训练数据集是过去的知识,并不知道今天发生了什么。但现在基于RAG技术,LLM可以通过互联网实时查询青岛今天的天气情况,然后反馈给你。
是的,本质上就是这么简单。
以下流程图概括了RAG的工作原理:

将 LLM 与嵌入模型和矢量数据库相结合(来源:Nvidia)
首先需要RAG模型需要从数据集中的文件中摄取文本或结构化内容,通过嵌入模型对其做降维处理后,即将高维的离散数据(如文本、文件元信息等)转换为低维的连续向量,然后加入到向量数据库中,等待后续LLM使用。
当您向 LLM 提问时,APP会将查询发送给嵌入模型,后者会将查询转换成向量条件以便在向量数据库中查询,查询的结果送到LLM, 形成最终的答案并提交给APP,最终反馈给您。