CrabNote螃蟹笔记

RAGflow 能力拆解

RAGflow 能力拆解

RAGflow 能力拆解 RAGflow 能力拆解 Modified November 26, 2025 为了更准确的测试, 我们添加了一条在我们提供的知识库中不可能存在的术语和数据“我们要带领大家成为超级个体”, 并添加了关键词:“公司使命” 使用测试工具进行召回测试 测试问题 召回结果 使命是什么? 我们的使命是什么? 国家的使命是什么? 公司的使命是什么? 超人是什么? 无召回 超级是什么? 超级个体是什么? 我们再把知识库挂到LLM上, 发生了有趣的新问题: 调查发现, 数据正确召回了, 但是由于召回的上下文是“我们要带领大家成为超级个体”, 因此大模型无法匹配上我们的问题. 因此打标签这件事得慎用. 结论: 1. RAGflow 召回会同时使用向量相似度和关键词相似度, 并加权得到混合相似度. 2. 关键词相似度不仅会匹配文本段中的内容, 还会匹配关键词标签的内容. 3. 关键词相似度不需要完整的一样, 只需要有单个实体在关键词中出现就是100%. 参考“超级是什么?”的召回结果. 4. 需要在检索的获得的内容块中, 同时包含“问题信息”和“答案信息“, 大模型才能解答. 如果检索直接只给了答案, 大模型本身无法关联到问题本身而无法回答. 5. RAGflow没提供对外接口, 做聊天或者其他应用时不方便 You don't have permission to access this synced block. Please log in and try again. Log In 为了更准确的测试, 我们添加了一条在我们提供的知识库中不可能存在的术语和数据“我们要带领大家成为超级个体”, 并添加了关键词:“公司使命” 使用测试工具进行召回测试 测试问题 召回结果 使命是什么? 我们的使命是什么? 国家的使命是什么? 公司的使命是什么? 超人是什么? 无召回 超级是什么? 超级个体是什么? 测试问题 测试问题 召回结果 召回结果 使命是什么? 使命是什么? 我们的使命是什么? 我们的使命是什么? 国家的使命是什么? 国家的使命是什么? 公司的使命是什么? 公司的使命是什么? 超人是什么? 超人是什么? 无召回 无召回 超级是什么? 超级是什么? 超级个体是什么? 超级个体是什么? 我们再把知识库挂到LLM上, 发生了有趣的新问题: 调查发现, 数据正确召回了, 但是由于召回的上下文是“我们要带领大家成为超级个体”, 因此大模型无法匹配上我们的问题. 因此打标签这件事得慎用. 结论: 1. RAGflow 召回会同时使用向量相似度和关键词相似度, 并加权得到混合相似度. 2. 关键词相似度不仅会匹配文本段中的内容, 还会匹配关键词标签的内容. 3. 关键词相似度不需要完整的一样, 只需要有单个实体在关键词中出现就是100%. 参考“超级是什么?”的召回结果. 4. 需要在检索的获得的内容块中, 同时包含“问题信息”和“答案信息“, 大模型才能解答. 如果检索直接只给了答案, 大模型本身无法关联到问题本身而无法回答. 5. RAGflow没提供对外接口, 做聊天或者其他应用时不方便 You don't have permission to access this synced block. Please log in and try again. Log In ❤️ 原创: Stuart 原创: Stuart 支持的embedding模型 🌟 RAGflow支持配置上LLM, embedding, STT, img2text, 和内容审核Moderation模型. 配置方式大同小异. RAGflow支持配置上LLM, embedding, STT, img2text, 和内容审核Moderation模型. 配置方式大同小异. 公网MaaS • 通常只需要一个API key即可对接, 默认提供了通义千问. 比较特殊的是OpenAI的接口上提供了修改endpoint, 也就是支持中间商. (下图中Ollma之外的都是公网模型) 实际上RAGflow悄悄的对接了更多公网模型, 在创建数据集时能看到: 实际测试选择这些模型后, RAGflow会尝试从huggingface下载对应的模型. 本地部署 目前仅支持Xinference和Ollama方式部署. 但是实际上只要是API接口一致, 对接方式一致都可以用该方式对接. 此处基础Url只需要写到v1为止, 不需要写embeddings的二级接口. PS: 添加模型后需要在“系统模型配置”中设置, 方能让模型生效. 文档拆分方式 🥛 RAGflow的思路是面向应用场景提供适配性的文档拆分. 当遇到不在列表中的情况时, 选择通用, 或者类似的场景来使用. RAGflow的思路是面向应用场景提供适配性的文档拆分. 当遇到不在列表中的情况时, 选择通用, 或者类似的场景来使用. 1. General 通用 在通用模式下, 主要拆分参考是每个块的token数量. 实测中, 它还考虑了语意的完整性, 切分段落的点都在句号或者叹号这种完整句子结束处. 结论: 拆分结果和langchain的拆分大同小异, 没有做其他任何处理和修改. 2. Q&A 问答对 结论: 就是问答对, 它将左边这列的内容加上“问题:”, 右边这列的内容加上“回答:”, 组成一个block. 最有效但是数据清洗工作量也最大, 结果类似如下: 3. Resume 简历 由于简历的格式通常不可控, 特地找了个正常的和异形的简历. 均解析失败, 从代码中找到它需要匹配关键词才能解析, 建议官方给出简历模板, 否则非常不好用. 4. Manual 手册 一整段的文字提取, 分割处在页面分页, 段落分段处 因此块大小通常很大. 对图片做了OCR, 提取了文字, 但是用处不大: 也有还不错的, 比如这个对图片内的公式做了OCR检测: 检测结果如下 对没有特殊字符的表格信息处理比较不错: 处理成了 实际文本内容是html格式的表格. 5. Table 表格 拆分后, 每一行被当成了一个块, 而第一行的表头被插入到每一块的头部. 以下例子中, 表格结构是这样的: 拆出来的块是这样的: 6. Paper 论文 和手册拆分逻辑大同小异, 主要差别在论文拆分是按章节来拆分, 会提供完整的章节. 7. Book 书籍 这个分割比较无法摸到思路. 有时候它拆分了一整段, 带着标题和小章节标题, 有时候它又把好几个章节并在一起. 8. Laws 法律文书 采用了文本分级, 将上一层的标题和文本都包含在下一层的内容中. 拆解后的内容: 拆解后的内容: 拆解后的内容: 但是如果用Laws来拆论文效果就很差. 会拆成如下几块 9. 隐藏格式: 还有几个没有默认可以选的分割方式, 但是在上传了文档后可以选择 a. Presentation: 按PPT的每一页提取文档, 其中图片中的文字用了OCR提取 b. One: 没啥好说, 顾名思义, 整个文档提取成了一个块, 不过用了OCR把一些图中的文字也提取出来了 a. Presentation: 按PPT的每一页提取文档, 其中图片中的文字用了OCR提取 b. One: 没啥好说, 顾名思义, 整个文档提取成了一个块, 不过用了OCR把一些图中的文字也提取出来了 拆分小发现 1. 拆分不是严格按照文本顺序傻瓜式拆分, 有些文本段顺序会发生变化. 比如下列本应该在第一页段落中拆分就被放到的第七页: 这里第一页有一段内容: 第一页内容中没找到它: 它出现在第七页: 这里第一页有一段内容: 这里第一页有一段内容: 第一页内容中没找到它: 第一页内容中没找到它: 它出现在第七页: 它出现在第七页: 数据清洗 RAGflow提供了分段后的数据处理, 可以自行添加分段后的数据, 也可以修改数据, 还可以为数据加上标签.