思源Source報道
編輯:seefun
如果說2023年見證了大語言模型的“寒武紀大爆發”,那么2024年則是多模態大模型“元年”。GPT-4o的出現讓大家見識到多模態能力引入,給下游應用生態帶來的巨大改變。隨之而來的,RAG技術也將逐漸從單語言模態的RAG進化到多模態RAG。本文將帶大家速覽多模態RAG技術的原理及實現。
什么是RAG
什么是RAG:Retrieval Augmented Generation,檢索增強生成。是一種結合了信息檢索技術和大型語言模型提示功能的框架。它通過從數據源檢索信息來輔助LLM生成答案,提高了模型在知識密集型任務中的準確性和可信度。
我們為什么需要RAG:大型語言模型通?;诠潭ǖ臍v史數據集進行訓練,這意味著它們的知識是過時的,無法涵蓋最新的信息或特定領域的專業知識。RAG的目的是通過引入額外知識庫,檢索其中的相關信息,并根據檢索結果給予用戶回答。這也可以顯著減少大模型因為并不具備相關知識,而出現的“幻覺”現象。當然我們也可以直接把整個數據庫作為LLM的prompt輸入,但由于transformer架構O(N2)復雜度的限制,LLM支持的最長輸入長度通常有限,多數支持到128k token已經是極限,使得在面臨更長知識庫輸入時,RAG依然是當下唯一可行的解決方案。
如何實現RAG:在實際應用時,我們常需要給定一系列文檔,并使用RAG方法,讓LLM針對這些文檔進行檢索與交互。RAG的實現主要包含以下幾個步驟:
數據準備階段:包括數據提取、分塊(chunking)、向量化(embedding)、數據入庫等環節。數據提取涉及將不同格式的數據(如PDF、Word、數據庫等)處理為統一的格式。分塊是將大文檔分割成較小的、語義完整的單元,以便于后續處理和檢索。
檢索階段:系統根據輸入查詢檢索相關文檔或信息。這個階段依賴于搜索算法和索引方法來快速識別大量集合中最相關的數據 。
增強階段:將用戶查詢和檢索到的額外上下文放入一個提示模板中,以增強提示 。
生成階段:使用大型語言模型來針對檢索結果,生成對用戶的回復。
走向多模態RAG
從RAG的應用可以看出,多數時候,我們需要把一些文檔作為RAG的輸入,用于檢索和生成。而現實應用中,文檔通常是以圖文交錯的形式存在的,比如網頁、PDF、PPT文件等等。
通常的做法是,只保留文檔中的文本信息。對于PDF文檔,則進行OCR文字識別,讀取其中的文本。但這樣會導致大量圖片中至關重要的信息被丟失,以及很多結構化內容的錯亂,比如標題、表格、頁眉頁腳等格式錯亂。
改進的做法是,把所有模態信息都轉換為純文本,再進行RAG。我們可以使用多種計算機視覺模型,比如檢測模型對文檔結構進行識別,然后對文檔中不同的模塊,使用不同的“廣義OCR模型”進行解析。比如對于文本段落,使用OCR模型進行文本識別;對于表格,可以用表格模型進行識別轉換為Markdown或LaTeX文本;對于公式,則套用公式識別轉換為LaTeX;對于圖片,則可使用多模態大模型如GPT-4o進行文本解讀(caption),保存為文本描述。有很多開源的工具可以完成這些事情,比如MinerU等。通過解析算法,多模態數據就被完全轉換為純文本的格式了,也就可以照葫蘆畫瓢套用純文本的RAG方法了。
圖像來源: 張穎峰 | 所見即所得:多模態RAG正在向我們走來
我們注意到,使用上述的方法,信息不可避免會存在丟失,而且依賴過多的解析模型。而時間來到2024年,多模態大模型實現了爆發式的技術突破,高分辨率的視覺輸入已經取得了巨大突破,使用單一的多模態大模型做廣義OCR也變得非常容易。比如QWen2-VL以及InternVL-2等開源多模態大模型,在文檔的廣義OCR上都有非常好的效果。
多模態大模型成功,讓端到端(end-to-end)的算法已經成為了主流。原生多模態的RAG算法也成為了可能:既然多模態大模型有能力理解文本,那我們其實即無需再把圖像轉換為文本,而可以直接使用圖像,提取embedding去做RAG。
即從圖(a)轉變為圖(b)的模式
DSE
https://arxiv.org/abs/2406.11251
DSE,即Document Screenshot Embedding,是一個不使用廣義OCR的多模態RAG方法,直接把原始文檔的掃描圖片,切片后,使用視覺語言模型的編碼器編碼。其對query和docunment使用了雙編碼的架構。驗證了這一想法的可行性。
ColPali
https://arxiv.org/abs/2407.01449
ColPali架構也是利用視覺語言模型來從文檔頁面的圖像中產生高質量的上下文化嵌入。ColPali使用了延遲交互(late interaction)技術,大大提高了檢索效率,同時在檢索性能上超越了現有的文檔檢索系統,并且具有更快的處理速度和可端到端訓練的特點。上圖對比了傳統的文檔RAG與多模態RAG的區別。因為減少了廣義OCR的解析過程,使得處理速度也有了質的提升。
CoPali其實從名字上看,就知道靈感來源于兩個工作,PaliGemma和CoBERT。PaliGemma 是 Google 開發的一款具有多模態功能的視覺語言模型,它結合了視覺模型 SigLIP 和大型語言模型 Gemma?!癈ol” 則來自于ColBERT 的延遲交互編碼器。ColPali 算是延遲交互編碼器在多模態 RAG 檢索的應用,并且極大提高了檢索召回的精度。
延遲交互編碼結合了雙編碼器和交叉編碼器的優點。在這種架構中,query和文檔被分別編碼成獨立的embedding集合,然后通過一個高效的交互機制來計算它們之間的相似度。
延遲交互編碼的核心思想是將查詢和文檔的編碼過程分開,這樣文檔的編碼可以離線完成,而查詢的編碼則在在線階段進行。這種方法的優點是可以在查詢時僅對查詢進行編碼,從而大大提高了處理速度。此外,由于文檔的編碼是預先完成的,可以將其存儲在數據庫中,這樣就可以對更多的文檔進行排序,從而提高查詢的精度。
在延遲交互編碼中,一個關鍵的計算是最大相似性(MaxSim)函數,它計算每個查詢Token向量與所有文檔Token向量之間的相似度,并跟蹤每個查詢Token的最大得分。查詢和文檔的總相似度分數是這些最大余弦相似度分數的總和。這種方法允許模型在保持較高排序質量的同時,也具備較高的性能。
隨著多模態大語言模型能力的增強,以它為基礎的多模態RAG,也早已突破了傳統的圖像檢索的應用方式,而是真正具備大規模非結構化多模態數據深度理解的能力,將會有更多toB的商業應用價值。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.