فاز 12 · درس 23

آشنایی با ColPali و معماری RAG مبتنی بر تصویر اسناد

نوع
ساختنی
زمان
حدود 180 دقیقه
زبان‌ها
Python (stdlib, multi-vector indexer + MaxSim scorer)
پیش‌نیاز
فاز 11 (مهندسی LLM — مبانی RAG)، فاز 12 · درس 05 (LLaVA)
یک برگه سند چندستونی شامل نمودار و جدول که زیر یک لنز بزرگ‌نمایی شبکه‌ای از تکه‌های مربعی و نورانی را بازتاب می‌دهد
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم کلیدی
  4. مدل ColBERT (سال 2020)
  5. مدل ColPali
  6. مدل‌های ColQwen2 و ColSmol
  7. مدل VisRAG
  8. مدل M3DocRAG
  9. بنچ‌مارک ViDoRe
  10. پایپ‌لاین سرتاسری RAG
  11. محاسبات فضای ذخیره‌سازی
  12. شرایطی که text-RAG هنوز برنده است
  13. پیاده‌سازی عملی
  14. تحویل نهایی
  15. تمرین‌ها
  16. اصطلاحات کلیدی
  17. برای مطالعه‌ی بیشتر

بسیاری از توسعه‌دهندگان هنگام ساخت پایپ‌لاین‌های RAG سنتی روی اسناد فارسی و انگلیسی، با مشکل افت کیفیت ناشی از تبدیل فایل‌های PDF مواجه می‌شوند. ابزارهای OCR معمولاً نمودارها را نادیده می‌گیرند، سطر و ستون جداول را به هم می‌ریزند و ساختار بصری صفحه را کاملاً تخریب می‌کنند. این چالش در اسنادی مانند صورت‌های مالی، قراردادها و کاتالوگ‌ها بازدهی مدل نهایی را به شدت کاهش می‌دهد.

مدل ColPali با حذف کامل مرحله‌ی OCR، رویکرد متفاوتی را ارائه می‌دهد: نمایه‌سازی مستقیم تصاویر صفحات با مدل‌های بینایی-زبانی مانند PaliGemma و بازیابی دقیق آن‌ها با مکانیزم تعامل متأخر (Late Interaction). این شیوه تمام جزئیات ظاهری، چیدمان و تصاویر سند را حفظ می‌کند و دقت بازیابی را روی اسناد بصری به طور چشمگیری بالا می‌برد.

اگرچه مدل‌های پیشرفته‌ی این حوزه برای آموزش و پردازش سنگین به GPUهای قدرتمند نیاز دارند که دسترسی به آن‌ها معمولاً هزینه‌بر و چالش‌برانگیز است، اما مدل‌های سبک‌تر این خانواده مانند ColSmol امکان اجرا و آزمایش روی سخت‌افزارهای مصرفی و محلی را نیز فراهم می‌کنند.

در RAG سنتی، ابتدا فایل‌های PDF به متن تبدیل، سپس قطعه‌بندی (chunking) و در نهایت امبد می‌شوند تا در قالب بردار ذخیره گردند. در تک‌تک این مراحل، بخشی از سیگنال از دست می‌رود: ابزارهای OCR داده‌های نمودارها را جا می‌اندازند، قطعه‌بندی متن ردیف‌های جدول‌ها را می‌شکند و امبدینگ‌های متنی تصاویر را کاملاً نادیده می‌گیرند. مدل ColPali (فیس و همکاران، ژوئیه 2024) پرسش ساده‌تری مطرح کرد: اصلاً چرا متن را استخراج کنیم؟ تصویر صفحه را مستقیماً با PaliGemma امبد کنید، برای بازیابی از تعامل متأخر (late interaction) به سبک ColBERT بهره ببرید و تمام سیگنال‌های صفحه مثل چیدمان، تصاویر، فونت‌ها و قالب‌بندی سند را حفظ کنید. بنچ‌مارک‌های منتشرشده نشان می‌دهند که دقت سرتاسری این رویکرد در اسناد غنی از محتوای بصری، 20 تا 40 درصد بهتر از text-RAG است. سپس مدل‌های ColQwen2 ،ColSmol و VisRAG همین الگو را توسعه دادند. در این درس، تز RAG بر پایه‌ی تصویر (vision-native RAG) را بررسی می‌کنیم و یک نمایه‌ساز کوچک شبیه ColPali می‌سازیم.

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

  • توضیح تفاوت بین بازیابی با بای‌ان‌کودر (یک بردار به ازای هر سند) و بازیابی با تعامل متأخر (چندین بردار به ازای هر سند).
  • تشریح عملیات MaxSim در ColBERT و نحوه‌ی تعمیم آن در ColPali از توکن‌های متنی به تکه‌های تصویر (image patches).
  • ساخت یک نمایه‌ساز کوچک شبیه به ColPali: تبدیل صفحه ← امبدینگ تکه‌ها ← محاسبه‌ی MaxSim روی امبدینگ عبارت‌های پرسش ← استخراج k صفحه‌ی برتر.
  • مقایسه‌ی ترکیب ColPali + تولیدکننده‌ی Qwen2.5-VL در برابر text-RAG + GPT-4 برای سناریوی فاکتورها و گزارش‌های مالی.

صورت مسئله

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

پایپ‌لاین text-RAG:

  1. تبدیل PDF ← متن از طریق OCR یا pdftotext.
  2. تبدیل متن ← قطعات 300 تا 500 توکنی.
  3. تبدیل هر قطعه ← امبدینگ بای‌ان‌کودر (یک بردار).
  4. پرسش کاربر ← امبدینگ ← شباهت کسینوسی ← k قطعه‌ی برتر.
  5. ارسال قطعات + پرسش ← LLM.

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

راه‌حل ColPali: بی‌خیال OCR شوید و مستقیماً تصویر صفحه را امبد کنید. از تعامل متأخر به سبک ColBERT برای بازیابی استفاده کنید تا مدل بتواند هنگام پرسش، روی تکه‌های ریز و دقیق تصویر تمرکز کند.

مفاهیم کلیدی

مدل ColBERT (سال 2020)

روش ColBERT (خطاب و زاهریا، arXiv:2004.12832) روشی برای بازیابی متن است. به‌جای یک بردار برای کل سند، به ازای هر توکن یک بردار تولید می‌کند. هنگام پرسش:

  • توکن‌های پرسش، امبدینگ‌های اختصاصی خود را دریافت می‌کنند (بردارهای NqN_q).
  • توکن‌های سند امبدینگ می‌گیرند (بردارهای NdN_d که معمولاً کش می‌شوند).
  • امتیاز = مجموعِ بیشینه‌ی شباهت کسینوسی توکن‌های سند برای هر توکن پرسش: ∑imax⁡jcos⁡(qi,dj)\sum_i \max_j \cos(q_i, d_j).

این همان عملیات MaxSim است. هر توکن پرسش، بهترین توکن همتا در سند را «انتخاب» می‌کند و امتیاز نهایی حاصل جمع آن‌هاست.

مزایا: بازخوانی (recall) قوی و مدیریت معناشناسی در سطح کلمات. معایب: تولید NdN_d بردار به ازای هر سند که ذخیره‌سازی را بسیار پرهزینه می‌کند.

مدل ColPali

مدل ColPali (فیس و همکاران، arXiv:2407.01449) الگوی ColBERT را روی تصاویر پیاده می‌کند.

  • هر صفحه توسط PaliGemma (ترکیبی از ViT + مدل زبانی) به امبدینگ تکه‌ها تبدیل می‌شود: NpN_p بردار به ازای هر صفحه.
  • هر پرسش کاربر (متن) به امبدینگ‌های توکن‌های پرسش انکود می‌شود: NqN_q بردار.
  • امتیاز = ∑imax⁡jcos⁡(qi,pj)\sum_i \max_j \cos(q_i, p_j)؛ یعنی MaxSim روی توکن‌های متنی پرسش و تکه‌های تصویری صفحه.
  • بازیابی k صفحه‌ی برتر بر اساس امتیاز کل.

در مرحله‌ی ورود اسناد (ingestion): تمام صفحات را با PaliGemma امبد و امبدینگ همه‌ی تکه‌ها را ذخیره کنید. هنگام پرسش: توکن‌های پرسش را امبد کنید، MaxSim را در برابر تمام امبدینگ‌های ذخیره‌شده‌ی صفحات بسنجید و k صفحه‌ی برتر را برگردانید.

مزایا: در اسنادی با محتوای بصری غنی، از نظر دقت سرتاسری 20 تا 40 درصد text-RAG را شکست می‌دهد. بردار هر تکه، چیدمان و محتوای موضعی را ثبت می‌کند.

معایب: NpN_p تکه × اعداد اعشاری 4 بایتی × بردار با بُعد DD به ازای هر صفحه = حجم ذخیره‌سازی خیلی سریع رشد می‌کند. البته با کوانتیزه‌سازی PQ یا OPQ مهارشدنی است.

مدل‌های ColQwen2 و ColSmol

مدل ColQwen2 (توسعه‌یافته در illuin-tech، سال‌های 2024–2025) انکودر PaliGemma را با Qwen2-VL جایگزین می‌کند. انکودر پایه‌ی بهتر، بازیابی بهتری ارائه می‌دهد.

مدل ColSmol نسخه‌ای جمع‌وجورتر برای کاربردهای محلی و لبه (edge) است. یک بازیاب ColSmol با حدود 1B پارامتر به‌راحتی روی GPUهای مصرفی معمولی اجرا می‌شود.

مدل VisRAG

مدل VisRAG (یو و همکاران، arXiv:2410.10594) مسیر متفاوتی را می‌رود: به‌جای MaxSim روی تکه‌ها، با یک VLM تمام صفحه را درون یک بردار ادغام (pooling) می‌کند و سپس بازیابی بای‌ان‌کودر را انجام می‌دهد. نمایه‌سازی سریع‌تر + ذخیره‌سازی کمتر، اما بازخوانی ضعیف‌تر.

موازنه‌ی کیفیت در برابر هزینه: ColPali برای کیفیت، VisRAG برای مقیاس‌های بسیار بزرگ.

مدل M3DocRAG

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

بنچ‌مارک ViDoRe

بنچ‌مارک همراه ColPali برای ارزیابی بازیابی اسناد بصری (Visual Document Retrieval Evaluation). این بنچ‌مارک شامل گزارش‌های مالی، مقاله‌های علمی، اسناد اداری، پرونده‌های پزشکی و راهنماهاست. معیار ارزیابی: nDCG@5.

مدل ColPali-v1 در ViDoRe به امتیاز nDCG@5 حدود 80 درصد می‌رسد؛ درحالی‌که text-RAG روی همین اسناد امتیاز 50 تا 60 درصد کسب می‌کند.

پایپ‌لاین سرتاسری RAG

برای یک RAG بر پایه‌ی تصویر:

  1. ورود اسناد (Ingest): تبدیل PDF ← تصاویر صفحات ← انکود با PaliGemma ← ذخیره‌ی امبدینگ تمام تکه‌ها.
  2. پرسش (Query): متن کاربر ← امبدینگ توکن‌های پرسش ← محاسبه‌ی MaxSim در برابر تمام صفحات نمایه‌شده ← k صفحه‌ی برتر.
  3. تولید پاسخ (Generate): تصاویر k صفحه‌ی برتر + پرسش ← مدل VLM (مثل Qwen2.5-VL یا Claude) ← پاسخ نهایی.

هیچ نیازی به OCR در هیچ کجای مسیر نیست. شکل‌ها، نمودارها، فونت‌ها و چیدمان مستقیماً به پاسخ نهایی هدایت می‌شوند.

محاسبات فضای ذخیره‌سازی

یک گزارش مالی 50 صفحه‌ای با 729 تکه در هر صفحه و امبدینگ‌های 128 بُعدی:

  • در ColPali: ضرب 50 * 729 * 128 * 4 بایت = حدود 18 MB خام، و حدود 2.3 MB پس از فشرده‌سازی 8 برابری با PQ.
  • در Text-RAG: ضرب 50 قطعه * بُعد 768 * 4 بایت = حدود 150 kB.

حجم ذخیره‌سازی خام ColPali به ازای هر سند حدود 120 برابر بیشتر است. در مقیاس بزرگ، فشرده‌سازی 8 برابری با OPQ یا PQ این عدد را به حدود 15 برابر می‌رساند که معمولاً قابل‌تحمل است.

شرایطی که text-RAG هنوز برنده است

  • اسناد صرفاً متنی بدون هیچ سیگنال چیدمانی (مقاله‌های ویکی‌پدیا، لاگ‌های چت). در این موارد text-RAG ساده‌تر و از نظر ذخیره‌سازی ارزان‌تر است.
  • آرشیوهای چندمیلیون صفحه‌ای که در آن‌ها هزینه‌ی ذخیره‌سازی حرف اول را می‌زند.
  • الزامات قانونی سخت‌گیرانه‌ای که خواستار متن استخراج‌شده‌ی OCR در کنار بازیابی هستند.

برای بقیه‌ی اسناد در سال 2026 — از جمله گزارش‌های مالی، مقاله‌های علمی، قراردادهای حقوقی، پرونده‌های پزشکی و مستندات تجربه کاربری (UX) — سیستم‌های RAG بر پایه‌ی تصویر برنده‌اند.

تعامل دیرهنگامِ MAXSIMهر واژه بهترین وصلهٔ خود را می‌یابد
LATE-INTERACTION MAXSIMText-RAG collapses a page into one vector and loses charts and tables. ColPali keeps one vector per image patch and one per query term, then scores by MaxSim: each query term takes the maximum similarity over all page patches, and the page score is the sum of those maxima. A query about a chart can latch onto the exact patch that holds it, with no OCR step in between.بردارهای واژگان پرسمانبردارهای وصله‌های صفحهQ3revenuechartscore = sum over query terms of max patch similarity
سیستم‌های RAG متنی یک صفحه را در قالب یک بردار خلاصه می‌کنند و نمودارها و جدول‌ها را از دست می‌دهند. ColPali برای هر وصلهٔ تصویر و هر واژه از پرسمان یک بردار نگه می‌دارد و سپس با روش MaxSim امتیازدهی می‌کند: هر عبارت پرسمان بیشترین شباهت را از میان تمام وصله‌های صفحه انتخاب کرده و امتیاز نهایی صفحه برابر با مجموع این بیشینه‌هاست. به این ترتیب، پرسمانی دربارهٔ یک نمودار می‌تواند دقیقاً به همان وصلهٔ دربردارندهٔ آن متصل شود، بدون آنکه نیازی به مرحلهٔ OCR باشد.

پیاده‌سازی عملی

فایل code/main.py:

  • انکودر آزمایشی تکه‌ها: نگاشت یک «صفحه» (شبکه‌ی کوچکی از بردارهای ویژگی) به آرایه‌ای از امبدینگ تکه‌ها.
  • امتیازدهی MaxSim: محاسبه‌ی امتیاز به سبک ColBERT بین مجموعه‌ی امبدینگ‌های توکن پرسش و مجموعه‌ی تکه‌های صفحه.
  • نمایه‌سازی 5 صفحه‌ی آزمایشی، اجرای 3 پرسش و بازگرداندن k مورد برتر به‌همراه امتیازها.

تحویل نهایی

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

تمرین‌ها

  1. یک گزارش سالانه‌ی 200 صفحه‌ای با 729 تکه در هر صفحه، امبدینگ‌های 128 بُعدی و داده‌های اعشاری 4 بایتی داریم. حجم ذخیره‌سازی خام و حجم فشرده‌شده با PQ (با ضریب 8x) را محاسبه کنید.

  2. رابطه‌ی MaxSim به‌صورت ∑imax⁡jcos⁡(qi,pj)\sum_i \max_j \cos(q_i, p_j) است. این مجموع چه چیزی را ثبت می‌کند که یک میانگین ساده‌ی شباهت از ثبت آن ناتوان است؟

  3. مدل ColPali صفحات را به‌شکل مجموعه‌ای از تکه‌ها نمایه می‌کند. اگر به‌جای آن، نمایه را در سطح کلمه بسازیم (همان‌طور که ColBERT انجام می‌دهد)، چه چیزی تغییر می‌کند؟ نقاط قوت و ضعف آن چیست؟

  4. پایپ‌لاین سرتاسری را برای یک مجموعه‌ی 1 میلیون صفحه‌ای با سقف تاخیر (latency budget) معادل 500ms برای هر پرسش طراحی کنید. بین ColQwen2 و VisRAG یکی را انتخاب کرده و دلیل آن را توجیه کنید.

  5. مقاله‌ی M3DocRAG (arXiv:2411.04952) را بخوانید. الگوی اتنشن چندصفحه‌ای را شرح دهید و بگویید چه تفاوتی با بازیابی تک‌صفحه‌ای ColPali دارد.

اصطلاحات کلیدی

اصطلاح در گفت‌وگوها تعریف دقیق مهندسی
تعامل متأخر (Late interaction) «به سبک ColBERT» بازیابی با استفاده از امبدینگ به ازای هر توکن یا هر تکه + MaxSim، نه یک بردار برای سند
بیشینه‌ی شباهت (MaxSim) «بیشینه‌ی روی تکه‌ها» انتخاب شبیه‌ترین توکن سند به ازای هر توکن پرسش، و جمع بستن مقادیر در طول پرسش
بای‌ان‌کودر (Bi-encoder) «تک‌برداری» یک بردار به ازای هر سند؛ سریع‌تر است اما جزئیات دقیق سند از دست می‌رود
چندبرداری (Multi-vector) «چندین بردار برای هر سند» ذخیره‌ی NpN_p بردار به ازای هر سند / صفحه؛ هزینه‌ی ذخیره‌سازی بالاتر می‌رود اما بازخوانی بهتر می‌شود
امبدینگ تکه‌ها (Patch embedding) «ویژگی صفحه» یک بردار به ازای هر تکه‌ی تصویر خروجی از انکودر VLM، که برای هر صفحه کش می‌شود
وی‌دوره (ViDoRe) «بنچ‌مارک اسناد بصری» مجموعه‌ی بنچ‌مارک ColPali برای ارزیابی بازیابی اسناد بصری
کوانتیزه‌سازی با PQ (PQ quantization) «کوانتیزه‌سازی ضربی» فشرده‌سازی بردارها که با کاهش حدوداً 8 برابری حجم داده، شباهت بردارها را حفظ می‌کند

برای مطالعه‌ی بیشتر

سؤالات متداول

تفاوت اصلی ColPali با سیستم‌های Text-RAG معمولی چیست؟

در سیستم‌های متنی ابتدا PDF به متن استخراج‌شده از طریق OCR تبدیل و قطعه‌بندی می‌شود؛ اما ColPali مرحله‌ی OCR را حذف کرده و مستقیماً تصویر صفحات را به کمک انکودر بینایی به بردارهای تکه‌ای تبدیل و بازیابی می‌کند.

عملیات MaxSim در بازیابی به سبک ColBERT و ColPali چگونه کار می‌کند؟

در MaxSim به ازای هر توکن پرسش، بالاترین امتیاز شباهت کسینوسی در میان تمام تکه‌ها یا توکن‌های سند پیدا می‌شود و در نهایت مجموع این بیشینه‌ها امتیاز نهایی صفحه را می‌سازد.

چالش اصلی پیاده‌سازی ColPali چیست و چگونه حل می‌شود؟

چالش اصلی، حجم بسیار بالای فضای ذخیره‌سازی به دلیل ذخیره‌ی بردار برای تک‌تک تکه‌های تصویر است؛ این مشکل با تکنیک‌های کوانتیزه‌سازی برداری مانند PQ یا OPQ تا حدود 8 برابر فشرده و مهار می‌شود.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.