从检索增强——RAG看检索技术的发展 原创
“ 检索,一种世界性的难题 ”
检索技术或者说搜索技术(虽然检索与搜索有一定的区别)一直是一个世界级的难题,检索技术可以说从人类出现就已经开始了;只不过那时的检索不叫检索,叫找东西,只不过到二十一世纪之后,随着互联网技术的发展,数据检索成为了一个重要手段。
而今天我们就来谈谈检索技术。
检索
为什么标题是从RAG看检索技术?
RAG技术是在之前的文章中不只一次的介绍过,RAG是大模型技术的补充,大模型的表现在某种程度上依赖于RAG,而RAG最核心的一点就是更加高效和准确的检索。
但检索技术却不是因为RAG技术才出现的,在RAG技术出现之前,检索技术用的最多的应该就是搜索引擎了。
从功能的角度出发,互联网技术的发展特别是移动互联网时代的来临,互联网每天都会产生大量的数据,而怎么把这些数据分门别类,让需要的人快速从繁杂的数据中找到有用的东西,这是一个值得思考的问题。
而从技术的角度来说,在互联网技术出现之前,数据或者说资料的管理方式主要是以纸质文档为主,而互联网出现之后,数据主要以文件的形式存储。
但做过技术的人都知道,文件存储是一个费时又费力的东西;因此,这时一项伟大的发明出现了——那就是数据库系统。
刚开始的数据库系统是按照二维关系结构构建的关系数据库系统,到现在也在大量的使用,比如常见的mysql和oracle等。
使用数据库的好处是什么?
好处就是速度快,数据一目了然,操作简单方便。
而随着技术的发展,不但数据量越来越多,数据形式和格式也越来越复杂,特别是非结构化数据的爆发式增长;因此,非结构化数据的存储需求越来越大,而且也出现了很多非结构化数据存储中间件,比如mongodb和redis等。
而数据存储是一方面,数据的检索也是一方面;关系型数据库的好处是一目了然,存储也方便,但关系型数据库的数据检索就没有想象中的那么强大了。关系型数据库只能进行一些简单的字符匹配或模糊查询,一旦涉及到复杂查询就无能为力了。
而这时搜索中间件就出现了,比如ES——ElasticSearch,它就是嵌入了分词的功能,根据某种算法实现完整语句的拆分,使得搜索能力相比传统关系型数据库大大增强。
但同样的是,ES的搜索能力依然有限,它们只能依靠纯粹的字符匹配进行检索;比如说让你去图书馆找本书,不懂的人只能按照书名去找,而懂的人就可以找到类似的。
而且面对现实世界中复杂的各种关系,简单的字符匹配显然无法满足我们的需求;因此,一种基于语义查询的方式就出现了。
什么是语义查询?
比如说,我说帮我搜索一下孙悟空;这时传统的搜索方式只能搜索到与孙悟空三个字相关的内容;而与齐天大圣,猴哥,弼马温相关的数据就无法准确查询了。
而有了语义分析的功能之后,就知道孙悟空,齐天大圣,弼马温,大师兄等等是一个人,这时就可以把与此相关的内容全部查询出来,而这就是RAG需要干的事情。
这也是为什么说,大模型知识库的重点是不是模型,也不是知识库,而是数据的精确检索。大模型知识库的好坏,是由检索能力所决定的,而不是由大模型决定的。
这也是在昨天关于RAG技术的文章中所说的,怎么提升数据的召回质量,召回数据的质量越高,大模型的生成效果就越好。
嵌入模型的语义分析能力越强,转化的向量数据效果越好,最终检索到的数据质量也就越高。
本文转载自公众号AI探索时代 作者:DFires
原文链接:https://mp.weixin.qq.com/s/t4vj028hHI2_lRZ65d9SfQ