RAG 企业级应用落地框架细节差异对比 原创

发布于 2024-7-24 13:14
浏览
0收藏

1、什么是 RAG ?

RAG 检索增强生成本质上来讲,就三件事情:

RAG 企业级应用落地框架细节差异对比 -AI.x社区



第一、Indexing 索引。即如何更有效地存储知识。

第二、Retrieval 检索。即在庞大的知识库中,如何筛选出少量的有益知识,供大模型参考。

第三、Generation 生成。即如何将用户的提问与检索到的知识相结合,使得大模型能够生成有价值的回答。

这三个步骤表面上看似乎并不复杂,然而在 RAG 从构建到实际部署的整个流程中,包含了众多精细且复杂的工作环节,这些落地细节是最具挑战的工作。

RAG 企业级应用落地框架细节差异对比 -AI.x社区

虽然 RAG 架构基本上是按照这些模块来设计的,但不同的实施方案在具体落地时各有其独特之处。

下面详细对比剖析。


2、RAG 开源框架架构对比

第一、网易 QAnything

网易 QAnything 的亮点在于 Rerank 模块。

RAG 企业级应用落地框架细节差异对比 -AI.x社区

第二、RAGFlow

RAGFlow 的亮点在于数据处理模块和知识索引构建模块。

RAG 企业级应用落地框架细节差异对比 -AI.x社区

第三、智谱 RAG

智谱 RAG 的亮点在于文档解析、切片、Query 改写及 Recall 模型的微调。

RAG 企业级应用落地框架细节差异对比 -AI.x社区

第四、FastGPT

FastGPT 的优点是模块动态配置灵活。

RAG 企业级应用落地框架细节差异对比 -AI.x社区

3、开源 RAG 框架的各个模块对比

第一、知识处理模块

  1. QAnything的此模块使用了 PDF 文件解析,具体是通过 PyMuPDF 库来完成的,该库是目前效率最高的解析工具。在解析文档内容时,无论是文本文件还是图像文件,均使用 PyMuPDF 的 get_text 方法。需要注意的是,如果图像文件中不包含文字,使用此方法时将会出现错误。
  2. RAGFlow 的此模块 使用 OCR 和文档布局分析等功能,在标准的 RAG(检索增强生成)系统中通常被归为一个不太显眼的非结构化数据加载器部分。据此推测,RagFlow 的一个关键优势很可能在于其文件解析的能力。
  3. 智谱 RAG--:
  4. FastGPT--:

第二、召回模块

  1. QAnything 向量库使用了 Milvus 的混合检索策略(结合 BM25 全文检索和向量检索),在检索过程中不设定任何阈值,直接返回前 100 个最相关的结果(TopK =100)。
  2. RAGFlow 向量数据库选用了 ElasticSearch 进行操作。它实现了文本检索与向量检索的混合模式,尽管未明确指定所用的向量模型,但在文本检索方面,使用了 “huqie” 作为分词工具。
  3. 智谱 RAG混合检索结合语义和全文检索,利用 BGE-M3 向量模型,不直接通过向量或文本检索召回数据,而是使用 RFF 算法进行排序。
  4. FastGPT文章结构切片和递增索引策略有效解决了问题。四种数据构建方案表现佳:
  • 查询对原文:直接召回知识片段。
  • 查询对查询:便于维护,自动提取查询。
  • 查询对摘要:建立摘要与片段映射。
  • 伪答案对原文:生成伪答案召回片段。

    并对 Embedding 模型进行微调。

第三、Rerank 模块

  1. QAnything 精确排序使用自定义的 Rerank 模型,阈值设定为 0.35。
  2. RAGFlow 重排排序结合了文本匹配得分和向量匹配得分,其中文本匹配的默认权重为 0.3,向量匹配的权重为 0.7。
  3. 智谱 RAG支持重排功能,可动态调整设置;整合嵌入向量(Embedding)与全文搜索(FullText)的结果,并按 ID 进行去重处理;对问答(QA)字符串进行拼接,移除其中的空格和标点符号,并对处理后的字符串进行哈希编码以实现去重;若已配置重排序(Rerank)模型,则调用该模型对结果进行重新排序,并在评分(Score)中新增重排序得分;若未配置,则评分中不会包含重排序得分。
  4. FastGPT--:

第四、大模型处理模块

  1. QAnything 将所有数据集合并至一个提示词(Prompt),并对最大 token 长度进行了优化处理。
  2. RAGFlow 对大模型可处理的 token 数量进行限制筛选。
  3. 智谱 RAG--。
  4. FastGPT在模型微调过程中,我们采取了分步骤的策略:起初使用公开可用的通用问答数据集进行初步微调,随后利用特定领域的问答数据进行进一步微调,最终使用经过人工精确标注的高质量问答数据来进行细致的微调。

第五、Web 服务模块

  1. QAnything 利用 Sanic 框架搭建 Web 服务。
  2. RAGFlow 基于 Flask 构建 Web 服务。
  3. 智谱 RAG--。
  4. FastGPT--。

第六、切词处理模块

  1. QAnything 利用自定义的 ChineseTextSplitter 完成。
  2. RAGFlow 基于 huqie 完成。
  3. 智谱 RAG--。
  4. FastGPT--。

第七、文件存储模块

  1. QAnything --
  2. RAGFlow MinIO 被选用于文件存储解决方案。。
  3. 智谱 RAG--。
  4. FastGPT--。

4、RAG 框架总结

1、Qanything 的 Rerank 模块设计极为出色。

2、RAGFlow 在文档处理方面表现卓越。

3、FastGPT 模块具备丰富的动态配置选项。

4、智谱 RAG 在特定领域数据的微调训练上表现最佳。

然而,一切脱离业务场景谈架构都是耍流氓,结合具体业务场景考虑下,并不存在绝对的“最好”。在各自的业务场景应用中,能够成功实施并产生效果的就是最佳选择。实践落地才是关键,落地成效为王道!


本文转载自公众号玄姐聊AGI  作者:玄姐

原文链接:​​https://mp.weixin.qq.com/s/HoQ0Ex9yuxrBp0aW6kuWcQ​



©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
收藏
回复
举报
回复
相关推荐