(كولبالي) و (راغ) الوثيقة الأصلية للرؤية
Type: Build
Languages: Python (stdlib, multi-vector indexer + MaxSim scorer)
Prerequisites: Phase 11 (LLM Engineering — RAG basics), Phase 12 · 05 (LLaVA)
Time: ~180 minutes
أهداف التعلم
- شرح الفرق بين استرداد المرموزين الثنائيين (متجه واحد لكل وثيقة) والاسترداد المتأخر للتفاعل (العديد من المتجهات لكل وثيقة).
- وصف عملية ColBERT MaxSim وكيف ColPali يعملها من رموز نص إلى تصفيح الصورة.
- قم ببناء مؤشر صغير مثل ColPali: الصفحة → إدخال اللمسات الخاصة بك → MaxSim على إدخال المطلوبات → الصفحات العليا.
- مقارنة مولد ColPali + Qwen2.5VL مقابل النص-RAG + GPT-4 على صورت استخدام الفواتير / التقارير المالية.
المشكلة
يرمي النص-RAG على الملفات الفيديوية معظم الوثيقة. عادة ما يكون نمو الإيرادات في الربع الثالث من التقرير المالي في الرسم البياني؛ وتوجد نتائج تقرير طبي في صور ملصقة؛ ويحتوي كتلة توقيع عقد قانوني على حقيقة تخطيط، وليس حقيقة نصية.
خط الأنابيب النصية-RAG:
- PDF → نص عبر OCR / pdftotext.
- النص → 300-500 قطعة رمزية.
- شيك → إضافة ثنائية المشفير (متجه واحد).
- استفسار المستخدم → إضافة → تشابه كوسين → قطع top-k.
- الاختبارات + السؤال → ماجستير في العلوم
خمسة خطوات خسارة، الرسوم البيانية غير المسجلة، الجداول مكسورة إلى قطع، التخطيط متعدد الأعمدة مسطحة، وتختفي الملحقات الرقمية.
حل ColPali: تخطي OCR ، تضمين صورة الصفحة مباشرة. استخدم التفاعل المتأخر على النمط ColBERT لاسترداد حتى يتمكن النموذج من الاحتفاظ بمصطلحات حبة دقيقة في وقت الاستفسار.
المفهوم
كولبرت (2020)
كولبرت (Khattab & Zaharia, arXiv:2004.12832) هو طريقة لاسترداد النص. بدلا من متجه واحد لكل وثيقة، فإنه ينتج متجه واحد لكل رمز. في وقت الاستفسار:
- تتلقى رموز الاستفسار إضافة خاصة بها (مجهرات N_q).
- تتلقى رموز الوثائق تضمينات (متجهات N_d ، عادة ما يتم تخزينها).
- النتيجة = مجموع على رموز الاستفسار من أقصى على رموز الوثائق من تشابه الكوسين: Σ_i max_j cos(q_i, d_j).
هذه عملية ماكس سيم كل رمز استفسار "تختار" أفضل رمز وثيقة مطابقة. النتيجة النهائية هي المبلغ.
المزايا: التذكر القوي، يتعامل مع التعريفات على مستوى المصطلحات. السلبيات: ن_د المتجهات لكل وثيقة، التخزين مكلف.
(كولبالي)
كولبالي (فايس وزملاءه، arXiv:2407.01449) يطبق نمط كولبرت على الصور.
- يتم ترميز كل صفحة بواسطة PaliGemma (لغة ViT +) إلى إدخالات اللمسات: ن_ب متجهات لكل صفحة.
- يتم ترميز كل استفسار مستخدم (نص) في إضافة رمز الاستفسار: ن_ق المتجهات.
- النتيجة = Σ_i max_j cos(q_i, p_j) ، أي، MaxSim على استفسار-نص-الرموز والصفحة-الصورة-المصطلحات.
- استعاد الصفحات الأولى من الـ "ك" حسب النتيجة الإجمالية
في وقت استهلاك الوثائق: تضمين كل صفحة مع PaliGemma، تخزين جميع إدخالات المكافآت. في وقت الاستفسار: تضمين رموز الاستفسار، حساب MaxSim ضد جميع إدخالات الصفحة المخزنة، عودة صفحة top-k.
المزايا: نهاية إلى نهاية تفوق النص-RAG بنسبة 20-40٪ على الوثائق الغنية بصريا. كل متجه إصطحاف يلتقط التخطيط المحلي والمحتوى.
السلبيات: N_p المفاتيح × 4 بايت العائمة × D-dim متجهات لكل صفحة = التخزين ينمو بسرعة. تخفيف من قبل PQ / OPQ كمية.
كولكوين2 و كولسمول
كولكوين2 (إيللين-تيك، 2024-2025) تبادل بالي جيما بـ كيوين2-فيل. أفضل مرموزة قاعدة، أفضل استرداد.
ColSmol هو التغير على نطاق أصغر للاستخدام المحلي / الحافة. يعمل جهاز ColSmol Retriever عند ~ 1B المعلمات على GPU المستهلك.
(فيسر)
ويزراج (يو وآخرين، arXiv:2410.10594) هو نوع مختلف: بدلا من ماكس سيم على اللصوص، تجمع كل صفحة في متجه واحد مع VLM ثم استرداد ثنائي المشفير.
التنازل عن الجودة مقابل التكلفة: كولبالي للجودة، و VisRAG للقياس.
M3DocRAG
M3DocRAG (Cho et al., arXiv:2411.04952) يوسع الاسترداد المتعدد المودات إلى التفكير المتعدد الوثائق متعدد الصفحات. يسترد الصفحات عبر المستندات، ويؤلف سياقًا متعدد الصفحات لـ VLM.
فيدور مقياس
مقياس المرجعي المرافق لـ ColPali. تقييم استعادة الوثائق المرئية. تتضمن المهام التقارير المالية والأوراق العلمية والوثائق الإدارية والسجلات الطبية واليدويات. المقياس: nDCG@5.
تسجل ColPali-v1 ~ 80% nDCG@5 على ViDoRe؛ نص-RAG على نفس الوثائق تسجل ~ 50-60%.
خط أنابيب RAG من نهاية إلى نهاية
لـ (RAG) الراية:
- إدخال: PDF → صور الصفحة → تشفير PaliGemma → تخزين جميع إدخالات المكافأة.
- استفسار: نص المستخدم → إضافة رمز الاستفسار → ماكس سيم ضد جميع الصفحات المفهومة → الصفحات العليا.
- توليد: صور الصفحة العليا + استفسار → VLM (Qwen2.5-VL أو كلود) → الإجابة.
لا توجد أوكر في أي مكان، الأرقام والخطط والخطوط، التخطيط كلها تدفق في الإجابة.
حسابات التخزين
تقرير مالي من 50 صفحة مع 729 إصلاحات لكل صفحة و 128 إضافة:
- ColPali: 50 729 128 * 4 بايت = ~ 18 MB خام، ~ 4 MB بعد PQ.
- النص-RAG: 50 قطعة 768-dim 4 بايت = ~ 150 كيلو بيت.
كولبالي هو ~ 30x أكثر تخزين لكل وثيقة. على مقياس، OPQ / PQ يقلله إلى ~ 5-10x، عادة ما يتحمل.
عندما نص-RAG لا يزال يفوز
- وثائق نصية نقية بدون إشارة ترتيب (مقالات ويكي، سجلات الدردشة). Text-RAG أبسط وأقله التخزين.
- أرشيفات مليوني صفحة حيث التخزين يهيمن على التكلفة
- متطلبات تنظيمية صارمة تتطلب نص OCR قابل الاستخراج إلى جانب الاستخراج.
بالنسبة لكل شيء آخر في عام 2026 تقارير مالية ورقائق علمية، عقود قانونية، سجلات طبية، وثائق UX رؤية-أصل RAG يفوز.
استخدمها
code/main.py:
- رمزية اللمسات اللعبة: تقوم بتخريط "صفحة" (شبكة صغيرة من متجهات الميزات) إلى مجموعة من إضافة اللمسات.
- مستحق النقاط ماكس سيم: يحسب النقاط على النمط كولبيرت بين مجموعة إضافة رمز الاستفسار ومجموعة إصلاحات الصفحة.
- فهرس 5 صفحات لعبة، يدير 3 استفسارات، يعود أعلى-ك مع نقاط.
أرسله
هذا الدرس يُنتجoutputs/skill-vision-rag-designer.mdفي حالة وجود مشروع وثيقة-RAG، يختار ColPali / ColQwen2 / VisRAG / text-RAG ويزيد حجم التخزين.
التمارين
- تقرير سنوي يبلغ 200 صفحة في 729 ملصق لكل صفحة، إيمب 128 درجة، 4 بايتات تعبئة. حساب التخزين الخام وتخزين PQ مضغوطة (8x).
- ماكس سيم = Σ_i max_j cos(q_i, p_j) ما الذي يحتوي عليه هذا المجموع الذي لا يحتوي عليه المتوسط البسيط؟
- فهرس ColPali الصفحات كمجموعات من الإصلاحات. ما التغييرات إذا قمنا بدلاً من ذلك فهرس على مستوى الكلمات (كما يفعل ColBERT) ؟ التداولات؟
- تصميم خط الأنابيب من نهاية إلى نهاية لمجموعة من صفحة 1M مع ميزانية تأخر 500ms لكل استفسار. اختر ColQwen2 / VisRAG وتبرير.
- اقرأ M3DocRAG (arXiv:2411.04952). وصف نمط الاهتمام متعدد الصفحات وكيف يختلف عن استرداد ColPali من صفحة واحدة.
الشروط الرئيسية
| Term | What people say | What 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 |
المزيد من القراءة
- Faysse et al. — ColPali (arXiv:2407.01449)
- Khattab & Zaharia — ColBERT (arXiv:2004.12832)
- Yu et al. — VisRAG (arXiv:2410.10594)
- Cho et al. — M3DocRAG (arXiv:2411.04952)
- illuin-tech/colpali GitHub
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.