RAG文档处理的一种优化方案——问答对的转换技巧

 在RAG中根据不同的场景有多种不同的优化方案,因此我们需要根据场景选择合适的解决方案。



在RAG文档检索增强中,文档预处理是相当重要的一环;以目前大模型的能力来说,已经能够很好的根据参考文档回答用户问题,但现在的问题是在RAG的前期阶段——也就是文档预处理阶段却是一个技术难点。


而且针对不同的文档类型和文档内容,处理方式也不尽相同,因此RAG的文档处理效果也参差不齐。


而今天我们就来提供一个新的思路,那就是把文档转换成问答对;因为,从用户的角度来说,用户提出的问题一般都是有针对性的,而不是宽泛的针对整个文档进行提问。因此,我们就可以根据文档内容,从多个维度提出几个经典问题,这样即可以提升检索速度,也可以提升准确率。






RAG文档优化之——问答对




先思考一个问题,问答对相当于传统的文档检索又那些好处?为什么要使用问答对?


不论是传统的文档检索,还是问答对都属于文档预处理的一种方式;而之所以使用问答对的原因在于,问答形式更符合我们人类的交流方式,也可以说是思维惯性,我们人类百分之八十以上的交流都是通过文档形式Q&A。


其次,传统的文档检索就类似于你要想知道地球为什么围着太阳转,你可能需要看一整本科普读物才知道原来是因为引力的存在;但基于问答对的方式就类似于给你一本十万个为什么,它直接告诉你地球围着太阳转的原因是因为引力的存在,你不需要看很多其它的东西,也不需要明白引力到底是个什么东西。


这种方式虽然可能只是让你知其然而不知其所以然,但它能够用最短的时间,最简单的方式告诉你一些常识性问题。


前面说了问答对的优势,那么什么样的文档适合转换成问答对呢?以及怎么把文档转换成问答对,有那几种方案?


其实任何形式的文档都可以转换成问答对,只不过不同的文档内容处理方式不一样;比如说基于纯文本的文档和多图表的文档处理方式就不太一样。


但把文档转换成问答对就有两种不同的方案了;其实文档转换问答对的原理很简单,就是把文档内容丢给大模型,让模型根据文档内容,从多个维度生成三到五个与之相关的问题即可。


但怎么把文档丢给大模型这个就要说道说道了。


首先,最简单的方式就是把整个文档全部一次性丢给大模型,让大模型理解文档然后整理出一系列问题。


但我们应该也明白,这种方式肯定是速度最快,最简单,但也是效果最差的一种方式;这就像你用三天时间看了一本经典名著,你最多只能记住其中的几个景点环节,大部分内容都被你给忘了。


因此,针对文档转换成问答对最好的方式,是根据段落或标题对文档进行拆分;然后把拆分之后的文档再丢给大模型,这样就可以提升问答对的准确性。


并且,在召回过程中也可以把相应的段落返回给用户,这样既增加了权威性,也可以避免Token浪费的问题。


当然,由于问答对的特殊形式,问答对也只适合部分业务场景,在某些业务场景下问答对的效果可能就不那么好了;比如说在长文理解中,使用问答对可能会导致最终的语义混乱。






(文:AI探索时代)

发表评论