قبل از صحبت در مورد «EmbeddingGemma» شاید بهتر باشه یه مقدار در مورد تعاریف کلی صحبت کنیم.
فکر کنید وارد یه کتابخونه خیلی خیلی بزرگ شدید. اینقدر بزرگ که میلیونها کتاب داره. شما دنبال یه کتاب با یه موضوع خاص هستید، مثلا یه کتاب در مورد «سیاره سرخ». اگه بخواید دونه دونه کتابها رو بگردید، احتمالا تا آخر عمرتون هم پیداش نمیکنید. حالا اگه یه کتابدار فوقالعاده باهوش اونجا باشه که نه تنها اسم کتابها، بلکه محتوای دقیق هر کدوم رو بدونه چی؟ شما ازش میپرسید «کتاب در مورد سیاره سرخ میخوام» و اون فورا چندتا کتاب که دقیقا به موضوع شما مرتبطه رو براتون میاره. حتی اگه اسم «مریخ» رو هم نیاورده باشید، اون کتابدار میدونه که منظور شما همون مریخه.
کاری که EmbeddingGemma میکنه، یه چیزی شبیه همون کتابدار فوق هوشمنده. اون میاد متنها، جملهها و کلمههای ما رو میخونه و برای هر کدوم یه کد عددی منحصر به فرد درست میکنه. این کدها مثل یه آدرس دقیق برای معنی اون متن عمل میکنن. به این کدهای عددی میگیم «امبدینگ» (Embedding). حالا هرچی این کدها دقیقتر باشن، یعنی اون ابزار، زبان و پیچیدگیهاش رو بهتر فهمیده. این مقدمه رو داشته باشید تا بریم سراغ جزئیات بیشتر.
امبدینگ جما (EmbeddingGemma) دقیقا چیه و از کجا پیداش شد؟
خب، بریم سر اصل مطلب. EmbeddingGemma یه مدل امبدینگ متنباز (Open Model) جدیده که شرکت گوگل ساخته. «متنباز یا اوپنسورس» یعنی چی؟ یعنی متخصصها و برنامهنویسها میتونن به کدهای اصلیش دسترسی داشته باشن و ازش توی پروژههای خودشون استفاده کنن. این مدل یه ویژگی خیلی مهم داره: نسبت به اندازهاش، عملکرد فوقالعادهای از خودش نشون داده.
این مدل مخصوصا برای هوش مصنوعی روی دستگاه یا «On-Device AI» طراحی شده. این یعنی چی؟ یعنی برای کار کردن نیازی نداره حتما به یه سرور غولپیکر تو اون سر دنیا وصل بشه. میتونه مستقیم روی سختافزار دستگاه خودتون، مثل موبایل، لپتاپ یا کامپیوتر شخصی، اجرا بشه. این موضوع دوتا مزیت بزرگ داره:
- حفظ حریم خصوصی: چون اطلاعات شما برای پردازش به جای دیگهای فرستاده نمیشه و همه چیز روی دستگاه خودتون اتفاق میفته، دادههای حساس شما امن باقی میمونه.
- کارکرد آفلاین: حتی اگه به اینترنت وصل نباشید، این مدل کارش رو انجام میده.
EmbeddingGemma با یه طراحی خیلی بهینه ساخته شده و حدود ۳۰۸ میلیون پارامتر داره. پارامترها رو مثل دستگیرهها و دکمههای تنظیم یه دستگاه خیلی پیچیده در نظر بگیرید. هرچی تعداد این پارامترها بیشتر باشه، مدل میتونه چیزهای پیچیدهتری یاد بگیره، ولی از اون طرف سنگینتر هم میشه. ۳۰۸ میلیون برای یه مدل امبدینگ، اندازه خیلی خوب و جمعوجوریه که باعث میشه کممصرف باشه و منابع زیادی از دستگاه شما نگیره.
خلاصه بخوایم بگیم، کار اصلی EmbeddingGemma اینه که متن (جمله، پاراگراف یا یه سند کامل) رو میگیره و اون رو به یه «بردار عددی» یا همون وکتور تبدیل میکنه. این وکتور یه لیست طولانی از اعداده که معنی اون متن رو توی یه فضای چندبعدی نشون میده. هرچی امبدینگها بهتر باشن، یعنی درک مدل از زبان، با همه ظرافتها و پیچیدگیهاش، بهتر بوده.
این کدهای عددی (امبدینگها) چطوری به ما کمک میکنن؟ آشنایی با تکنیک RAG
شاید بپرسید خب این همه عدد و وکتور به چه دردی میخوره؟ یکی از مهمترین کاربردهای این امبدینگها، توی یه تکنیک خیلی باحال به اسم RAG (Retrieval Augmented Generation) یا «تولید مبتنی بر بازیابی اطلاعات» هست. اسمش سخته، ولی کارکردش رو الان با یه مثال ساده توضیح میدم.
فرض کنید شما یه ربات چت دارید و ازش یه سوال تخصصی میپرسید. مثلا: «کفپوش چوبی خونهام آسیب دیده، باید با کی تماس بگیرم؟». یه مدل زبانی عادی شاید یه جواب کلی بده. ولی با تکنیک RAG، اتفاق دیگهای میافته. این فرآیند دو مرحله اصلی داره:
- مرحله بازیابی (Retrieval): اول از همه، سیستم باید اطلاعات مرتبط با سوال شما رو پیدا کنه. اینجا دقیقا همون جاییه که EmbeddingGemma وارد عمل میشه. سیستم میاد سوال شما («کفپوش چوبی آسیب دیده») رو با استفاده از EmbeddingGemma به یه وکتور عددی تبدیل میکنه. بعد، این وکتور رو با وکتورهای تمام سندها و اطلاعاتی که از قبل توی سیستم ذخیره شده (مثلا دفترچه تلفن، لیست خدمات ساختمانی و…) مقایسه میکنه. سیستم با محاسبه شباهت بین این وکتورها، مرتبطترین متنها رو پیدا میکنه. مثلا متنی که توش کلمه «نجار» و «تعمیر کفپوش» هست، بیشترین شباهت رو به وکتور سوال شما خواهد داشت.
- مرحله تولید (Generation): حالا که مرتبطترین اطلاعات (مثلا شماره تلفن نجار) پیدا شد، سیستم این اطلاعات رو به همراه سوال اصلی شما به یه مدل تولیدکننده متن، مثل مدل Gemma 3، میده. مدل تولیدکننده با دیدن این اطلاعات، یه جواب دقیق و مرتبط به شما میده: «برای کفپوش آسیب دیده، بهتره با شماره نجار تماس بگیرید».
کلید موفقیت این سیستم، کیفیت مرحله اول یعنی بازیابیه. اگه امبدینگها ضعیف باشن، سیستم سندهای بیربطی رو پیدا میکنه و در نتیجه، جوابی که تولید میشه یا اشتباهه یا کاملا بیمعنی. اینجاست که عملکرد بالای EmbeddingGemma خودش رو نشون میده و اون نمایش عددی باکیفیتی که برای ساخت اپلیکیشنهای دقیق و قابل اعتماد روی دستگاه لازمه رو فراهم میکنه.
مشخصات فنی و معماری EmbeddingGemma: زیر капот چی میگذره؟
حالا که فهمیدیم این مدل چیکار میکنه، بیاید یکم فنیتر بهش نگاه کنیم و ببینیم ساختارش چطوریه. مثل این میمونه که در کاپوت یه ماشین رو باز کنیم و قطعات مختلفش رو بررسی کنیم.
اندازه و ساختار پارامترها
همونطور که گفتیم، این مدل ۳۰۸ میلیون پارامتر داره. این عدد خودش به دو بخش تقسیم میشه:
- حدود ۱۰۰ میلیون پارامتر مدل
- حدود ۲۰۰ میلیون پارامتر امبدینگ
این طراحی مهندسی شده تا هم عملکرد بالایی داشته باشه و هم حداقل منابع ممکن رو مصرف کنه. میشه اینطور تصورش کرد که ۱۰۰ میلیون پارامتر، مثل مغز متفکر مدله که وظیفه پردازش رو به عهده داره و ۲۰۰ میلیون پارامتر دیگه مثل یه دیکشنری عظیم عددی عمل میکنه که معنی کلمات رو تو خودش جا داده.
معماری مبتنی بر Gemma 3 با یک تغییر مهم
پایه و اساس EmbeddingGemma، معماری مدل زبانی Gemma 3 هست. ولی یه تغییر کلیدی توش ایجاد شده. مدلهای زبانی مثل ChatGPT معمولا از مکانیزمی به اسم «توجه سببی» یا Causal Attention استفاده میکنن. این یعنی وقتی دارن یه کلمه رو پردازش میکنن، فقط به کلمههای قبل از خودش نگاه میکنن (مثل وقتی که ما داریم یه جمله رو مینویسیم).
اما EmbeddingGemma از «توجه دوطرفه» (Bi-directional Attention) استفاده میکنه. این یعنی هر کلمه در جمله میتونه هم به کلمههای قبل از خودش و هم به کلمههای بعد از خودش توجه کنه. این کار باعث میشه مدل درک کاملتری از کل جمله و مفهوم کلی اون به دست بیاره. این تغییر، معماری مدل رو از یه «رمزگشا» (Decoder) که برای تولید متن خوبه، به یه «رمزگذار» (Encoder) تبدیل میکنه که برای کارهای درک مطلب و استخراج معنی مثل ساخت امبدینگ، عملکرد بهتری داره. تحقیقاتی مثل کار Weller و همکارانش در سال ۲۰۲۵ هم نشون داده که مدلهای رمزگذار در کارهایی مثل بازیابی اطلاعات، میتونن از مدلهای زبان بزرگ (LLM) که رمزگشا هستن، بهتر عمل کنن.
این مدل میتونه ورودیهایی تا طول ۲۰۴۸ توکن رو پردازش کنه. توکنها واحدهای کوچکی از متن هستن (گاهی یه کلمه، گاهی بخشی از یک کلمه). این اندازه برای ورودیهای معمول در کارهای بازیابی اطلاعات کافیه، مخصوصا که ورودیهای خیلی طولانیتر گاهی باعث از دست رفتن اطلاعات در امبدینگ نهایی میشن.
از توکن به وکتور نهایی: لایههای پولینگ و متراکم
بعد از اینکه مدل با استفاده از معماری رمزگذارش برای هر توکن یه امبدینگ اولیه تولید کرد، یه لایه به اسم «لایه پولینگ میانگین» (mean pooling layer) وارد عمل میشه. این لایه میاد امبدینگ همه توکنهای یه جمله رو با هم ترکیب میکنه و ازشون یه امبدینگ واحد برای کل جمله میسازه. در نهایت، دو «لایه متراکم» (dense layers) این وکتور رو میگیرن و به شکل نهایی خودش که یه وکتور ۷۶۸ بعدی هست، تبدیل میکنن.
фокус با عروسکهای ماتروشکا: آشنایی با MRL
یکی از قابلیتهای خیلی جالب EmbeddingGemma با یه تکنیک به اسم Matryoshka Representation Learning (MRL) یا «یادگیری بازنمایی ماتروشکا» آموزش داده شده. عروسکهای ماتروشکا رو دیدید که چندتا عروسک تودرتو هستن؟ این تکنیک هم دقیقا همون کار رو با وکتورهای امبدینگ میکنه.
وکتور خروجی اصلی این مدل ۷۶۸ بعدی هست (یعنی یه لیست با ۷۶۸ تا عدد). اما به لطف MRL، شما میتونید در صورت نیاز این وکتور رو کوتاه کنید و به نسخههای ۵۱۲، ۲۵۶ یا حتی ۱۲۸ بعدی برسونید. این کار باعث میشه پردازشهای بعدی سریعتر انجام بشن و حافظه و فضای دیسک کمتری مصرف بشه. جالبه که این کوچکسازی بدون اینکه افت عملکرد قابل توجهی داشته باشه، انجام میشه.
عملکرد EmbeddingGemma در مقایسه با بقیه چطوره؟
خب، همه این حرفها خوبه، ولی در عمل این مدل چقدر خوب کار میکنه؟ برای سنجش عملکرد مدلهای امبدینگ، از مجموعهای از تستها و معیارها به اسم «بنچمارک» استفاده میشه. دوتا از معروفترین این بنچمارکها MTEB (Massive Text Embedding Benchmark) و MMTEB (Massive Multilingual Text Embedding Benchmark) هستن.
EmbeddingGemma در این بنچمارکها، خصوصا در زمینه تولید امبدینگ برای زبانهای مختلف (چندزبانه)، عملکرد خیلی خوبی داشته. در زمان معرفی، این مدل بالاترین رتبه رو در بین مدلهای امبدینگ چندزبانه فقط-متن (text-only) زیر ۵۰۰ میلیون پارامتر در بنچمارک MTEB به دست آورده.
بیاید چندتا از نتایج رو در قالب جدول ببینیم:
مقایسه عملکرد کلی مدلها (بر اساس نمودار منتشر شده در منابع)
مدل | تعداد پارامترها (میلیون) | امتیاز MTEB |
---|---|---|
google/embeddinggemma-300m | 268M | ۶۸.۳۶ |
BAAI/bge-large-en-v1.5 | 335M | ۶۸.۱۷ |
mixedbread-ai/mxbai-embed-large-v1 | 335M | ۶۷.۹۲ |
Snowflake/snowflake-arctic-embed-m-v2.0 | 305M | ۶۷.۷۵ |
ibm-granite/granite-embedding-125m-english | 125M | ۶۷.۰۲ |
BAAI/bge-base-en-v1.5 | 109M | ۶۶.۰۸ |
Snowflake/snowflake-arctic-embed-m-long | 137M | ۶۵.۸۶ |
نکته: در این نمودار، مدل Qwen 3 embedding لحاظ نشده، چون این نمودار فقط مدلهای تا ۵۰۰ میلیون پارامتر رو در نظر گرفته.
نتایج دقیقتر بر اساس بنچمارک MTEB (چندزبانه، نسخه ۲)
ابعاد وکتور (Dimensionality) | میانگین امتیاز (بر اساس وظیفه) | میانگین امتیاز (بر اساس نوع وظیفه) |
---|---|---|
768d | ۶۱.۱۵ | ۵۴.۳۱ |
512d | ۶۰.۷۱ | ۵۳.۸۹ |
256d | ۵۹.۶۸ | ۵۳.۰۱ |
128d | ۵۸.۲۳ | ۵۱.۷۷ |
نتایج دقیقتر بر اساس بنچمارک MTEB (انگلیسی، نسخه ۲)
ابعاد وکتور (Dimensionality) | میانگین امتیاز (بر اساس وظیفه) | میانگین امتیاز (بر اساس نوع وظیفه) |
---|---|---|
768d | ۶۸.۳۶ | ۶۴.۱۵ |
512d | ۶۷.۸۰ | ۶۳.۵۹ |
256d | ۶۶.۸۹ | ۶۲.۹۴ |
128d | ۶۵.۰۹ | ۶۱.۵۶ |
این جداول نشون میدن که حتی وقتی ابعاد وکتور رو با استفاده از تکنیک MRL کم میکنیم، افت عملکرد خیلی ناچیزه، که این یه مزیت بزرگه.
چطوری از EmbeddingGemma استفاده کنیم؟ راهنمای عملی
یکی از بهترین ویژگیهای EmbeddingGemma اینه که از روز اول با کلی ابزار و فریمورک معروف سازگار شده. این یعنی لازم نیست چرخ رو از اول اختراع کنید و میتونید با ابزارهایی که شاید از قبل باهاشون آشنا هستید، کارتون رو شروع کنید.
یک نکته خیلی مهم: پرامپتها (Prompts)
قبل از اینکه بریم سراغ کدها، باید یه مفهوم مهم رو یاد بگیریم: «پرامپت». مدلهای امبدینگ برای اینکه بفهمن شما دقیقا چه کاری ازشون میخواید، نیاز به یه راهنمایی کوچیک دارن. این راهنمایی در قالب یه متن کوتاه به اول ورودی شما اضافه میشه. EmbeddingGemma با یه سری پرامپتهای مشخص آموزش دیده، پس برای گرفتن بهترین نتیجه باید از همینها استفاده کنیم.
مثلا:
- برای یه سوال یا کوئری که قراره باهاش جستجو انجام بشه، باید از پرامپت
task: search result | query:
استفاده کنیم. - برای یه سند یا متن که قراره در پایگاه داده ما ذخیره بشه، باید از پرامپت
title: none | text:
استفاده کنیم.
لیست کامل پرامپتها برای کارهای مختلف به این صورته:
نام پرامپت (کاربرد) | پرامپت مورد استفاده |
---|---|
query (کوئری جستجو) | task: search result | query: |
document (سند) | title: none | text: |
BitextMining | task: search result | query: |
Clustering (خوشهبندی) | task: clustering | query: |
Classification (دستهبندی) | task: classification | query: |
InstructionRetrieval (بازیابی کد) | task: code retrieval | query: |
MultilabelClassification | task: classification | query: |
PairClassification | task: sentence similarity | query: |
Reranking (رتبهبندی مجدد) | task: search result | query: |
Retrieval-query | task: search result | query: |
Retrieval-document | title: none | text: |
STS (شباهت معنایی متن) | task: sentence similarity | query: |
Summarization (خلاصهسازی) | task: summarization | query: |
حالا بریم ببینیم توی فریمورکهای مختلف چطوری میشه از این مدل استفاده کرد.
استفاده با Sentence Transformers
این یکی از سادهترین و محبوبترین راههاست. این کتابخونه کار با مدلهای امبدینگ رو خیلی راحت کرده.
from sentence_transformers import SentenceTransformer
# مدل رو از هاگینگ فیس دانلود میکنیم
model = SentenceTransformer("google/embeddinggemma-300m")
# یه کوئری و چندتا سند برای مثال
query = "Which planet is known as the Red Planet?"
documents = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
"Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]
# امبدینگ کوئری و سندها رو تولید میکنیم
query_embeddings = model.encode_query(query)
document_embeddings = model.encode_document(documents)
# شباهت بین کوئری و هر سند رو محاسبه میکنیم
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# خروجی: tensor([[0.3011, 0.6359, 0.4930, 0.4889]])
همونطور که میبینید، متد encode_query
و encode_document
به طور خودکار پرامپتهای درست رو به ورودیها اضافه میکنن. عدد ۰.۶۳۵۹ که بیشترین شباهت رو نشون میده، مربوط به جمله دوم یعنی جمله مربوط به مریخه.
استفاده با LangChain
اگه با LangChain کار میکنید، اون هم از Sentence Transformers در پشت صحنه استفاده میکنه. فقط باید بهش بگید که برای کوئری و سند از چه پرامپتهایی استفاده کنه.
from langchain_community.vectorstores import FAISS
from langchain_huggingface.embeddings import HuggingFaceEmbeddings
# مدل رو با مشخص کردن پرامپتها لود میکنیم
embedder = HuggingFaceEmbeddings(
model_name="google/embeddinggemma-300m",
query_encode_kwargs={"prompt_name": "query"},
encode_kwargs={"prompt_name": "document"}
)
# ... (ادامه کد برای ساخت پایگاه داده وکتور و جستجو)
استفاده با LlamaIndex
این فریمورک هم مثل LangChain، از Sentence Transformers استفاده میکنه و باید به صورت دستی پرامپتها رو بهش بدیم.
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
# پرامپتها رو به صورت instruction مشخص میکنیم
embeddings = HuggingFaceEmbedding(
model_name="google/embeddinggemma-300m",
query_instruction="task: search result | query: ",
text_instruction="title: none | text: ",
)
# ... (ادامه کد برای ساخت پایگاه داده وکتور و جستجو)
استفاده در مرورگر با Transformers.js
یکی از کارهای فوقالعادهای که میشه با این مدل کرد، اجرای مستقیم اون توی مرورگره! این یعنی میتونید یه اپلیکیشن وب بسازید که بدون نیاز به سرور، امبدینگ تولید کنه.
import { AutoModel, AutoTokenizer } from "@huggingface/transformers";
// مدل رو از هاب دانلود میکنیم
const model_id = "onnx-community/embeddinggemma-300m-ONNX";
const tokenizer = await AutoTokenizer.from_pretrained(model_id);
const model = await AutoModel.from_pretrained(model_id);
// پرامپتها رو تعریف میکنیم
const prefixes = {
query: "task: search result | query: ",
document: "title: none | text: ",
};
// ... (ادامه کد برای توکنایز کردن و اجرای مدل)
یه نمونه نمایشی جالب به اسم «Semantic Galaxy» هم وجود داره که با همین تکنولوژی ساخته شده. این دمو یه مدل حدود ۴۰۰ مگابایتی رو توی مرورگر شما لود میکنه و بهتون اجازه میده صدها جمله رو به امبدینگ تبدیل کنید، اونها رو توی یه فضای دو بعدی ببینید و جستجوی شباهت انجام بدید.
شخصیسازی مدل برای کارهای خاص: فاین-تیونینگ (Fine-tuning)
EmbeddingGemma یه مدل همهفنحریفه، ولی گاهی وقتا ما نیاز داریم که مدل توی یه زمینه خیلی خاص، متخصص بشه. مثلا فرض کنید میخوایم یه سیستم جستجو برای مقالههای پزشکی بسازیم. زبان مقالههای پزشکی با زبان محاوره روزمره فرق داره. اینجا میتونیم مدل رو «فاین-تیون» کنیم.
فاین-تیون کردن یعنی ما مدل از قبل آموزشدیده رو برمیداریم و اون رو با دادههای تخصصی خودمون، یه مقدار بیشتر آموزش میدیم. این کار باعث میشه مدل با اصطلاحات و مفاهیم اون حوزه خاص بیشتر آشنا بشه و عملکرد بهتری داشته باشه.
برای نشون دادن این قابلیت، یه نمونه عملی انجام شده: مدل google/embeddinggemma-300m
روی مجموعه داده MIRIAD (مجموعه داده بازیابی و دستورالعملهای پزشکی) فاین-تیون شده. هدف این بوده که مدل بتونه با دریافت سوالات پزشکی دقیق، بهترین بخشهای مرتبط از مقالات علمی پزشکی رو پیدا کنه.
نتیجه فوقالعاده بوده. مدل فاین-تیون شده به اسم sentence-transformers/embeddinggemma-300m-medical
تونسته در این کار خاص، حتی مدلهایی که دو برابر خودش اندازه داشتن رو هم شکست بده.
بیاید عملکرد مدلها رو روی این مجموعه داده پزشکی ببینیم:
مدل | تعداد پارامترها (میلیون) | امتیاز NDCG@10 (معیار دقت بازیابی) |
---|---|---|
Qwen/Qwen3-Embedding-0.6B | 596M | ۰.۸۴۹۳ |
Snowflake/snowflake-arctic-embed-m-v2.0 | 305M | ۰.۸۴۶۷ |
google/embeddinggemma-300m (مدل پایه) | 268M | ۰.۸۳۴۰ |
mixedbread-ai/mxbai-embed-large-v1 | 335M | ۰.۷۸۵۱ |
sentence-transformers/embeddinggemma-300m-medical (فاین-تیون شده) | 268M | ۰.۸۸۶۲ |
همونطور که میبینید، مدل فاین-تیون شده با اینکه اندازهاش تغییری نکرده، جهش عملکردی قابل توجهی داشته و از همه رقبای بزرگتر از خودش هم بهتر عمل کرده. این قدرت فاین-تیونینگ رو نشون میده.
این مدل روی چه دادههایی آموزش دیده؟
شفافیت در مورد دادههای آموزشی خیلی مهمه. این مدل روی یه مجموعه داده متنی بسیار بزرگ و متنوع با حجمی حدود ۳۲۰ میلیارد توکن آموزش دیده. این دادهها شامل موارد زیر هستن:
- اسناد وب: مجموعهای متنوع از متون وب از سراسر اینترنت که باعث میشه مدل با سبکهای مختلف زبانی، موضوعات و واژگان گوناگون آشنا بشه. این دادهها شامل محتوا به بیش از ۱۰۰ زبان مختلف هستن.
- کد و اسناد فنی: قرار دادن مدل در معرض کدهای برنامهنویسی و مستندات فنی بهش کمک میکنه ساختار زبانهای برنامهنویسی و محتوای علمی تخصصی رو یاد بگیره.
- دادههای مصنوعی و مخصوص وظیفه: دادههایی که به صورت مصنوعی ساخته شدن تا مهارتهای خاصی رو به مدل یاد بدن. مثلا دادههای مخصوص برای کارهای بازیابی اطلاعات، دستهبندی و تحلیل احساسات.
البته روی این دادهها فرآیندهای پاکسازی و فیلترینگ دقیقی هم انجام شده تا محتوای مضر، حساس و بیکیفیت حذف بشه.
کجا میتونیم EmbeddingGemma رو پیدا و استفاده کنیم؟
این مدل به لطف متنباز بودنش، در پلتفرمهای مختلفی در دسترسه. شما میتونید وزنهای این مدل رو در جاهای زیر پیدا کنید:
- Hugging Face: به عنوان منبع اصلی، مدل
google/embeddinggemma-300m
در این پلتفرم موجوده. البته برای دسترسی به فایلهاش باید وارد حساب کاربری هاگینگ فیس خودتون بشید و با شرایط و لایسنس استفاده گوگل موافقت کنید. - Ollama: این ابزار محبوب هم پشتیبانی از EmbeddingGemma رو اضافه کرده.
- Llama.cpp, MLX, LMStudio: اینها ابزارهای دیگهای هستن که به شما اجازه میدن مدلهای زبانی رو به صورت محلی روی دستگاه خودتون اجرا کنید و از EmbeddingGemma هم پشتیبانی میکنن.
پرسش و پاسخ
حالا که با کلیات EmbeddingGemma آشنا شدیم، بیاید چندتا سوال رایج رو با هم مرور کنیم.
سوال ۱: پس این مدل هم مثل ChatGPT یا مدلهای مشابهه که براش سوال بنویسیم و جواب بده؟
نه دقیقا. EmbeddingGemma یه مدل «تولیدکننده» متن نیست. یعنی شما نمیتونید باهاش چت کنید. کار اصلی این مدل «درک» متنه، نه «تولید» متن. اون متن شما رو میگیره و به یه سری عدد (وکتور) تبدیل میکنه تا کامپیوتر بتونه معنی اون متن رو بفهمه و با متنهای دیگه مقایسه کنه. این مدل معمولا به عنوان یه بخش مهم در سیستمهای بزرگتر (مثل سیستمهای RAG که توضیح دادیم) استفاده میشه.
سوال ۲: اینکه میگید «روی دستگاه» (On-Device) اجرا میشه، دقیقا چه مزیتی برای یه کاربر عادی داره؟
مهمترین مزیتش حفظ حریم خصوصیه. فکر کنید دارید از یه اپلیکیشن یادداشتبرداری هوشمند استفاده میکنید که میتونه یادداشتهای مرتبط شما رو پیدا کنه. اگه این اپ از یه مدل روی دستگاه مثل EmbeddingGemma استفاده کنه، متن یادداشتهای شخصی شما هیچوقت از کامپیوتر یا موبایلتون خارج نمیشه. مزیت دوم اینه که حتی وقتی به اینترنت دسترسی ندارید (مثلا توی هواپیما)، این قابلیتها همچنان کار میکنن.
سوال ۳: چرا اینقدر ابزارهای مختلف مثل LangChain و LlamaIndex برای استفاده ازش وجود داره؟
این ابزارها مثل جعبه ابزارهای مختلف برای برنامهنویسها هستن. هر کدوم یه سری قابلیتها و امکانات خاص برای ساختن اپلیکیشنهای هوش مصنوعی ارائه میدن. اینکه EmbeddingGemma با همه اینها سازگاره، یه نکته مثبته و نشون میده که چقدر انعطافپذیره و توسعهدهندهها میتونن به راحتی اون رو توی پروژههای فعلی خودشون جا بدن.
سوال ۴: چرا اینقدر روی کوچیک بودنش (۳۰۸ میلیون پارامتر) تاکید میشه؟
چون تا همین چند وقت پیش، برای داشتن عملکرد خوب، نیاز به مدلهای غولپیکر با میلیاردها پارامتر داشتید که فقط روی سرورهای خیلی قوی و گرونقیمت اجرا میشدن. اما مدلهای کوچیک و بهینهای مثل EmbeddingGemma این قدرت رو به دست همه میرسونن. این مدل با کوانتیزهسازی (روشی برای فشردهسازی مدل) میتونه روی دستگاهی با کمتر از ۲۰۰ مگابایت رم اجرا بشه که این فوقالعاده است. این یعنی دموکراتیزه کردن هوش مصنوعی و فراهم کردن نوآوری برای همه.
سوال ۵: لایسنس استفاده از این مدل چطوریه؟
این مدل تحت لایسنسی به اسم «Gemma» منتشر شده. برای استفاده ازش، همونطور که گفته شد، باید به صفحه مدل در هاگینگ فیس برید و شرایط استفادهای که گوگل تعیین کرده رو بپذیرید. بعضیها در جامعه کاربری این لایسنس رو کمی «جanky» یا نامتعارف توصیف کردن، ولی در نهایت برای استفاده باید این شرایط رو قبول کنید.
منابع
- [۱] Content from x.com
- [۳] EmbeddingGemma – 300M parameter, state-of-the-art for its size, open embedding model from Google : r/LocalLLaMA
- [۵] Welcome EmbeddingGemma, Google’s new efficient embedding model
- [۷] Introducing EmbeddingGemma: The Best-in-Class Open Model for On-Device Embeddings – Google Developers Blog
دیدگاهتان را بنویسید