تصور کنید با سندی روبرو شدهاید که سرشار از جداول پیچیده، فرمولهای ریاضی یا چیدمانهای نامتقارن است؛ در چنین شرایطی، اکثر سیستمهای بازیابی داده شکست میخورند. دلیل این شکست آن است که خطلوله های سنتی RAG بر پاکسازی HTML یا PDFها به متن خام تکیه دارند. PixelRAG این مشکل را با تبدیل هر سند به مجموعهای از تصاویر حل میکند و تضمین میکند که ساختار بصری در طول فرآیند بازیابی دستنخورده باقی بماند.
بسیاری از توسعهدهندگان هوش مصنوعی اکنون درگیر نبردی بیپایان با استراتژیهای «تکهبندی» (Chunking) هستند. آنها سعی میکنند متن را به بخشهای معناداری تقسیم کنند، اما این مرزها اغلب دقیقاً از وسط نقاط کلیدی دادهها رد میشوند. این روش بهشدت شکننده است زیرا هر وبسایت یا فایل PDF فرمت متفاوتی دارد و تقریباً برای هر منبع جدید، نیاز به نوشتن کدهای واسط (Glue Code) برای تجزیه و تحلیل سفارشی است.
PixelRAG با تکیه بر گذار به سمت مدلهای ذاتاً چندوجهی (Multimodal)، مرحله استخراج متن را بهطور کامل حذف میکند. به جای خواندن کد یک صفحه، آن را بهصورت بصری رندر میکند؛ درست مانند انسانی که به یک سند نگاه میکند. این رویکرد به سیستم اجازه میدهد تا یک نمودار یا لیست فرمتبندی شده را به عنوان یک واحد منسجم از اطلاعات «ببیند» و درک کند.
همانطور که در تحلیلهای پیشین ما دربارهی چالشهای استخراج داده از PDFها اشاره کردیم، فقدان درک ساختاری همواره نقطه ضعف مدلهای متنی بوده است. PixelRAG این مشکل را با یک تغییر بنیادین در لایه ورودی حل میکند.
تولید بازیابیافزا (RAG) — شبیه دانشآموزی که قبل از جواب دادن، اول کتاب درسی را باز میکند و از آن نقل میآورد — در این معماری جدید، به جای متن از پیکسلها استفاده میکند. این رویکرد در واقع تکامل یافتهی همان ایدهی اتصال مدل به دانش خارجی است که در پژوهشهای پیشین دیدیم چگونه ریسک توهمات LLM را کاهش میدهد. طبق مستندات فنی، فرآیند با رندر کردن صفحات وب و PDFها به تصاویر با وضوح بالا آغاز میشود. برای محتوای وب، این سیستم از Playwright با بکاِند Chromium استفاده میکند.
برای تضمین رندرینگ یکسان در محیطهای مختلف، آرگومانهای خاصی برای حالت بدون سر (Headless) اعمال میشود: استفاده از --no-sandbox برای امنیت، --disable-dev-shm-usage برای مدیریت حافظه، --hide-scrollbars برای حذف نویز بصری، --disable-gpu و --force-color-profile=srgb برای یکسانسازی رنگها. همچنین گزینه --font-render-hinting=none برای استانداردسازی ظاهر حروف و گلیفها فعال میگردد.
برای مدیریت مقیاس، سیستم تصاویر را به کاشیهای همپوشان ۱۰۲۴ در ۱۰۲۴ پیکسل تقسیم میکند. همپوشانی ۱۲۸ پیکسلی عمودی یک انتخاب طراحی حیاتی است؛ زیرا از نصفه ماندن جملات یا ردیفهای جدول در دو بردار جداگانه جلوگیری میکند، چیزی که نویسندگان آن را دلیل اصلی کاهش نرخ بازیابی (Recall) در خطلولههای مبتنی بر اسکرینشات میدانند. همچنین سیستم یک حداقل ارتفاع کاشی (min_tile_height) ۲۰۰ پیکسلی را اعمال میکند و تعداد هر سند را به حداکثر ۱۲ کاشی محدود میکند تا از تورم ایندکس جلوگیری شود.
به گزارش Marktechpost، برای پاکسازی رندر و اطمینان از کیفیت بصری، مداخلات جاوااسکریپتی و CSS زیر اعمال میشود:
- اسکرول خودکار: یک اسکریپت JS سفارشی صفحه را در بازههای ۸۰۰ پیکسلی (تا سقف ۴۰,۰۰۰ پیکسل) با تایمری ۴۰ میلیثانیهای اسکرول میکند تا محتواهای Lazy-loading فعال شوند.
- تختسازی (Flattening): عناصر ثابت یا چسبنده (Sticky) مانند هدرها، بنرهای کوکی و کلاسهای
.cc-bannerحذف یا به حالت Absolute در میآیند تا محتوای اصلی را نپوشانند. - پاکسازی CSS: انیمیشنها و Transitionها غیرفعال میشوند، رفتار اسکرول روی حالت auto قرار میگیرد و آیفریمها (مانند ویدیوهای یوتیوب) برای کاهش نویز بصری پنهان میشوند.
برای بهینهسازی ایندکس، یک فیلتر «اطلاعاتمحور» تعبیه شده است. این منطق کاشیهای خالی یا تکرنگ را رد میکند؛ به این صورت که اگر انحراف معیار پیکسلهای خاکستری تصویر کمتر از آستانه blank_std_threshold یعنی ۶.۰ باشد، کاشی حذف میشود. همچنین از یک هش ۶۴ بیتی (aHash) برای شناسایی و حذف کاشیهای تقریباً تکراری استفاده میشود؛ هر کاشی که فاصله همینگ (Hamming distance) آن ۴ یا کمتر باشد رد میشود تا هدر و فوترهای تکراری حذف شوند.
مسیرهای رندرینگ برای فرمتهای مختلف به شرح زیر طراحی شده است:
- صفحات وب: استفاده از User-Agent خاص (
PixelRAG-Tutorial/1.0) و زمان انتظار ۶۰,۰۰۰ میلیثانیهای برای ناوبری. سیستم منتظر وضعیتdomcontentloadedمیماند و سپس ۱۲ ثانیه برایnetworkidleصبر میکند تا از بارگذاری کامل صفحه اطمینان یابد. - فایلهای PDF: بهرهگیری از کتابخانه PyMuPDF (fitz). صفحات به صورت pixmap با DPI پیشفرض ۱۵۰ رندر شده و سپس به کاشیها تقسیم میشوند.
- جایگزین متنی (Fallback): در صورت شکست مرورگر، یک رندرر جایگزین با استفاده از PIL متن ساده را روی یک بوم سفید بلند ترسیم میکند. در این حالت از فونتهای DejaVu Sans یا Liberation Sans با عنوان ۳۰ پیکسلی و متن بدنه ۲۰ پیکسلی استفاده شده و خطوط در حدود ۹۰ کاراکتر شکسته میشوند.
- دادههای سنتتیک: سیستم میتواند PDFهای داخلی مصنوعی تولید کند تا خطلوله را تست کند؛ این اسناد حاوی یادداشتهایی درباره سیاستهای کاشیبندی و منطق ضرب داخلی FAISS هستند.
در لایه بردار معنایی (Embedding) — که مثل کارت معرفی عددی برای هر واژه است و میگوید این کلمه همسایه چه کلمات دیگری است — سه مسیر بسته به سختافزار و دقت مورد نیاز وجود دارد:
۱. SigLIP/CLIP: این رمزکنندههای دوگانه (مانند google/siglip-base-patch16-224 یا openai/clip-vit-base-patch32) روشی سریع و سبک برای نگاشت تصاویر و متن به یک فضای برداری مشترک ارائه میدهند. با این حال، چون روی تصاویر طبیعی با کپشنهای کوتاه (۶۴-۷۷ توکن) آموزش دیدهاند، بیشتر برای درک کلی «مفهوم» و چیدمان مناسباند تا جزئیات متنی ریز.
۲. Qwen3-VL-Embedding-2B: این بکاِند با عملکرد بالا، متن و تصاویر را از طریق میانگینگیری (mean-pooling) از آخرین حالت پنهان یک مدل بینایی-زبانی (VLM) جاسازی میکند. این مدل تصاویر را با پرومپت «این اسکرینشات سند را برای بازیابی توصیف کن» و پرسوجوها را با فرمت «Query: {text}» پردازش میکند. این مدل متنهای متراکم در اسکرینشاتها را بهمراتب بهتر از مدلهای CLIP پردازش میکند اما به حدود ۸ گیگابایت VRAM در حالت fp16 نیاز دارد.
۳. آداپتور باقیمانده (Residual Adapter): برای پر کردن شکاف در سختافزارهای ضعیفتر، خطلوله میتواند یک MLP دو لایه سبک با تابع فعالساز GELU آموزش دهد. این آداپتور از یادگیری کنتراستی (ضرر InfoNCE) برای اصلاح بردارهای منجمد شده استفاده میکند تا همراستایی بین پرسوجوها و کاشیهای بصری را بدون نیاز به تنظیم دقیق (Fine-tune) مدل عظیم VLM بهبود ببخشد.
سیستم PixelRAG تنها به بردارهای متراکم تکیه نمیکند. یک سیستم امتیازدهی BM25 مبتنی بر نویسهخوانی نوری (OCR) نیز برای مواردی که تطبیق دقیق کلمات کلیدی قابلاعتمادتر از شباهت معنایی است، اضافه شده است. این ترکیببندی پاسخ به این چالش است که چرا جستوجوی برداری خالص در مواجهه با دادههای صنعتی و تخصصی شکست میخورد. با اجرای Tesseract OCR روی کاشیهای تصویر (با استفاده از PSM 6 برای بلوکهای متنی پراکنده)، یک «سایدکار» متنی ایجاد میشود که ترکیبی از متن استخراج شده و عنوان سند است. متن OCR با استفاده از regex برای حذف فضاهای خالی اضافی پاکسازی شده و تا ۴,۰۰۰ کاراکتر کوتاه میشود.
این دو جریان — بردارهای بصری متراکم و متن پراکنده OCR — با استفاده از ترکیب رتبه متقابل (RRF) ادغام میشوند. فرمول امتیازدهی به این صورت است: score = dense_weight / (rrf_k + rank + 1) + sparse_weight / (rrf_k + rank + 1)، که در آن rrf_k معمولاً ۶۰ در نظر گرفته میشود. این تضمین میکند که اگر یک کلمه کلیدی خاص در OCR پیدا شود اما بردار بصری کمی خطا داشته باشد، باز هم سند بازیابی شود.
برای ذخیرهسازی و جستوجو، از ایندکس FAISS استفاده میشود. استراتژی ایندکسگذاری بر اساس اندازه مجموعه داده تغییر میکند:
- ایندکس Flat: برای مجموعههای زیر آستانه
ivf_threshold(۲,۰۰۰ بردار)، ازIndexFlatIPبرای جستوجوی دقیق و جامع ضرب داخلی استفاده میشود. - ایندکس IVF: برای دادههای حجیمتر، از
IndexIVFFlatبرای دستیابی به زمان جستوجوی زیر-خطی استفاده میشود. تعداد خوشهها (nlist) با فرمولmax(4, min(4096, int(4 * math.sqrt(n))))محاسبه شده وnprobeبهطور پیشفرض روی ۱۶ تنظیم شده است.
چون بردارها L2-نرمال شدهاند، جستوجوی ضرب داخلی عملاً همان شباهت کسینوسی (Cosine Similarity) را محاسبه میکند. در نهایت، نتایج سطح کاشی با روش max-pooling به سطح سند ارتقا مییابند؛ یعنی اگر یک سند ۲۰ کاشی داشته باشد اما تنها یکی از آنها بسیار مرتبط (relevant) باشد، همان یک کاشی قوی میتواند باعث بازیابی کل صفحه طولانی شود. خروجی نهایی، تعداد n_docs (به طور پیشفرض ۵) مورد برتر را بر اساس امتیاز ادغام شده برمیگرداند.
![]()
طبق راهنمای فنی منتشر شده توسط Marktechpost، کل سیستم از طریق سرویس FastAPI در دسترس است. این امر به کاربران اجازه میدهد پرسوجوها را از طریق یک درخواست POST به یک ترد پسزمینه Uvicorn ارسال کنند. سرور شامل یک نقطه پایانی /health برای نظارت بر تعداد کاشیها و اسناد در ایندکس و یک نقطه پایانی /search است که نتایج top-k را شامل مختصات Y کاشی (y0, y1)، شماره توالی و قطعات OCR برمیگرداند.
برای تولید پاسخ نهایی، سیستم بهطور اختیاری قویترین کاشیهای شواهدی را به یک VLM مانند Qwen2.5-VL-3B-Instruct ارسال میکند. این VLM با دستور «فقط با استفاده از آنچه قابل مشاهده است پاسخ بده و اگر پاسخ نمایش داده نشده است، این را ذکر کن» هدایت میشود. چون بازیابی به جای متن، پیکسلها را برمیگرداند، تولید پاسخ بر اساس شواهد بصری واقعی استوار است و به مدل اجازه میدهد به سوالاتی درباره چیدمان یا عناصر بصری پاسخ دهد که یک مدل متنی-محض هرگز متوجه آنها نمیشد.
در بنچمارکهای ارزیابی (مانند Recall@1, Recall@3, Recall@5 و Mean Reciprocal Rank یا MRR)، این سیستم روی پرسوجوهای پیچیده سنجیده شده است. نمونههایی از این پرسوجوها عبارتند از:
- «گیاهان چگونه نور خورشید را به انرژی شیمیایی تبدیل میکنند» (فتوسنتز)
- «معماری multi-head self-attention» (ترنسفورمر)
- «قلمرو پایتخت هند قلعه سرخ» (دهلی)
- «جستوجوی نزدیکترین همسایه تقریبی روی بردارها» (پایگاه داده برداری)
در طول آزمایشها، نویسندگان چندین مرحله تحلیل را اجرا کردند:
- ارزیابی خط پایه: تست عملکرد مدل دو-رمزکننده (Dual-encoder) ساده.
- مطالعه حذف (Ablation Study): غیرفعال کردن مؤلفه ترکیبی OCR/BM25 برای اندازهگیری سهم دقیق بازیابی متن پراکنده در MRR کلی.
- آموزش آداپتور: آموزش سر باقیمانده طی ۱۲ دوره (Epoch) با بهینهساز AdamW (نرخ یادگیری 1e-4) و اندازه دسته ۲۴. این فرآیند از یک
logit_scaleکه در ابتدا روی ۲.۹۹۶ تنظیم شده است استفاده میکند. سیستم با نمونهبرداری از بازههای تصادفی ۸ تا ۱۴ کلمهای از متن OCR، پرسوجوهای مصنوعی (Pseudo-queries) تولید میکند تا جفتهای آموزشی بسازد و مطمئن شود آداپتور یاد میگیرد قطعات متنی خاص را به کاشیهای تصویری مربوطه مرتبط کند.
این رویکرد بصری، فرض بنیادین RAG را تغییر میدهد: پیچیدگی از مرحله «پاکسازی و تجزیه متن» به مرحله «رندرینگ و جاسازی برداری» منتقل شده است. با این کار، یک مسیر کد واحد ایجاد میشود که برای HTML، PDFها، فکسهای اسکن شده و داشبوردها بهطور یکسان عمل میکند.
برای توسعهدهندگان، این یعنی پایان نوشتن رگکسهای پیچیده برای نسخههای مختلف PDF یا کلنجار رفتن با تگهای نامرتب HTML. در اینجا «سند» صرفاً مجموعهای از پیکسلها است و بازیابی، یک جستوجوی شباهت در فضای چندوجهی است.
اگر در حال ساخت هوش مصنوعی هستید که نیاز به تحلیل دفترچههای راهنمای فنی، صورتهای مالی با جداول پیچیده یا داشبوردهای بصری متراکم دارد، این معماری یک جایگزین viable برای تجزیه متنی سنتی است. میتوانید با پیادهسازی لایه رندرینگ و آزمایش با بکاِند Qwen3-VL برای حداکثر دقت شروع کنید.
گام بعدی شما
- اگر با اسناد دارای جداول پیچیده سرورکارید، لایه رندرینگ مبتنی بر Playwright را جایگزین پارسرهای متنی کنید.
- برای دقت حداکثری در بازیابی، از بکاِند Qwen3-VL به جای CLIP استفاده کنید.
- ترکیب RRF را برای ادغام نتایج OCR و بردارهای بصری پیادهسازی کنید تا هیچ کلمه کلیدی حیاتی را از دست ندهید.
اما تأثیر این روش بر هزینههای پردازش گرافیکی در مقیاس میلیونی چه خواهد بود؟ پاسخ در تحلیل ما درباره بهینهسازی استنتاج در مدلهای VLM نهفته است.




گفتگو