“ RAG的核心是怎么快速准确地召回数据,但RAG的难点还有文档处理等问题。”
RAG技术是目前大模型应用的主要技术方向之一,常被应用于数据检索,智能客服等应用场景;而最近在做一个问答系统的场景,使用到了RAG技术,因此今天再来记录一下关于RAG在实际场景中所遇到的问题。

关于RAG的问题
关于RAG的整体流程这里就不多做介绍了,总而言之RAG的核心点有两个,其一是检索,其二是生成;生成这里就不多说了,生成的质量一靠大模型的能力,二靠提示词的质量,三靠检索回来的语料质量。
所以,我们今天主要讨论的就是关于检索的问题;RAG系统和训练大模型一样,都需要高质量的数据集;所以RAG在检索方面的核心问题就是怎么打造一个高质量的检索系统,其中包括各种文档的加载,切分和嵌入(embedding),以及上下文的语义关系。
所以,RAG检索模块需要两个核心工具,嵌入模型和向量数据库。
嵌入模型的作用是把人类使用的文档转换成向量的一种工具,并尽可能保证文档的上下文关系和语义关系;

而向量数据库就是用来存储嵌入模型处理之后的向量数据,其主要作用是用来进行语义检索。
由于需要进行语义检索,因此向量数据库是其中必不可少的工具,当然在某些场景下可以使用精确检索的方式,这时也可以不使用向量数据库。
OK上面是关于RAG两个主要工具的介绍,但我们今天讨论的主要问题不在这两个工具上;而是其前置处理和怎么提高检索效果。
文档处理
文档处理技术目前来说不仅仅是RAG技术要面临的问题,任何需要数据的领域都无法避免这个问题。
之所以文档处理很困难,原因就在于文档的多样化和复杂化;文档多样我想很多人应该都深有体会,我们常见的office三件套,PPT,WORD和EXCEL,这还仅仅只是最常见的三种格式。

其它还有csv,txt,markdown以及不同操作系统下特有的文件格式;这里就是文档的多样化。
而至于文档的复杂化就更难处理了,比如说企业需要统计一下员工的个人信息,列好的表格,都能被填的乱七八糟;再加上文档本身就像一张纸一样,你可以在上面写字,也可以画图,还能画一些表结构。
虽然这些不同形式的数据对人来说很容易判断和识别,但对文档处理来说其难度却不是简单的1+1等于2的问题。
以word来说,文档中同时存在文字描述,图片描述和结构化内容——表格,图表等数据,我们在进行embedding之前需要对文档进行拆分(由于embedding能力限制 长文本处理效果不理想 因此常见的解决方案是对文档进行拆分)。而同时面临着这几种类型的数据,应该怎么拆分?
文字,图片,图表混合出现,以什么为标准进行拆分,图片数据怎么拆分?而且怎么识别文档中那些部分是文字,那些是图片,那些又是图表?
目前面临这种问题,我们主要采用的方式就是使用OCR技术,也就是光学识别,把里面的内容全部读成文字,然后再进行嵌入;但说实话效果并不怎么样。
关于文档处理,不同的场景,不同的要求会有不同的处理方式;而在具体的实施过程中,每家公司和技术可能采用的方式都不尽相同。
数据检索
如果说文档处理和拆分只是RAG的第一步,那么怎么把数据高效和精确的检索出来更是我们需要思考的问题。
以目前互联网技术的发展来看,数据的增长每天都呈指数增加,而且非结构化格式的数据占比越来越多。
而面临着如此庞大的数据,怎么快速和高效的处理是所有技术人员都困惑的问题。
如果说数据库(传统数据库和向量数据库)的作用是来格式化存储数据,那么检索就是怎么快速地从不同的数据库中高效检索出相匹配的数据。
在传统的检索系统中,主要采用的是关系型数据库的精确字符匹配或者采用简单的分词技术进行检索。
但在人工智能时代,人们对检索数据的质量有了更高的要求;那就是不仅仅只进行简单的字符匹配,还需要进行语义检索。
简单来说就是,你不但要听到我说的是什么,而且你还要懂得我说的是什么意思。
而目前关于高效检索的方式,基本上有以下几种方案;同时使用精确匹配和语义匹配的方式,比如说可以先根据种类,组织结构等筛选出相关的数据,然后再使用语义检索出相似的数据。
以买东西为例,我要买一双鞋,这时就可以使用精确匹配的方式先把所有关于鞋的数据都找出来,比如说男鞋,夏季等;而根据这个条件对数据筛选一遍之后,再使用语义检索,比如说一双好看的夏天穿的男鞋;这个“好看”怎么进行精确匹配?所以只能进行语义匹配?
而好看的语义有哪些?
帅,漂亮,可爱等等一系列与之相关的数据。
因此,这种采用根据语义延伸出来的多种相似语义检索;还有其它如多路召回的方式,通过多种不同的召回策略,使用不同的条件,从多个不同的维度来检索数据的方式就叫做多路召回。
比如说,你去市场上买东西,你让小王去看几家主要看成色怎么样;让小李再去看几家主要看价格怎么样等等;这样最后汇总之后,对比成色,质量,价格等多个方面,然后选择最优的一个方案;而最后汇总和选择的过程就叫做重排序。
当然,面临着复杂的数据和业务场景,以上方式你也可以多做几次,以此来提升召回质量。
总之,RAG技术是一门入门五分钟,做好可能五年时间都不够的技术,其中涉及到各种复杂的技术,并且要面对各种各样的问题。
(文:AI探索时代)