拋棄 OCR,拋棄文本提取,拋棄分塊!提升RAG性能的新方法!
在最近的文章中,筆者介紹了影響 Context 高質(zhì)量供給的關(guān)鍵因素有記憶的存用和記憶的連貫性。
而對(duì)記憶源信息(尤其是復(fù)雜文檔)的深度理解是高質(zhì)量Conext供給的又一大關(guān)鍵。傳統(tǒng)的文本提取和分塊方法,在面對(duì)圖文混排、表格遍布的文檔時(shí),往往力不從心,生成的 Context 質(zhì)量堪憂,這已成為提升 RAG 應(yīng)用性能的一大瓶頸。
我們都曾經(jīng)歷過(guò)這樣的“噩夢(mèng)”:精心構(gòu)建的 RAG 系統(tǒng),因?yàn)?OCR 識(shí)別錯(cuò)誤、表格內(nèi)容丟失、或者圖片信息被忽略,導(dǎo)致 LLM 的回答驢唇不對(duì)馬嘴。PDF、Word 文檔、PPT 演示稿中那些精心設(shè)計(jì)的布局、關(guān)鍵的圖表數(shù)據(jù)、甚至是字體樣式的強(qiáng)調(diào),這些豐富的視覺信息在傳統(tǒng)處理流程中幾乎被完全拋棄,只留下一堆可能支離破碎的文本。
今天介紹一個(gè)項(xiàng)目 ColiVara ,正試圖從根本上解決這個(gè)問(wèn)題,它帶來(lái)的不是對(duì)現(xiàn)有流程的修修補(bǔ)補(bǔ),而是一場(chǎng)針對(duì)文檔檢索的“視覺革命”。
ColiVara 的“殺手锏”:用視覺模型“看懂”文檔
ColiVara 的核心理念十分大膽:拋棄 OCR,拋棄文本提取,拋棄分塊! 它直接將文檔(支持 PDF, DOCX, PPTX 等超過(guò)100種格式)的每一頁(yè)都視為一張圖像,利用先進(jìn)的視覺語(yǔ)言模型(基于“ColPali: Efficient Document Retrieval with Vision Language Models” 論文[1])來(lái)生成文檔的“視覺嵌入”。這意味著,ColiVara 不再僅僅“閱讀”文本,它更能“看見”并理解文檔的整體布局、圖片內(nèi)容、表格結(jié)構(gòu)等視覺元素。
這種方法的優(yōu)勢(shì)是顛覆性的:
- 告別信息損失:再也不會(huì)有無(wú)法識(shí)別的表格、丟失的圖片、或因分塊不當(dāng)導(dǎo)致的上下文割裂。文檔的完整性得到了前所未有的保留。
- 卓越的檢索性能:通過(guò)整合文本與視覺特征,ColiVara 在文本和視覺文檔檢索上均展現(xiàn)出業(yè)界領(lǐng)先的性能。其采用的“后期交互 (Late-Interaction)”風(fēng)格嵌入,即便在純文本文檔上,也比傳統(tǒng)池化嵌入更為精準(zhǔn)。
- 開發(fā)者體驗(yàn)友好:提供簡(jiǎn)潔易用的 Python/Typescript SDK 和 REST API,讓開發(fā)者可以快速集成。
ColiVara 為何與眾不同?
你可能會(huì)問(wèn),如果我的文檔主要是文本,我還需要 ColiVara 嗎?答案是肯定的。正如其文檔所言,即使是純文本文檔,ColiVara 的后期交互式嵌入也能提供更準(zhǔn)確的檢索。更重要的是,它為你打開了處理混合內(nèi)容文檔(這才是現(xiàn)實(shí)世界中的常態(tài))的全新大門。
- 無(wú)需自建向量數(shù)據(jù)庫(kù)(大部分情況):ColiVara 使用 Postgres 和 pgVector 為你處理向量存儲(chǔ),極大地簡(jiǎn)化了部署和維護(hù)。當(dāng)然,如果你堅(jiān)持,它也提供了單獨(dú)的嵌入生成端點(diǎn),讓你自由選擇存儲(chǔ)方案(但需注意其對(duì)多向量和后期交互特性的支持)。
- 廣泛的格式支持:從 PDF 到 Office 全家桶,再到各種圖片格式,基本覆蓋了日常工作中的所有文檔類型。
- 強(qiáng)大的元數(shù)據(jù)過(guò)濾:不僅能進(jìn)行語(yǔ)義搜索,還能結(jié)合文檔或集合的元數(shù)據(jù)(如作者、日期、標(biāo)簽)進(jìn)行精確篩選,完美融合非結(jié)構(gòu)化與結(jié)構(gòu)化數(shù)據(jù)的檢索優(yōu)勢(shì)。
- 透明的評(píng)估體系:基于 Vidore 數(shù)據(jù)集進(jìn)行可復(fù)現(xiàn)的性能評(píng)估,其 Release 1.5.0 版本在多個(gè)基準(zhǔn)測(cè)試中取得了平均 86.8 的高分。
快速上手 ColiVara
上手 ColiVara 非常簡(jiǎn)單:
- 從 ColiVara 官網(wǎng)(或其指定渠道)獲取免費(fèi) API Key。
- 安裝 SDK (?
?pip install colivara-py?
? 或??npm install colivara-ts?
?)。 - 幾行代碼即可索引和搜索文檔:
# Python 示例
from colivara_py import ColiVara
client = ColiVara(api_key="YOUR_API_KEY")
# 索引文檔 (URL, base64 或本地路徑)
client.upsert_document(
name="annual_report_2023",
document_url="https://example.com/report.pdf",
metadata={"year": 2023, "category": "finance"}
)
# 搜索
results = client.search("what were the key financial highlights of 2023?")
print(results)
小結(jié)
在 RAG 應(yīng)用成為主流的當(dāng)下,如何從原始文檔中高效、準(zhǔn)確地提取高質(zhì)量 Context,已經(jīng)成為決定應(yīng)用成敗的關(guān)鍵。
傳統(tǒng)的解析、分塊、嵌入的分階段過(guò)程,帶來(lái)的是每一個(gè)階段的信息損失,ColiVara的方案讓文檔處理更加簡(jiǎn)單和完整,它的新穎思路會(huì)給更多人啟發(fā),也將趨勢(shì)更多人在這一新的技術(shù)方向探索。
github地址:???https://github.com/tjmlabs/ColiVara??
參考:
[1]ColPali 論文: ???https://arxiv.org/abs/2407.01449??
本文轉(zhuǎn)載自????AI工程化?????,作者:ully
