RAG檢索全攻略:Embedding與Rerank模型的終極指南
在構(gòu)建基于檢索增強(qiáng)生成(RAG)的系統(tǒng)時(shí),Embedding Model和Rerank Model扮演著至關(guān)重要的角色。比如你正在搭建一個(gè)智能搜索引擎,Embedding Model就像是幫你快速找到相關(guān)書(shū)籍的“圖書(shū)管理員”,而Rerank Model則像是一位經(jīng)驗(yàn)豐富的“資深書(shū)評(píng)人”,負(fù)責(zé)從一堆書(shū)里精準(zhǔn)挑選出最符合你需求的那幾本。兩者配合,就像一對(duì)完美搭檔,確保RAG系統(tǒng)既能找到大量信息,又能精準(zhǔn)提煉出最關(guān)鍵的內(nèi)容。
RAG這玩意兒聽(tīng)起來(lái)高大上,其實(shí)就是個(gè)“外掛大腦”,能讓AI在回答問(wèn)題時(shí)不光靠自己那點(diǎn)小聰明,還能從外部知識(shí)庫(kù)里撈點(diǎn)干貨出來(lái)。核心呢?就是Embedding(嵌入)和Rerank(重排序)。
下面我們逐步解析這兩類(lèi)模型的作用、推薦模型及其部署方法。
Embedding Model簡(jiǎn)介
Embedding Model的核心任務(wù)是將文本、圖像或其他數(shù)據(jù)類(lèi)型轉(zhuǎn)化為密集向量(Dense Vector),這種向量形式便于快速檢索和相似度計(jì)算。RAG系統(tǒng)中,Embedding Model主要用于構(gòu)建知識(shí)庫(kù)并實(shí)現(xiàn)高效召回。
Embedding Model的原理(結(jié)合RAG)在RAG系統(tǒng)中,Embedding Model的工作原理可以歸納為以下步驟:
文本編碼:將文本片段轉(zhuǎn)換為向量(Embedding),該向量捕獲了文本的語(yǔ)義信息。
向量存儲(chǔ):將這些Embedding向量存儲(chǔ)到如FAISS、Milvus、Qdrant等向量數(shù)據(jù)庫(kù)中。
查詢(xún)編碼:用戶(hù)輸入的查詢(xún)也會(huì)通過(guò)Embedding Model編碼成向量。
相似度檢索:利用向量相似度算法(如內(nèi)積、余弦相似度)在向量數(shù)據(jù)庫(kù)中檢索最接近的候選文檔。
RAG系統(tǒng)的整體效果很大程度上依賴(lài)Embedding Model的召回質(zhì)量,好的Embedding Model能夠在第一步就篩出高質(zhì)量候選文本,極大提升系統(tǒng)性能。
簡(jiǎn)單理解Embedding:
這家伙就像是給文本辦了個(gè)“身份證”。我每次看到一段話,腦子里想的都是“怎么把它變成AI能懂的玩意兒?”Embedding就干了這事兒:把文字變成一串?dāng)?shù)字(向量),而且這串?dāng)?shù)字還能反映出文字的“靈魂”。比如,“貓”和“狗”在向量世界里靠得近,“汽車(chē)”就離得老遠(yuǎn)。簡(jiǎn)單來(lái)說(shuō),它就是個(gè)翻譯官,把人類(lèi)語(yǔ)言翻譯成AI的數(shù)學(xué)語(yǔ)言。
在RAG里,我用Embedding把用戶(hù)的問(wèn)題和知識(shí)庫(kù)里的文檔都變成向量,然后一比對(duì),找出最像的幾個(gè)。這種“速配”靠的是啥?余弦相似度啊,歐幾里得距離啊這些數(shù)學(xué)小把戲。效率高,覆蓋廣,這就是Embedding。
Rerank Model簡(jiǎn)介
Rerank Model的核心任務(wù)是在Embedding Model召回的候選文檔中,進(jìn)一步篩選和重新排序,以確保最相關(guān)的內(nèi)容排在前列。Rerank Model通常使用更復(fù)雜的深度學(xué)習(xí)模型來(lái)更精準(zhǔn)地捕獲文本間的語(yǔ)義關(guān)系。
簡(jiǎn)單理解Rerank:
光靠Embedding粗篩還不夠,畢竟它有時(shí)候會(huì)給我撈一堆“歪瓜裂棗”。這時(shí)候,Rerank就上場(chǎng)了。這家伙是個(gè)挑剔的“二篩大師”,專(zhuān)門(mén)從Embedding挑出的Top-K候選里再精選出Top-N。
它不像Embedding那樣簡(jiǎn)單粗暴地比向量,而是用更聰明的方式(比如交叉注意力機(jī)制)去算:“喂,這個(gè)文檔跟問(wèn)題到底有多搭?”最后,它給我一個(gè)分?jǐn)?shù),我就按分?jǐn)?shù)高低重新排個(gè)序,挑出最靠譜的答案。
常用模型介紹
常用Embedding模型及使用場(chǎng)景分類(lèi):
常用Rerank模型及使用場(chǎng)景分類(lèi):
快速部署模型
本次我們使用Xinference來(lái)部署這些模型。
先簡(jiǎn)單介紹一下Xinference。它是Xorbits團(tuán)隊(duì)搞的一個(gè)開(kāi)源推理框架,號(hào)稱(chēng)能讓你“一行代碼換模型”,支持各種語(yǔ)言模型(LLM)、語(yǔ)音識(shí)別模型和多模態(tài)模型。部署方式也很靈活,云端、本地、甚至筆記本都能跑。聽(tīng)起來(lái)挺好,對(duì)吧?但咱們得看看它具體能不能搞定這些Embedding和Rerank模型。
Xinference github 地址:
https://github.com/xorbitsai/inference
根據(jù)Xinference的GitHub頁(yè)面和文檔,它主打的是:
開(kāi)源語(yǔ)言模型:比如LLaMA、Mistral、Grok。
嵌入模型(Embedding Models):明確提到支持,像BAAI/bge-large-en、sentence-transformers/all-MiniLM-L6-v2這種。
Rerank模型:也支持,比如BAAI/bge-reranker-large。
所以,從官方宣稱(chēng)來(lái)看,Embedding和Rerank模型都可以部署。尤其是BGE系列(包括bge-large-zh、bge-reranker-large),文檔里直接點(diǎn)名支持,說(shuō)明這些熱門(mén)模型已經(jīng)適配好了。
本次我們使用Docker進(jìn)行部署Xinference,執(zhí)行如下命令拉取鏡像:
docker pull xprobe/xinference
執(zhí)行如下命令運(yùn)行Xinference:
docker run --name xinference -d -p 9997:9997 -e XINFERENCE_HOME=/data -v </on/your/host>:/data --gpus all xprobe/xinference:latest xinference-local -H 0.0.0.0
詳細(xì)操作可參考官方文檔。
Xinference 絕對(duì)能部署前面提到的絕大多數(shù)模型,尤其是BGE、SBERT、Cross-Encoder這種熱門(mén)模型,基本是“開(kāi)箱即用”。BERT、Chinese-RoBERTa這種需要點(diǎn)手動(dòng)配置,但也在能力范圍內(nèi)。
Embedding Model與Rerank Model在RAG系統(tǒng)中相輔相成,分別承擔(dān)著“海選”和“精挑細(xì)選”的重要職責(zé)。
選擇合適的Embedding Model可以提升系統(tǒng)的召回質(zhì)量,而搭配強(qiáng)大的Rerank Model則能進(jìn)一步優(yōu)化結(jié)果的相關(guān)度和準(zhǔn)確性。
無(wú)論是構(gòu)建知識(shí)庫(kù)、智能問(wèn)答系統(tǒng),還是搜索引擎,合理地組合這兩類(lèi)模型,才能充分發(fā)揮RAG系統(tǒng)的強(qiáng)大潛力。