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