Phase 12: Multimodal AI

कोलपाली और विजन-नेटिव डॉक्यूमेंट आरएजी

पारंपरिक RAG पीडीएफ को पाठ में पार्स करता है, टुकड़ों में विभाजित करता है, टुकड़ों को एम्बेड करता है, वेक्टरों को संग्रहीत करता है। प्रत्येक चरण में संकेत खो जाता हैः ओसीआर चार्ट डेटा को छोड़ देता है, टुकड़े टुकड़े तालिका पंक्तियों को तोड़ता है, पाठ एम्बेडेड आंकड़ों को अनदेखा करता है। कोलपाली (फाइसे और अन्य, जुलाई 2024) ने सरल प्रश्न पूछाः पाठ निकालना क्यों? पालीगेमा के माध्यम से सीधे पृष्ठ छवि को एम्बेड करें, पुनर्प्राप्त करने के लिए कोलबर्ट-शैली के देर से बातचीत का उपयोग करें, और दस्तावेज़ में लेआउट, आंकड़े, फ़ॉन्ट और स्वरूपण संकेत को बनाए रखें। प्रकाशित बेंचमार्कः दृश्यता से समृद्ध दस्तावेजों पर पाठ-आरएजी की तुलना में 20-40% बेहतर अंत-से-अंत सटीकता। ColQwen2, ColSmol और VisRAG ने पैटर्न को बढ़ाया। यह पाठ दृष्टि-निवासी आरएजी थीसिस पढ़ता है और एक छोटा ColPali-जैसा सूचकांक बनाता है।

Type: Build

Languages: Python (stdlib, multi-vector indexer + MaxSim scorer)

Prerequisites: Phase 11 (LLM Engineering — RAG basics), Phase 12 · 05 (LLaVA)

Time: ~180 minutes

सीखने के लक्ष्य

  • द्वि-संकेतक निकासी (प्रति दस्तावेज़ एक वेक्टर) और देर से बातचीत निकासी (प्रति दस्तावेज़ कई वेक्टर) के बीच अंतर समझाएं।
  • कोलबर्ट के मैक्ससिम ऑपरेशन का वर्णन करें और कोलबली इसे पाठ टोकन से छवि पैच तक कैसे सामान्य बनाता है।
  • एक छोटा ColPali-जैसा सूचकांक बनाएंः पृष्ठ → पैच एम्बेडिंग्स → मैक्ससिम क्वेरी-टर्म एम्बेडिंग्स → शीर्ष-के पृष्ठों पर।
  • एक चालान / वित्तीय रिपोर्ट उपयोग मामले पर ColPali + Qwen2.5VL जनरेटर बनाम पाठ-RAG + GPT-4 की तुलना करें।

समस्या

पीडीएफ पर टेक्स्ट-आरएजी अधिकांश दस्तावेज को फेंक देता है। वित्तीय रिपोर्ट की तिमाही की राजस्व वृद्धि आमतौर पर एक चार्ट में होती है; एक चिकित्सा रिपोर्ट के निष्कर्ष टिप्पणी वाली छवियों में होते हैं; कानूनी अनुबंध का हस्ताक्षर ब्लॉक एक लेआउट तथ्य है, एक पाठ तथ्य नहीं।

पाठ-आरएजी पाइपलाइनः

  1. ओसीआर / पीडीएफ-टेक्स्ट के माध्यम से पीडीएफ → पाठ।
  2. पाठ → 300-500 टोकन टुकड़े।
  3. Chunk → द्वि-संकेतक एम्बेडिंग (एक वेक्टर)
  4. उपयोगकर्ता क्वेरी → एम्बेडिंग → कॉसिन समानता → शीर्ष-क टुकड़े।
  5. चांस + क्वेरी → LLM.

पांच घाटे के कदम, चार्ट नहीं कैप्चर किए गए, तालिकाओं को टुकड़ों में तोड़ दिया गया, बहु स्तंभ लेआउट फ्लैट किया गया, आंकड़े नोटिस गायब हो गए।

ColPali का फिक्सः OCR को छोड़ें, पृष्ठ छवि को सीधे एम्बेड करें। क्वेरी के समय मॉडल को बारीक-बीजा पैचों को ध्यान में रख सकते हैं ताकि निकालने के लिए ColBERT शैली के देर से बातचीत का उपयोग किया जा सके।

अवधारणा

कोल्बर्ट (2020)

ColBERT (Khattab & Zaharia, arXiv:2004.12832) एक पाठ निकालने की विधि है। प्रति दस्तावेज़ एक वेक्टर के बजाय, यह प्रति टोकन एक वेक्टर उत्पन्न करता है। क्वेरी समयः

  • क्वेरी टोकन अपने स्वयं के एम्बेड (N_q वेक्टर) प्राप्त करते हैं।
  • दस्तावेज़ टोकन एम्बेड प्राप्त करते हैं (N_d वेक्टर, आमतौर पर कैश किए जाते हैं) ।
  • स्कोर = कॉसिन समानता के दस्तावेज टोकन पर क्वेरी टोकन के अधिकतम के योगः Σ_i max_j cos(q_i, d_j) ।

यह मैक्ससिम ऑपरेशन है. प्रत्येक क्वेरी टोकन अपने सबसे अच्छा मेल खाता दस्तावेज़ टोकन "चयन" करता है. अंतिम स्कोर राशि है.

पेशेवरोंः मजबूत याद, शब्द स्तर के अर्थशास्त्र को संभालता है। विपक्षः प्रति दस्तावेज़ N_d वेक्टर, भंडारण महंगा।

कोलपाली

कोलपाली (फाइसे एट अल, arXiv:2407.01449) ने छवियों पर कोलबर्ट पैटर्न लागू किया है।

  • प्रत्येक पृष्ठ को पालीगेम्मा (ViT + भाषा) द्वारा पैच एम्बेडमेंट में एन्कोड किया जाता हैः प्रति पृष्ठ N_p वेक्टर।
  • प्रत्येक उपयोगकर्ता क्वेरी (पाठ) क्वेरी-टोकन एम्बेडमेंट में एन्कोड किया जाता हैः N_q वेक्टर।
  • स्कोर = Σ_i max_j cos(q_i, p_j), यानी, क्वेरी-टेक्स्ट-टोकन और पेज-इमेज-पैच पर MaxSim।
  • कुल स्कोर के अनुसार शीर्ष-के पृष्ठों को प्राप्त करें।

दस्तावेज़-इंग्ज़िट समय परः प्रत्येक पृष्ठ को पालीगेम्मा के साथ एम्बेड करें, सभी पैच एम्बेड को स्टोर करें। क्वेरी समय परः क्वेरी टोकन एम्बेड करें, सभी संग्रहीत पृष्ठ एम्बेड के खिलाफ मैक्ससिम की गणना करें, शीर्ष-के पृष्ठों को वापस करें।

पेशेवरोंः दृश्य रूप से समृद्ध दस्तावेजों पर एंड-टू-एंड टेक्स्ट-आरएजी से 20-40% अधिक है। प्रत्येक पैच-वेक्टर स्थानीय लेआउट और सामग्री को कैप्चर करता है।

नकारात्मक पक्षः N_p पैच × 4 बाइट फ्लोट × D-dim वेक्टर प्रति पृष्ठ = भंडारण तेजी से बढ़ता है। PQ / OPQ क्वांटिज़ेशन द्वारा कम किया जाता है।

ColQwen2 और ColSmol

ColQwen2 (इल्लुइन-टेक, 2024-2025) PaliGemma को Qwen2-VL के लिए बदल देता है। बेहतर बेस एन्कोडर, बेहतर रिट्रीव।

ColSmol स्थानीय / किनारे उपयोग के लिए छोटे पैमाने पर संस्करण है। ~ 1B पैरामीटर पर एक ColSmol रिट्रीवर उपभोक्ता GPU पर चलता है।

विसराग

VisRAG (Yu et al., arXiv:2410.10594) एक अलग संस्करण हैः पैच पर मैक्ससिम के बजाय, प्रत्येक पृष्ठ को एक एकल वेक्टर में एक VLM के साथ मिलाएं और फिर द्वि-संकेतक निकालें। तेज़ अनुक्रमण + छोटा भंडारण, कमजोर याद।

गुणवत्ता बनाम लागत के बीच समझौताः गुणवत्ता के लिए कोलपाली, पैमाने के लिए विसराग।

एम३डोक्राग

M3DocRAG (Cho et al., arXiv:2411.04952) बहु-मॉडल रिट्रीवल को बहु-पृष्ठ बहु-दस्तावेज तर्क तक बढ़ाता है। दस्तावेजों के बीच पृष्ठों को पुनर्प्राप्त करता है, VLM के लिए एक बहु-पृष्ठ संदर्भ बनाता है।

ViDoRe बेंचमार्क

ColPali का साथी बेंचमार्क. दृश्य दस्तावेज पुनर्प्राप्ति मूल्यांकन. कार्यों में वित्तीय रिपोर्ट, वैज्ञानिक पत्र, प्रशासनिक दस्तावेज, चिकित्सा रिकॉर्ड, मैनुअल शामिल हैं। मीट्रिकः nDCG@5.

ColPali-v1 को ViDoRe पर ~ 80% nDCG@5 स्कोर मिलता है; उसी दस्तावेजों पर पाठ-RAG को ~ 50-60% स्कोर मिलता है।

अंत-से-अंत RAG पाइपलाइन

दृष्टि-जनित आरएजी के लिएः

  1. Ingest: PDF → पृष्ठ छवियां → PaliGemma एन्कोडिंग → सभी पैच एम्बेडमेंट को स्टोर करें।
  2. क्वेरीः उपयोगकर्ता पाठ → क्वेरी-टोकन एम्बेडिंग → सभी अनुक्रमित पृष्ठों के खिलाफ MaxSim → शीर्ष-के पृष्ठ।
  3. उत्पन्न करेंः शीर्ष-के पृष्ठ छवियां + क्वेरी → VLM (Qwen2.5-VL या क्लाउड) → उत्तर।

कोई ओसीआर कहीं नहीं. आंकड़े, चार्ट, फ़ॉन्ट, लेआउट सब उत्तर में बहते हैं।

भंडारण गणित

प्रति पृष्ठ 729 पैच और 128 आयामी एम्बेड के साथ 50 पृष्ठों की वित्तीय रिपोर्टः

  • ColPali: 50 729 128 * 4 बाइट = ~18 MB कच्चे, ~4 MB PQ के बाद।
  • पाठ-RAG: 50 टुकड़े 768-dim 4 बाइट = ~150 kB।

ColPali प्रति दस्तावेज़ ~ 30 गुना अधिक भंडारण है। पैमाने पर, OPQ / PQ इसे ~ 5-10x तक कम करता है, आमतौर पर सहनशील है।

जब पाठ-RAG अभी भी जीतता है

  • बिना लेआउट सिग्नल के शुद्ध-पाठ दस्तावेज़ (विकि लेख, चैट लॉग) । पाठ-आरएजी सरल और भंडारण सस्ता है।
  • लाखों पृष्ठों के अभिलेखागार जहां भंडारण लागत पर हावी है।
  • सख्त नियामक आवश्यकताएं जो निकालने के साथ-साथ निकाले जाने योग्य ओसीआर पाठ की आवश्यकता होती है।

2026 में बाकी सब कुछ के लिए वित्तीय रिपोर्ट, वैज्ञानिक पत्र, कानूनी अनुबंध, चिकित्सा रिकॉर्ड, यूएक्स दस्तावेज दृष्टि-जनित आरएजी जीतता है।

इसका प्रयोग करें

code/main.py:

  • खिलौना पैच एन्कोडरः पैच एम्बेडमेंट्स के सरणी के लिए एक "पृष्ठ" (विशेषता वेक्टरों की छोटी ग्रिड) का नक्शा बनाता है।
  • मैक्ससिम स्कोररः क्वेरी टोकन एम्बेडिंग सेट और पेज पैच सेट के बीच कोल्बर्ट शैली स्कोर की गणना करता है।
  • 5 खिलौना पृष्ठों को सूचकांकित करता है, 3 प्रश्नों को चलाता है, स्कोर के साथ शीर्ष-के लौटाता है।

इसे भेजें

यह सबक हमें फल देता हैoutputs/skill-vision-rag-designer.md. दस्तावेज़-आरएजी परियोजना को देखते हुए, ColPali / ColQwen2 / VisRAG / पाठ-आरएजी का चयन करें और भंडारण का आकार बढ़ाएं।

व्यायाम

  1. प्रति पृष्ठ 729 पैच, 128-आयामी एम्बेड, 4-बाइट फ्लोट पर 200 पृष्ठों की वार्षिक रिपोर्ट। कच्चे भंडारण और पीक्यू-कम्प्रेस्ड (8x) भंडारण की गणना करें।
  1. MaxSim Σ_i max_j cos(q_i, p_j) यह योग क्या कैप्चर करता है कि एक साधारण औसत समानता नहीं है?
  1. ColPali पृष्ठों को पैच सेट के रूप में अनुक्रमित करता है। यदि हम इसके बजाय शब्द स्तर पर अनुक्रमित करते हैं (जैसा कि ColBERT करता है)? व्यापार-बदला?
  1. प्रति क्वेरी 500ms के विलंब बजट के साथ 1M-पृष्ठ निकाय के लिए अंत-से-अंत पाइपलाइन डिजाइन करें। ColQwen2 / VisRAG चुनें और सही ठहरें।
  1. M3DocRAG (arXiv:2411.04952) पढ़ें। बहु-पृष्ठ ध्यान पैटर्न का वर्णन करें और यह एकल-पृष्ठ ColPali निकासी से कैसे भिन्न है।

प्रमुख शर्तें

TermWhat people sayWhat it actually means
Late interaction"ColBERT-style"Retrieval using per-token or per-patch embeddings + MaxSim, not a single doc vector
MaxSim"Max-over-patches"For each query token, pick the highest-similarity document token; sum across query
Bi-encoder"Single-vector"One vector per document; faster but loses granularity
Multi-vector"Many-vectors-per-doc"Store N_p vectors per document / page; storage cost grows but recall improves
Patch embedding"Page feature"One vector per image patch from a VLM encoder, cached per page
ViDoRe"Vision doc bench"ColPali's benchmark suite for visual document retrieval
PQ quantization"Product quantization"Compression that maintains vector similarity while shrinking storage ~8x

आगे पढ़ना

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.