序言        

RAG搜索增强是一个极其简单的概念。简而言之就是将搜索召回的内容,送给模型润色,重新生成更好的答案。看似简单,实际做起来,就极其的复杂。想要做个演示demo也很简单,复杂的是如何把回答正确率提升到90以上。

RAG中的问题非常之多。并且问题环环相扣。例如,如果文档解析做不到,就不可能在召回的阶段将内容准确的召回(也就是召回率低)虽然可以通过扩大topK来尽可能的提升召回率,但是假如在解析的过程中数据丢失了。是无论如何都找回不到的。如果无法召回,正确的答案就无法送给模型,自认而然就无法回答正确。在我们的生产实践中,遇到将近40%的问题,都是文档解析导致的。

RAG中的第一个问题——文档解析

最初,我们以为,文档解析,不就是把文档中的问题提取到吗。python就有很多PDF文档解析工具。实际上文档解析也是一个非常复杂的问题,例如不同格式的文件,可能不限于PDF。即使是PDF文件,存在有的文档是扫描件。文档中的表格解析有可能会丢失数据。开源的PDF解析工具有很多,也各有优缺点。这里可以看这篇文章:大模型RAG问答下的实用开源文档解析工具总结及技术思考:从文档版本分析到单双栏处理

RAG 排坑指南001——文档解析_rag

其实文件解析,就两种方式,使用开源的方式去解析。第二种是使用OCR的技术去解析。第二种较为复杂的是,到目前为止,还没有一个特别好的模型能够做到很高的识别率。可以看看这篇文章,通过增强 PDF 结构识别,革新检索增强生成技术(RAG)_文档_模型_文本

根据这篇文章所述,通过OCR识别的文档解析做的相对不错。

文档解析的终极目标就是,不丢失信息

信息不仅仅包含文本,还包括版面信息,表格,图片等信息。段落信息实际上是除了文本信息以外,很重要的部分。拿到标题是非常蛮重要的。标题丢失,文本内容丢失是不被允许的。