多模態(tài)RAG-ColPali:使用視覺(jué)語(yǔ)言模型實(shí)現(xiàn)高效的文檔檢索 原創(chuàng)
前面文章提到,文檔智能解析能夠有效的增強(qiáng)RAG系統(tǒng)的準(zhǔn)確性。??【文檔智能 & RAG】RAG增強(qiáng)之路:增強(qiáng)PDF解析并結(jié)構(gòu)化技術(shù)路線方案及思路??
文檔智能解析RAG一般流程
可以看到基于PDF的RAG,需要先對(duì)pdf進(jìn)行解析,生成文本chunk,然后再基于文本建索引。這種pipline的方式,每個(gè)解析模塊都需要放置對(duì)應(yīng)的解析模型,存在著錯(cuò)誤傳播的問(wèn)題。因此,筆者看到ColPali時(shí),這種端到端的方案挺有意思,本文來(lái)看一看這個(gè)思路。
ColBERT
在此之前,先看一下ColBERT的架構(gòu),該架構(gòu)包括:查詢編碼器、文檔編碼器和后期交互機(jī)制。
查詢編碼器
ColBERT的架構(gòu)
假設(shè)有一個(gè)查詢,其標(biāo)記(token)為,處理步驟如下:
- 將轉(zhuǎn)換為 BERT 使用的 WordPiece 標(biāo)記 (一種子詞分詞方法)。
- 在序列開(kāi)頭添加一個(gè)特殊的[Q]標(biāo)記,緊隨 BERT 的[CLS]標(biāo)記之后,用于標(biāo)識(shí)查詢的開(kāi)始。
- 如果查詢長(zhǎng)度不足預(yù)設(shè)的個(gè)標(biāo)記,用[mask]標(biāo)記填充;若超過(guò)則截?cái)唷?/li>
- 將處理后的序列輸入 BERT,然后通過(guò)CNN處理,最后進(jìn)行歸一化。
最終輸出的查詢嵌入向量集合 可表示為:
文檔編碼器
對(duì)于包含標(biāo)記 的文檔,處理步驟類似:
- 在序列開(kāi)頭添加[D]標(biāo)記,標(biāo)識(shí)文檔開(kāi)始。
- 無(wú)需填充,直接輸入 BERT 進(jìn)行處理。
文檔嵌入向量集合 Ed 可表示為:
Filter用于去除與標(biāo)點(diǎn)符號(hào)對(duì)應(yīng)的嵌入,從而提升分析速度。這里的查詢填充策略(論文中稱為"查詢?cè)鰪?qiáng)")確保了所有查詢長(zhǎng)度一致,有利于批量處理。而[Q]和[D]標(biāo)記則幫助模型區(qū)分輸入類型,提高了處理效率。
后期交互機(jī)制
“交互”是指通過(guò)比較查詢和文檔的向量表示來(lái)評(píng)估它們之間的相關(guān)性?!昂笃诮换ァ北硎具@種比較發(fā)生在查詢和文檔已經(jīng)被獨(dú)立編碼之后。這種方法與BERT之類的“早期交互”模型不同——早期交互中查詢和文檔的Embedding在較早的階段相互作用,通常是在編碼之前或期間。
ColBERT采用了一種后期交互機(jī)制,使得查詢和文檔的表示可以用于預(yù)計(jì)算。然后,在末尾使用簡(jiǎn)化的交互步驟來(lái)計(jì)算已編碼的向量列表之間的相似性。與早期交互方法相比,后期交互可以加快檢索時(shí)間和降低計(jì)算需求,適用于需要高效處理大量文檔的場(chǎng)景。
編碼器將查詢和文檔轉(zhuǎn)換為token級(jí)別的embedding列表 和。然后,后期交互階段使用針對(duì)每個(gè)中的向量,找與其產(chǎn)生最大內(nèi)積的中的向量(即為向量之間的相似性),并將所有分?jǐn)?shù)求和的最大相似性 (MaxSim) 計(jì)算。MaxSim的計(jì)算結(jié)果就反映了查詢與文檔之間的相關(guān)性分?jǐn)?shù),表示為 。
這種方法的獨(dú)特價(jià)值在于能夠?qū)Σ樵兣c文檔token embedding之間進(jìn)行詳細(xì)、細(xì)粒度的比較,有效捕捉查詢和文檔中長(zhǎng)度不同的短語(yǔ)或句子之間的相似性。這尤其適合需要精確匹配文本片段的應(yīng)用場(chǎng)景,可以提高搜索或匹配過(guò)程的整體準(zhǔn)確性。
ColPali
與 ColBERT 相比,ColPali 仍然使用文本作為查詢,文檔則是圖像類型。在視覺(jué)encoder,也是利用多模態(tài)的視覺(jué)大模型來(lái)生成圖片端的向量,但不僅僅只生成單個(gè)向量。而是利用VIT的patch embedding,來(lái)生成多個(gè)向量。直覺(jué)上確實(shí)是會(huì)有收益,因?yàn)橐徽?yè)的pdf,只壓縮在一個(gè)固定維度的向量中,那肯定有信息損失,而且以patch為單位生成embedding。
上面是傳統(tǒng)的建索引和檢索過(guò)程,可以看出要進(jìn)行一系列的pdf parse過(guò)程。最后得到文本chunking,然后送入文本向量模型中,得到向量;下面是ColPali的建索引和檢索過(guò)程,直接輸入整個(gè)頁(yè)面的截圖進(jìn)入Vision LLM中,得到多個(gè)向量。
視覺(jué)語(yǔ)言模型
ColPali選擇PaliGemma-3B作為其視覺(jué)語(yǔ)言模型,這是一個(gè)相對(duì)較小的模型,具有多個(gè)針對(duì)不同圖像分辨率和任務(wù)微調(diào)的檢查點(diǎn),并且在各種文檔理解基準(zhǔn)測(cè)試中表現(xiàn)出色。PaliGemma-3B的一個(gè)關(guān)鍵特性是其文本模型在前綴(指令文本和圖像標(biāo)記)上進(jìn)行了全塊注意力的微調(diào)。
為了生成輕量級(jí)的多向量表示,ColPali在PaliGemma-3B模型的基礎(chǔ)上添加了一個(gè)投影層,將輸出的語(yǔ)言建模嵌入映射到一個(gè)降低維度的向量空間中(D=128),這與ColBERT論文中使用的向量空間大小相同。
后期交互機(jī)制
ColPali采用了和ColBERT 類似的后期交互機(jī)制,這是一種在檢索時(shí)才進(jìn)行的交互方式。給定查詢和文檔,它們的多向量表示在共同的嵌入空間RD中分別表示為和。后期交互操作符定義為查詢向量與其在文檔嵌入向量中的最大點(diǎn)積?·|·?的總和。
數(shù)學(xué)公式表示為:
通過(guò)這種方式,ColPali能夠在檢索時(shí)充分利用查詢和文檔之間的交互,同時(shí)保持了離線計(jì)算和快速查詢匹配的優(yōu)勢(shì)。
對(duì)比損失
對(duì)比損失通過(guò)對(duì)比正樣本和負(fù)樣本之間的差異來(lái)訓(xùn)練模型。在ColPali模型中,對(duì)比損失用于優(yōu)化檢索任務(wù),使得模型能夠?qū)W習(xí)區(qū)分與查詢相關(guān)的文檔和不相關(guān)的文檔。
在ColPali模型的訓(xùn)練過(guò)程中,每個(gè)批次包含多個(gè)查詢-文檔對(duì)。對(duì)于每對(duì)查詢和其對(duì)應(yīng)的正樣本文檔,模型會(huì)計(jì)算一個(gè)正樣本分?jǐn)?shù),這是通過(guò)后期交互操作得到的。同時(shí),模型還會(huì)計(jì)算一個(gè)負(fù)樣本分?jǐn)?shù),這是通過(guò)在批次中所有其他文檔(即負(fù)樣本)上執(zhí)行晚期交互操作,并取最大值得到的。
其中:
- 是批次中查詢-文檔對(duì)的數(shù)量。
- 是查詢q_k與其對(duì)應(yīng)的正樣本文檔dk之間的正樣本分?jǐn)?shù)。
- 是查詢q_k與所有負(fù)樣本文檔中的最大分?jǐn)?shù)。
實(shí)驗(yàn)效果
參考文獻(xiàn)
- ColPali: Efficient Document Retrieval with Vision Language Models
- ??https://github.com/illuin-tech/colpali?tab=readme-ov-file??
本文轉(zhuǎn)載自公眾號(hào)大模型自然語(yǔ)言處理 作者:余俊暉
