RAGflow 能力拆解:
大模型 RAG 问答行业最佳案例及微调、推理双阶段实现模式:基于模块化(Modular)RAG 自定义 RAG Flow: 原创刘焕勇老刘说 NLP 于 2024 年 1 月 29 日 18:31 发表于北京。在上一篇文章中介绍了模块化(Modular)RAG 的相关工作,重点论述了每个模块中的构成细节。本文将从三个方面深入探讨 RAG Flow 的设计思路,分别是典型的 RAG Flow 模式、特定的 RAG 流实现以及最佳的行业案例。在典型的 RAG Flow 模式方面,将介绍 3 种微调阶段模式和 4 种推理阶段模式供大家参考思考。
RAGflow的思路是面向应用场景提供适配性的文档拆分.当遇到不在列表中的情况时,选择通用,或者类似的场景来使用.1.General通用在通用模式下,主要拆分参考是每个块的token数量.实测中,它还考虑了语意的完整性,切分段落的点都在句号或者叹号这种完整句子结束处.结论:拆分结果和langchain的拆分大同小异,没有做其他任何处理和修改.1.Q&A问答对结论:就是问答对,它将左边这列的内容加上“问题:”,右边这列的内容加上“回答:”,组成一个block.最有效但是数据清洗工作量也最大,结果类似如下:1.Resume简历由于简历的格式通常不可控,特地找了个正常的和异形的简历.均解析失败,从代码中找到它需要匹配关键词才能解析,建议官方给出简历模板,否则非常不好用.1.Manual手册一整段的文字提取,分割处在页面分页,段落分段处--因此块大小通常很大.对图片做了OCR,提取了文字,但是用处不大:也有还不错的,比如这个对图片内的公式做了OCR检测:检测结果如下对没有特殊字符的表格信息处理比较不错:处理成了实际文本内容是html格式的表格.1.Table表格拆分后,每一行被当成了一个块,而第一行的表头被插入到每一块的头部.
RAGflow提供了分段后的数据处理,可以自行添加分段后的数据,也可以修改数据,还可以为数据加上标签.为了更准确的测试,我们添加了一条在我们提供的知识库中不可能存在的术语和数据“我们要带领大家成为超级个体”,并添加了关键词:“公司使命”使用测试工具进行召回测试|测试问题|召回结果||-|-||使命是什么?|||我们的使命是什么?|||国家的使命是什么?|||公司的使命是什么?|||超人是什么?|无召回||超级是什么?|||超级个体是什么?||我们再把知识库挂到LLM上,发生了有趣的新问题:调查发现,数据正确召回了,但是由于召回的上下文是“我们要带领大家成为超级个体”,因此大模型无法匹配上我们的问题.因此打标签这件事得慎用.结论:1.RAGflow召回会同时使用向量相似度和关键词相似度,并加权得到混合相似度.2.关键词相似度不仅会匹配文本段中的内容,还会匹配关键词标签的内容.3.关键词相似度不需要完整的一样,只需要有单个实体在关键词中出现就是100%.参考“超级是什么?”的召回结果.4.需要在检索的获得的内容块中,同时包含“问题信息”和“答案信息“,大模型才能解答.如果检索直接只给了答案,大模型本身无法关联到问题本身而无法回答.5.RAGflow没提供对外接口,做聊天或者其他应用时不方便
原创刘焕勇老刘说NLP 2024-01-29 18:31发表于北京今天是2024年1月29日,星期一,北京,天气晴。今天我们再来看看RAG的一些话题。我们在上一个文章《值得一看的大模型RAG问答总括性梳理:模块化(Modular)RAG范式的定义、构成及机遇》(https://mp.weixin.qq.com/s/j07PkTCoxBzAhkyON1puPg)中介绍了模块化(Modular)RAG的一些相关工作,重点对每个模块中的构成细节,即模块化RAG的”模块类型“,”模块“和”算子“进行了论述,相信大家已经有了一定的认识。因此,我们趁热打铁,借着再来看看基于不3同模块和和算子的编排就组成的RAG Flow,6这为我们看待RAG系统提供了新的视角。在模块化RAG范式是如何帮助我们设计自己的RAG Flow?本文,我们将从三个方面深入探讨RAG Flow的设计思路,分别是典型的RAG Flow模式、特定的RAG流实现以及最佳的行业案例。在典型的RAG Flow模式方面,我们将介绍以下3种微调阶段模式和4种推理阶段模式。供大家一起参考并思考。