EmbeddingGemma 2: جستجوی عکس، صدا و ویدیو با یه مدل کوچیک
خلاصهٔ کاملتر
گوگل EmbeddingGemma 2 رو معرفی کرده؛ یه مدل امبدینگ (یعنی مدلی که معنی ورودی رو به یه لیست عدد تبدیل میکنه تا ورودیهای هممعنی عددهای نزدیک به هم بگیرن) که متن، کد، عکس، ویدیو و صدا رو تو یه فضای برداری مشترک میذاره. این مقاله میگه مشکل اصلی سیستمهای RAG (یعنی سیستمهایی که قبل از جواب دادن، اطلاعات مرتبط رو جستجو میکنن) اینه که فقط متن رو میگردن و عکس و صدا و ویدیو عملاً براشون نامرئیه.
قبلاً دو راه بود. یکی اینکه همهچی رو اول متن کنی: کپشن برای عکس، ترنسکریپت برای صدا. ولی اینجوری سه تا مدل رو پشت هم میبندی و هرچی کپشنساز جا بندازه، دیگه پیدا نمیشه. خود گوگل نشون داده امبدینگ مستقیم صدا امتیاز 73.99 گرفته، در حالی که امبدینگ ترنسکریپتش 70.40 بوده. راه دوم مدلهایی مثل CLIP و ImageBind و ColPali بودن که هر کدوم محدودیت خودشون رو داشتن.
ساختار مدل اینجوریه: یه بکبون متنی 270 میلیون پارامتری بر پایه Gemma، بهعلاوه یه انکودر تصویر 170 میلیونی و یه انکودر صدای 300 میلیونی که فقط وقتی لازمشون داری لود میشن. این انکودرها عکس و صدا رو به توکن تبدیل میکنن و این توکنها کنار توکنهای متن میشینن. هر عکس 280 توکن، هر فریم ویدیو 140 توکن و هر ثانیه صدا حدود 25 توکن خرج داره. با کانتکست 8,192 توکنی، یه ورودی میتونه حدود 29 عکس یا نزدیک پنج دقیقه و نیم صدا داشته باشه. آموزش هم با contrastive learning انجام شده، یعنی جفتهای مرتبط مثل عکس و کپشنش به هم نزدیک میشن و بقیه از هم دور.
خروجی 768 بعدیه، ولی به لطف Matryoshka representation learning (یعنی مدل جوری آموزش دیده که تیکه اول بردار هم بهتنهایی قابل استفاده باشه) میشه اونو به 512، 256 یا 128 بعد کوتاه کرد. تو تست روی 1,000 عکس، با بُعد کامل 86 درصد مواقع عکس درست اول اومده، با 256 بعد 84 درصد و با 128 بعد 75 درصد. توصیه نویسنده اینه که کوتاهکردن رو روی دیتای خودت تست کنی، چون برای مدالیتههای مختلف فرق داره.
کل پایپلاین تو یه Colab رایگان با GPU مدل T4 حدود 15 دقیقه طول میکشه و از sentence-transformers استفاده میکنه. دو تا نکته عملی هم داره: پکیج ویدیو torchcodec رو خودش نصب نمیکنه و باید دستی اضافهش کنی، و اجرای مدل با float16 بهجای خطا، امبدینگهای NaN یا خراب میده. float32 امنه و روی GPUهای جدیدتر bfloat16 هم درست کار میکنه.
طبق تستهای مقاله، جستجوی عکس تو 97 درصد مواقع جواب درست رو بین پنج نتیجه اول آورده و کوئری به بیش از 100 زبان جواب میده. جستجوی صفحههای PDF بدون OCR و پیدا کردن کلیپ پنجثانیهای از ویدیو هم خوب کار کرده. ولی صدا نقطه ضعفه: جستجوی گفتاری خوبه، اما صداهای محیطی مثل پارس سگ یا بارون فقط 24 درصد مواقع درست اول اومدن.
نکات کلیدی:
- بکبون متنی 270M پارامتر، انکودر تصویر 170M و انکودر صدا 300M؛ کل مدل زیر یک میلیارد پارامتر
- خروجی 768 بعدی که با Matryoshka تا 128 بعد کوتاه میشه (حدود شش برابر فضای کمتر)
- دقت رتبه اول در جستجوی عکس: 86 درصد با بعد کامل، 84 درصد با 256 و 75 درصد با 128 بعد
- جستجوی صداهای محیطی فقط 24 درصد دقت رتبه اول داشته و مدل بیشتر برای گفتار تنظیم شده
- float16 خروجی NaN میده؛ از float32 یا bfloat16 استفاده کنید




