什么是RAG?
RAG的全称是检索增强生成(Retrieval-Augmented Generation,简称RAG),它结合了检索和和生成技术,通过整合检索系统和生成模型的优势,来提升模型生成文本的质量和上下文相关性。这种技术主要是为了解决生成式模型在面对需要具体、实时或领域专业知识时可能产生的准确性不足和上下文不敏感的问题。
即它先根据外部知识库搜索到的信息来作为上下文,再来辅助模型回答问题,使得模型的回答更准确。
比如你想做一个智能助手,当用户提出一个问题时,需要在你给的知识库里面先搜索出文档片段,然后再把文档片段和用户问题一起丢给大模型,让模型去回答问题,这样的话模型就可以回答的更有针对性和准确性。这一定程度上可以解决大模型幻觉的问题。在之前的文章介绍过用RAG的技术来做智能问答 使用Dify 构建国土空间规划智能问答应用
标准RAG流程主要由三部分组成:
索引(向量嵌入),通过嵌入模型实现文本块的向量编码,写入向量数据库。
检索(相似查询),通过嵌入模型服务实现问题查询的向量编码,使用相似性查询检索到相关片段。
生成,将检索到的片段结果作为上下文和问题一起提交给大模型处理。
图片
我这次碰到的两个问题是在向量嵌入之前,一是对PDF扫描件的处理,二是文本分段。
01 PDF扫描件处理问题
还是先拿dify知识库来测试给大家看看
这是原文件,是一个扫描件
图片
上传到dify,发现文本分段环节分不出来段落,失败了,不支持PDF扫描件。
图片
于是对比测试下别的平台
打开阿里云百炼,发现是可以正常分段的。
图片
试试 RAGFlow,也是可以的。
图片
这两家知识库系统都预置了OCR的功能,先用OCR做了提取处理,再执行分段、嵌入的过程。
上周阶跃星辰开源了他们的OCR产品:GOT-OCR2_0,我们可以来试试,还是刚刚的文件,转成图片格式上传。效果如下~
图片
在政府或者企业内部落地智能问答场景时,存在大量的PDF扫描件,当然我们可以先对扫描件做转换处理,再上传到知识库中。但如果知识库预置OCR功能,在上传扫描件时可以直接进行处理,还是蛮实用的一个功能。
02 文本分段问题
事情的起因为某用户在使用我们的智能问答产品时,问了一个问题
图片
下面是我们助手的回答
图片
下图是正确的答案,可以看出明显回答得不正确。
图片
于是去dify知识库排查,发现知识库中是有这个文件的,但就是问不出来。根据前面RAG的流程,猜测可能是分段导致的问题,一看果然是因为之前上传该文件到知识库,是机械的按照字数进行的分段,从而导致没有召回相关的片段。
当然dify是提供了自定义选项的,但分段标识符还挺难设置的,常见的可能设置成句号、问号、感叹号啥的,但文档的自然分段多种多样,如使用数字标识段落
- 段落一
- 段落二
使用章节标识符
- 第1章:标题
- 1.1 子标题
- 1.1.1 段落
于是去扣子上搭建一个智能问答应用来做对比测试。
先创建知识库,上传基本农田政策文件《自然资源部关于做好占用永久基本农田重大建设项目用地预审的通知》,可以看到扣子知识库对上传的文件做了比较好的分段,即按照段落进行分段,更符合原文的意思,不会把一个段落内容机械的按照字数分割成不同的段落,从而造成检索时检索不全或者检索不到的问题。
图片
回答效果还可以。
图片
阿里云百炼平台对文档切分提供智能切分和自定义切分两种方式
图片
智能切分对文本分段的效果是非常好的,基本上实现了按原文段落进行分段。
图片
图片
百度千帆大模型平台:
图片
罢了罢了,操作还是这么复杂,体验还是这么糟糕,还是熟悉的百度。
图片
RAGFlow:
图片
QAnything:
没把分块展示出来,上传文件以后直接提问
图片
回答的内容重复了。
图片
测试对比了dify、扣子、阿里云百炼、百度千帆、RAGFlow、QAnything等知识库产品,有开源的、有商业,有大厂的,有小厂的,总的来说阿里云百炼对分段处理得最好。
dify知识库一些功能还是做得不错的,比如引入混合检索和重排序,要是引入OCR和智能分段,那就更好了。
最近Anthropic分享RAG最佳实践,提到了一种新的文档分块的方式,因为传统的RAG系统有一个显著的限制:它们经常破坏上下文,就算是智能分段,有些信息还是需要结合上下文来理解才更准确。
现在通过在嵌入之前将块特定的解释性上下文附加到每个块之前(“上下文嵌入”)和创建BM25索引(“上下文BM25”)来解决这个问题,再结合重排序来降低检索的失败率。大家有兴趣可以看看他们的实验。
标准RAG流程
上下文嵌入+BM25索引+重排序
小结:在使用RAG技术落地智能问答助手过程中,不管是使用开源、商业平台、还是自研,引入OCR的能力和智能分段都是重要和实用的功能。
参考资料
引入混合检索(Hybrid Search)和重排序(Rerank)改进 RAG 系统召回效果
Anthropic分享RAG最佳实践:Contextual Retrieval!
登顶Hugging Face总榜,创始人Clem点赞转发,OCR-2.0火了!
本文转载自微信公众号「AI 思与行」,可以通过以下二维码关注。转载本文请联系AI 思与行公众号。