|
—1— ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;text-align: justify;">什么是 RAG ? 
第一、Indexing 索引。即如何更有效地存储知识。 第二、Retrieval 检索。即在庞大的知识库中,如何筛选出少量的有益知识,供大模型参考。 第三、Generation 生成。即如何将用户的提问与检索到的知识相结合,使得大模型能够生成有价值的回答。 这三个步骤表面上看似乎并不复杂,然而在 RAG 从构建到实际部署的整个流程中,包含了众多精细且复杂的工作环节,这些落地细节是最具挑战的工作。 
虽然 RAG 架构基本上是按照这些模块来设计的,但不同的实施方案在具体落地时各有其独特之处。 下面详细对比剖析。 —2— ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;text-align: justify;">RAG 开源框架架构对比 网易 QAnything 的亮点在于 Rerank 模块。 RAGFlow 的亮点在于数据处理模块和知识索引构建模块。 智谱 RAG 的亮点在于文档解析、切片、Query 改写及 Recall 模型的微调。

—3— ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;text-align: justify;">开源 RAG 框架的各个模块对比 - QAnything 的此模块使用了PDF 文件解析,具体是通过 PyMuPDF 库来完成的,该库是目前效率最高的解析工具。在解析文档内容时,无论是文本文件还是图像文件,均使用 PyMuPDF 的 get_text 方法。需要注意的是,如果图像文件中不包含文字,使用此方法时将会出现错误。
RAGFlow 的此模块 使用 OCR 和文档布局分析等功能,在标准的 RAG(检索增强生成)系统中通常被归为一个不太显眼的非结构化数据加载器部分。据此推测,RagFlow 的一个关键优势很可能在于其文件解析的能力。 智谱 RAG--: FastGPT--:
第二、召回模块
QAnything向量库使用了 Milvus 的混合检索策略(结合 BM25 全文检索和向量检索),在检索过程中不设定任何阈值,直接返回前 100 个最相关的结果(TopK =100)。 RAGFlow 向量数据库选用了 ElasticSearch 进行操作。它实现了文本检索与向量检索的混合模式,尽管未明确指定所用的向量模型,但在文本检索方面,使用了 “huqie” 作为分词工具。 智谱 RAG混合检索结合语义和全文检索,利用 BGE-M3 向量模型,不直接通过向量或文本检索召回数据,而是使用 RFF 算法进行排序。 FastGPT 文章结构切片和递增索引策略有效解决了问题。四种数据构建方案表现佳:
查询对原文:直接召回知识片段。 查询对查询:便于维护,自动提取查询。 查询对摘要:建立摘要与片段映射。 伪答案对原文:生成伪答案召回片段。
并对 Embedding 模型进行微调。 第三、Rerank 模块
QAnything精确排序使用自定义的 Rerank 模型,阈值设定为 0.35。 RAGFlow重排排序结合了文本匹配得分和向量匹配得分,其中文本匹配的默认权重为 0.3,向量匹配的权重为 0.7。 智谱 RAG支持重排功能,可动态调整设置;整合嵌入向量(Embedding)与全文搜索(FullText)的结果,并按 ID 进行去重处理;对问答(QA)字符串进行拼接,移除其中的空格和标点符号,并对处理后的字符串进行哈希编码以实现去重;若已配置重排序(Rerank)模型,则调用该模型对结果进行重新排序,并在评分(Score)中新增重排序得分;若未配置,则评分中不会包含重排序得分。 FastGPT--:
第四、大模型处理模块
QAnything将所有数据集合并至一个提示词(Prompt),并对最大 token 长度进行了优化处理。 RAGFlow对大模型可处理的 token 数量进行限制筛选。 智谱 RAG--。 FastGPT在模型微调过程中,我们采取了分步骤的策略:起初使用公开可用的通用问答数据集进行初步微调,随后利用特定领域的问答数据进行进一步微调,最终使用经过人工精确标注的高质量问答数据来进行细致的微调。
第五、Web 服务模块
QAnything利用 Sanic 框架搭建 Web 服务。 RAGFlow基于 Flask 构建 Web 服务。 智谱 RAG--。 FastGPT--。
第六、切词处理模块
QAnything利用自定义的 ChineseTextSplitter 完成。 RAGFlow基于 huqie 完成。 智谱 RAG--。 FastGPT--。
第七、文件存储模块
QAnything --。 RAGFlowMinIO 被选用于文件存储解决方案。。 智谱 RAG--。 FastGPT--。
—4— ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;text-align: justify;">RAG 框架总结 1、Qanything 的 Rerank 模块设计极为出色。4、智谱 RAG 在特定领域数据的微调训练上表现最佳。然而,一切脱离业务场景谈架构都是耍流氓,结合具体业务场景考虑下,并不存在绝对的“最好”。在各自的业务场景应用中,能够成功实施并产生效果的就是最佳选择。实践落地才是关键,落地成效为王道! |