RAG 企業(yè)級應(yīng)用落地框架細節(jié)差異對比 原創(chuàng)
1、什么是 RAG ?
RAG 檢索增強生成本質(zhì)上來講,就三件事情:
第一、Indexing 索引。即如何更有效地存儲知識。
第二、Retrieval 檢索。即在龐大的知識庫中,如何篩選出少量的有益知識,供大模型參考。
第三、Generation 生成。即如何將用戶的提問與檢索到的知識相結(jié)合,使得大模型能夠生成有價值的回答。
這三個步驟表面上看似乎并不復(fù)雜,然而在 RAG 從構(gòu)建到實際部署的整個流程中,包含了眾多精細且復(fù)雜的工作環(huán)節(jié),這些落地細節(jié)是最具挑戰(zhàn)的工作。
雖然 RAG 架構(gòu)基本上是按照這些模塊來設(shè)計的,但不同的實施方案在具體落地時各有其獨特之處。
下面詳細對比剖析。
2、RAG 開源框架架構(gòu)對比
第一、網(wǎng)易 QAnything
網(wǎng)易 QAnything 的亮點在于 Rerank 模塊。
第二、RAGFlow
RAGFlow 的亮點在于數(shù)據(jù)處理模塊和知識索引構(gòu)建模塊。
第三、智譜 RAG
智譜 RAG 的亮點在于文檔解析、切片、Query 改寫及 Recall 模型的微調(diào)。
第四、FastGPT
FastGPT 的優(yōu)點是模塊動態(tài)配置靈活。
3、開源 RAG 框架的各個模塊對比
第一、知識處理模塊
- QAnything的此模塊使用了 PDF 文件解析,具體是通過 PyMuPDF 庫來完成的,該庫是目前效率最高的解析工具。在解析文檔內(nèi)容時,無論是文本文件還是圖像文件,均使用 PyMuPDF 的 get_text 方法。需要注意的是,如果圖像文件中不包含文字,使用此方法時將會出現(xiàn)錯誤。
- RAGFlow 的此模塊 使用 OCR 和文檔布局分析等功能,在標(biāo)準(zhǔn)的 RAG(檢索增強生成)系統(tǒng)中通常被歸為一個不太顯眼的非結(jié)構(gòu)化數(shù)據(jù)加載器部分。據(jù)此推測,RagFlow 的一個關(guān)鍵優(yōu)勢很可能在于其文件解析的能力。
- 智譜 RAG--:
- FastGPT--:
第二、召回模塊
- QAnything 向量庫使用了 Milvus 的混合檢索策略(結(jié)合 BM25 全文檢索和向量檢索),在檢索過程中不設(shè)定任何閾值,直接返回前 100 個最相關(guān)的結(jié)果(TopK =100)。
- RAGFlow 向量數(shù)據(jù)庫選用了 ElasticSearch 進行操作。它實現(xiàn)了文本檢索與向量檢索的混合模式,盡管未明確指定所用的向量模型,但在文本檢索方面,使用了 “huqie” 作為分詞工具。
- 智譜 RAG混合檢索結(jié)合語義和全文檢索,利用 BGE-M3 向量模型,不直接通過向量或文本檢索召回數(shù)據(jù),而是使用 RFF 算法進行排序。
- FastGPT文章結(jié)構(gòu)切片和遞增索引策略有效解決了問題。四種數(shù)據(jù)構(gòu)建方案表現(xiàn)佳:
- 查詢對原文:直接召回知識片段。
- 查詢對查詢:便于維護,自動提取查詢。
- 查詢對摘要:建立摘要與片段映射。
- 偽答案對原文:生成偽答案召回片段。
并對 Embedding 模型進行微調(diào)。
第三、Rerank 模塊
- QAnything 精確排序使用自定義的 Rerank 模型,閾值設(shè)定為 0.35。
- RAGFlow 重排排序結(jié)合了文本匹配得分和向量匹配得分,其中文本匹配的默認權(quán)重為 0.3,向量匹配的權(quán)重為 0.7。
- 智譜 RAG支持重排功能,可動態(tài)調(diào)整設(shè)置;整合嵌入向量(Embedding)與全文搜索(FullText)的結(jié)果,并按 ID 進行去重處理;對問答(QA)字符串進行拼接,移除其中的空格和標(biāo)點符號,并對處理后的字符串進行哈希編碼以實現(xiàn)去重;若已配置重排序(Rerank)模型,則調(diào)用該模型對結(jié)果進行重新排序,并在評分(Score)中新增重排序得分;若未配置,則評分中不會包含重排序得分。
- ?FastGPT--:
第四、大模型處理模塊
- QAnything 將所有數(shù)據(jù)集合并至一個提示詞(Prompt),并對最大 token 長度進行了優(yōu)化處理。
- RAGFlow 對大模型可處理的 token 數(shù)量進行限制篩選。
- 智譜 RAG--。
- ?FastGPT在模型微調(diào)過程中,我們采取了分步驟的策略:起初使用公開可用的通用問答數(shù)據(jù)集進行初步微調(diào),隨后利用特定領(lǐng)域的問答數(shù)據(jù)進行進一步微調(diào),最終使用經(jīng)過人工精確標(biāo)注的高質(zhì)量問答數(shù)據(jù)來進行細致的微調(diào)。
第五、Web 服務(wù)模塊
- QAnything 利用 Sanic 框架搭建 Web 服務(wù)。
- RAGFlow 基于 Flask 構(gòu)建 Web 服務(wù)。
- 智譜 RAG--。
- ?FastGPT--。
第六、切詞處理模塊
- QAnything 利用自定義的 ChineseTextSplitter 完成。
- RAGFlow 基于 huqie 完成。
- 智譜 RAG--。
- ?FastGPT--。
第七、文件存儲模塊
- QAnything --。
- RAGFlow MinIO 被選用于文件存儲解決方案。。
- 智譜 RAG--。
- ?FastGPT--。
4、RAG 框架總結(jié)
1、Qanything 的 Rerank 模塊設(shè)計極為出色。
2、RAGFlow 在文檔處理方面表現(xiàn)卓越。
3、FastGPT 模塊具備豐富的動態(tài)配置選項。
4、智譜 RAG 在特定領(lǐng)域數(shù)據(jù)的微調(diào)訓(xùn)練上表現(xiàn)最佳。
然而,一切脫離業(yè)務(wù)場景談架構(gòu)都是耍流氓,結(jié)合具體業(yè)務(wù)場景考慮下,并不存在絕對的“最好”。在各自的業(yè)務(wù)場景應(yīng)用中,能夠成功實施并產(chǎn)生效果的就是最佳選擇。實踐落地才是關(guān)鍵,落地成效為王道!
本文轉(zhuǎn)載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/HoQ0Ex9yuxrBp0aW6kuWcQ??
