Phase 12: Multimodal AI

ColPali و سند اصلی Vision-Native RAG

RAG سنتی فایل های PDF را به متن تجزیه می کند، به قطعات تقسیم می کند، قطعات را در خود قرار می دهد، و متری را ذخیره می کند. هر مرحله سیگنال را از دست می دهد: OCR داده های نمودار را از دست می دهد، تکه تکه میز را شکسته و متن های گنجانده شده اعداد را نادیده می گیرند. کولپالی (فایس و همکارانش، جولای 2024) سوال ساده تری را مطرح کرد: چرا متن استخراج می شود؟ تصویر صفحه را مستقیما از طریق PaliGemma قرار دهید، از تعامل دیر به سبک ColBERT برای بازیافت استفاده کنید و تمام طرح، اعداد، فونت ها و سیگنال فرمت سازی را که سند حمل می کند نگه دارید. معیار های مرجع منتشر شده: 20-40٪ دقت کامل از پایان تا پایان بهتر از متن-RAG در اسناد غنی از بصری است. ColQwen2، ColSmol و VisRAG این الگوی را گسترش دادند. این درس مقالات RAG را می خواند و یک شاخص کوچولو شبیه 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

اهداف یادگیری

  • تفاوت بین بازیافت دو کد (یک ویکتور در هر سند) و بازیافت تعامل دیر (بسیاری ویکتور در هر سند) را توضیح دهید.
  • عملیات MaxSim ColBERT را توصیف کنید و چگونگی کلی شدن آن از توکن های متن به پیچ های تصویر ColPali را توصیف کنید.
  • یک شاخص کوچک شبیه ColPali بسازید: صفحه → پیوند های پیوند → MaxSim بر روی پیوند های اصطلاحی سوال → صفحات top-k.
  • مقایسه ژنراتور ColPali + Qwen2.5VL با متن-RAG + GPT-4 در یک مورد استفاده از فاکتورها / گزارش های مالی.

مشکل

متن-RAG در PDF ها بیشتر اسناد را از بین می برد. رشد درآمد سه ماهه سوم یک گزارش مالی معمولا در یک نمودار است؛ یافته های یک گزارش پزشکی در تصاویر نوتیزه شده است؛ بلوک امضا قرارداد قانونی یک واقعیت طرح است، نه یک واقعیت متن.

خط لوله متن-RAG:

  1. PDF → متن از طریق OCR / pdftotext.
  2. متن → 300-500 قطعه رمز
  3. کُک → دو کدگذاری (یک متری)
  4. سوال کاربر → گنجاندن → شباهت کوسین → top-k chunks.
  5. "چانکز" + "سوال" → "معلم ارشد"

پنج مرحله گمشده، نمودار ها ضبط نشده، جدولها به قطعات شکسته، طرح چند ستون هموار شده، نوتیفکیشن های شکل ناپدید می شوند.

اصلاح ColPali: OCR را رد کنید، تصویر صفحه را مستقیما در خود قرار دهید. از تعامل دیر به سبک ColBERT برای بازیافت استفاده کنید تا مدل بتواند در زمان جستجو به پیچ های نخوری توجه کند.

مفهوم

کولبرت (2020)

کولبرت (Khattab & Zaharia, arXiv:2004.12832) یک روش بازیافت متن است. به جای یک ویکتور در هر سند، یک ویکتور در هر توکن تولید می کند. در زمان جستجو:

  • توکن های جستجوگر ورودی های خود را (وکتورهای N_q) دریافت می کنند.
  • توکن های سند شامل شده (وکتورهای N_d، معمولا ذخیره شده است).
  • امتیاز = مجموع بر روی توکن های جستجو از حداکثر بر روی توکن های سند مشابهی cosine: Σ_i max_j cos(q_i, d_j).

این عملیات MaxSim است. هر رمز جستجو "انتخاب" بهترین سمبول سند مطابقت. نمره نهایی مجموعه است.

مزایایی: بازنگری قوی، معادلات سطح اصطلاحات را اداره می کند. مخالفه: N_d متری در هر سند، ذخیره سازی گران است.

کولپالی

کولپالی (Faysse و همکارانش، arXiv:2407.01449) الگوی کولبر را برای تصاویر اعمال می کند.

  • هر صفحه توسط PaliGemma (زبان ViT +) به پیوند های پیوند رمزگذاری شده است: N_p ویکتورها در هر صفحه.
  • هر سوال کاربر (متن) به ورق گذاری های سوال-توکن کدگذاری می شود: ویکتورهای N_q.
  • نمره = Σ_i max_j cos(q_i, p_j) ، یعنی MaxSim بر روی پرسش-ترجمه های متن و صفحه-تصاویر-پاتش.
  • صفحه هاي اولي رو با مجموعي نمره بازيابي کن

در زمان ادغام اسناد: هر صفحه را با PaliGemma قرار دهید، تمام پیوند ها را ذخیره کنید. در زمان جستجو: نشانه های جستجو را دربر بگیرید، MaxSim را با تمام صفحات ذخیره شده محاسبه کنید، صفحات top-k را بازگردانید.

مزایا: از پایان به پایان متن راگ را 20-40 درصد در اسناد غنی از بصری می کشد. هر پیچ وکتور طرح و محتوای محلی را ضبط می کند.

مخالفه: N_p پیچ ها × 4 بایت شناور × D-dim ویکتورها در هر صفحه = ذخیره سازی به سرعت رشد می کند. کاهش یافته توسط PQ / OPQ کوانتاسیون.

ColQwen2 و ColSmol

ColQwen2 (انلاین-تکنولوژی، 2024-2025) PaliGemma را با Qwen2-VL عوض می کند. کدرهای پایه بهتر، بازیافت بهتر.

ColSmol یک نوع کوچک تر برای استفاده محلی / کناره است. یک بازیافت کننده ColSmol با پارامتر ~ 1B بر روی GPU مصرف کننده اجرا می شود.

ویسرگ

VisRAG (Yu et al., arXiv:2410.10594) یک نوع متفاوت است: به جای MaxSim در پیچ ها، هر صفحه را به یک ویکتور واحد با یک VLM جمع آوری کنید و سپس دو کد را بازپس بگیرید. شاخص سازی سریعتر + ذخیره سازی کوچکتر، بازپرداخت ضعیف تر.

معامله با کیفیت در مقابل هزینه: ColPali برای کیفیت، VisRAG برای مقیاس.

M3DocRAG

M3DocRAG (Cho et al., arXiv:2411.04952) بازیافت چند مودالی را به استدلال چند صفحه چند سند گسترش می دهد. صفحات را در سراسر اسناد بازیافت می کند، یک زمینه چند صفحه ای برای VLM ایجاد می کند.

ViDoRe معیار

مرجع همراه ColPali. ارزیابی بازیافت اسناد بصری. وظایف شامل گزارش های مالی، مقالات علمی، اسناد اداری، سوابق پزشکی، دستورالعمل ها است. متریک: nDCG@5.

ColPali-v1 در ViDoRe در حدود 80٪ nDCG@5 امتیاز می دهد؛ متن-RAG در همان اسناد در حدود 50 تا 60٪ امتیاز می دهد.

خط لوله RAG از انتهای تا انتهای

برای یک RAG بینایی بومی:

  1. مصرف: PDF → تصاویر صفحه → کد PaliGemma → ذخیره تمام پیوند های پیوند.
  2. سوال: متن کاربر → گنجانده شدن رمز های سوال → MaxSim در برابر تمام صفحات فهرست شده → صفحات top-k.
  3. تولید: top-k صفحه تصاویر + سوال → VLM (Qwen2.5-VL یا کلاود) → پاسخ.

هیچ OCR در هیچ جایی. ارقام، نمودارها، فونت ها، طرح همه به جواب می رسند.

ریاضیات ذخیره سازی

یک گزارش مالی ۵۰ صفحه ای با ۷۲۹ تکه در هر صفحه و ۱۲۸ بعدی:

  • ColPali: 50 729 128 * 4 بایت = ~ 18 MB خام، ~ 4 MB پس از PQ.
  • متن-RAG: 50 قطعه 768-dim 4 بایت = ~ 150 kB.

ColPali در هر سند ذخیره سازی 30 برابر بیشتر است. در مقیاس OPQ / PQ آن را به ~ 5-10 برابر کاهش می دهد، معمولا قابل تحمل است.

وقتي که متن-RAG هنوز برنده ميشه

  • اسناد متن خالص بدون سیگنال طرح (مقالات ویکی، روزنامه های چت) متن ساده تر و ذخیره سازی ارزان تر است.
  • چند میلیون صفحه ای که ذخیره سازی بر هزینه ها غلبه می کند.
  • الزامات قانونی سخت که در کنار بازیافت متن OCR استخراج قابل است.

برای همه چیز دیگر در سال 2026 گزارش های مالی، مقالات علمی، قراردادهای حقوقی، سوابق پزشکی، اسناد UX RAG های بومی چشم برنده می شوند.

ازش استفاده کن

code/main.py:

  • کدگر پیچ بازی: یک "صفحه" (شبکه کوچک از متریزه های ویژگی) را به یک سری از پیوند های پیچ نقشه می زند.
  • نمره ساز MaxSim: نمره سبک ColBERT را بین مجموعه ای از سمبول های جستجو و مجموعه ی صفحه ی پیچ محاسبه می کند.
  • 5 صفحه بازي را فهرست ميکنه، 3 سوال رو اجرا ميکنه، با نمره هاي بالا مياد

-باده

این درس به ما کمک می کندoutputs/skill-vision-rag-designer.mdدر نظر گرفتن پروژه RAC، ColPali / ColQwen2 / VisRAG / text-RAG را انتخاب می کند و اندازه ذخیره سازی را اندازه می گیرد.

تمرینات

  1. گزارش سالانه 200 صفحه ای در 729 تکه در هر صفحه، 128-dim emb، 4 بایت شناور. ذخیره سازی خام و ذخیره سازی فشرده شده PQ (8x) را محاسبه کنید.
  1. ماکسسیم Σ_i max_j cos(q_i, p_j) این مقدار چه چیزی را ضبط می کند که یک شباهت متوسط ساده ندارد؟
  1. ColPali صفحات را به عنوان مجموعه های پیچ شاخص می کند. چه تغییری می کند اگر در عوض در سطح کلمه (مانند ColBERT) شاخص کنیم؟ معامله؟
  1. خط لوله پایان به پایان را برای یک کورپوس 1M صفحه با بودجه تاخیر 500ms در هر سوال طراحی کنید. 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.