آرین سلیمان‌زاده
  • خانه
  • وبلاگ
  • پادکست‌ها
  • ویدیوها
  • کتابخانه
  • تماس با من
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
پنل•تماس سریع

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

درخواست همکاری یا مشاوره

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

LinkedInپاسخ سریع
خانه/مقاله‌ها/EmbeddingGemma چیست؟ راهنمای کامل کاربرد، نصب و استفاده در RAG
هوش مصنوعیمدل‌های زبانیRAGمقاله

EmbeddingGemma چیست؟ راهنمای کامل کاربرد، نصب و استفاده در RAG

EmbeddingGemma مدل سبک و چندزبانه Google برای ساخت embedding است. در این راهنما با کاربردها، Ollama، Sentence Transformers، MRL، RAG و نکات مهم استفاده در پروژه واقعی آشنا می‌شویم.

۱۱ مهر ۱۴۰۵8 دقیقه مطالعه8 بازدید
#EmbeddingGemma#Gemma#Embedding#Ollama#RAG#Semantic Search#Vector Database

Arian Soleimanzadeh

Software Engineer & Researcher

تصویر مفهومی مدل EmbeddingGemma و تبدیل متن به بردارهای معنایی

Arian Soleimanzadeh

هوش مصنوعی · کد · محصول

پژوهش + مهندسی
در این صفحه
EmbeddingGemma چیست؟مشخصات مهم EmbeddingGemmaEmbedding دقیقاً چه کاری انجام می‌دهد؟مهم‌ترین کاربردهای EmbeddingGemma1. جست‌وجوی معنایی2. ساخت RAG3. تشخیص شباهت و محتوای تکراری4. دسته‌بندی متن5. خوشه‌بندی6. جست‌وجوی کداجرای EmbeddingGemma با Ollamaاستفاده در Python با Ollamaاستفاده با Sentence TransformersPromptهای مهم در EmbeddingGemmaQuery و Document را یکسان Embed نکنیدMatryoshka Representation Learning یا MRL چیست؟نکات مهم برای استفاده در پروژه واقعیChunking را با Context Window هماهنگ کنیدمدل، Dimension و Prompt را وسط کار تغییر ندهیداز یک Metric ثابت استفاده کنیدکیفیت فارسی را روی داده خودتان ارزیابی کنیدEmbedding با Reranker فرق داردداده حساس را محلی نگه داریدیک معماری پیشنهادی برای RAG محلیEmbeddingGemma چه زمانی انتخاب خوبی است؟جمع‌بندیمنابع رسمی

EmbeddingGemma چیست؟

EmbeddingGemma مدل متن‌باز و سبک Google DeepMind برای ساخت Text Embedding است. این مدل بر پایه معماری Gemma 3 ساخته شده و نسخه رسمی آن حدود 308 میلیون پارامتر دارد؛ به همین دلیل معمولاً با نام «EmbeddingGemma 300M» هم دیده می‌شود.

Embedding با مدل زبانی مولد فرق دارد. یک LLM معمولی متن تولید می‌کند، اما EmbeddingGemma متن را به یک بردار عددی تبدیل می‌کند؛ برداری که تلاش می‌کند معنا، موضوع و ارتباط مفهومی متن را نمایش دهد. در نتیجه متن‌هایی که از نظر معنایی به هم نزدیک‌اند، معمولاً بردارهای نزدیک‌تری هم خواهند داشت.

این ویژگی پایه بسیاری از سیستم‌های Semantic Search، RAG، Recommendation، Classification، Clustering و Duplicate Detection است.

مشخصات مهم EmbeddingGemma

ویژگیمقدار
سازندهGoogle DeepMind
معماریمبتنی بر Gemma 3
اندازهحدود 308M پارامتر
نوع ورودیمتن
Context Windowتا 2K توکن
ابعاد اصلی Embedding768
ابعاد قابل استفاده با MRL512، 256 و 128
زبان‌هاآموزش‌دیده روی بیش از 100 زبان
کاربرد اصلیRetrieval، Similarity، Classification و Clustering
اجرای محلیبله؛ مناسب لپ‌تاپ، دسکتاپ و دستگاه‌های کم‌منبع

Embedding دقیقاً چه کاری انجام می‌دهد؟

فرض کنید سه جمله داریم:

  • «هوش مصنوعی در مدیریت ارتباط با مشتری کاربرد دارد.»
  • «AI می‌تواند تجربه مشتری در CRM را بهبود دهد.»
  • «امروز هوا سرد است.»

EmbeddingGemma برای هر جمله یک بردار عددی می‌سازد. انتظار داریم دو جمله اول از نظر فاصله برداری به هم نزدیک‌تر از جمله سوم باشند. با معیارهایی مانند Cosine Similarity می‌توان این نزدیکی معنایی را محاسبه کرد.


مهم‌ترین کاربردهای EmbeddingGemma

1. جست‌وجوی معنایی

در جست‌وجوی سنتی معمولاً وجود کلمه کلیدی مهم است. اما در Semantic Search، کاربر می‌تواند عبارتی متفاوت از متن سند بنویسد و سیستم همچنان سند مرتبط را پیدا کند.

برای مثال، جست‌وجوی «چطور مشتری‌های ناراضی را حفظ کنیم؟» می‌تواند مقاله‌ای درباره «کاهش Customer Churn» را پیدا کند، حتی اگر عبارت دقیق سؤال در مقاله وجود نداشته باشد.

2. ساخت RAG

یکی از مهم‌ترین کاربردها، استفاده در Retrieval-Augmented Generation است. جریان معمول چنین است:

  1. اسناد به بخش‌های کوچک‌تر یا Chunk تقسیم می‌شوند.
  2. برای هر Chunk با EmbeddingGemma بردار ساخته می‌شود.
  3. بردارها در Vector Database ذخیره می‌شوند.
  4. سؤال کاربر نیز Embed می‌شود.
  5. نزدیک‌ترین Chunkها بازیابی می‌شوند.
  6. متن‌های بازیابی‌شده به یک LLM داده می‌شوند تا پاسخ نهایی را تولید کند.

EmbeddingGemma خودش پاسخ متنی تولید نمی‌کند؛ نقش آن پیدا کردن Context مناسب برای مدل مولد است.

3. تشخیص شباهت و محتوای تکراری

می‌توان برای پیدا کردن مقالات مشابه، سؤال‌های تکراری، Ticketهای مشابه یا محصولات نزدیک به هم از Embedding استفاده کرد.

4. دسته‌بندی متن

بردارها را می‌توان برای طبقه‌بندی پیام‌ها استفاده کرد؛ برای مثال:

  • فروش
  • پشتیبانی فنی
  • مالی
  • شکایت مشتری

EmbeddingGemma برای Classification نیز prompt اختصاصی دارد.

5. خوشه‌بندی

اگر هزاران مقاله، پیام یا Ticket داشته باشید، می‌توانید Embeddingها را با روش‌هایی مانند K-Means یا HDBSCAN خوشه‌بندی کنید و موضوعات مشترک را پیدا کنید.

6. جست‌وجوی کد

EmbeddingGemma prompt مخصوص Code Retrieval دارد؛ بنابراین می‌تواند برای پیدا کردن قطعه‌کد مرتبط بر اساس توضیح زبان طبیعی نیز استفاده شود.


اجرای EmbeddingGemma با Ollama

یکی از ساده‌ترین روش‌ها برای اجرای محلی مدل، Ollama است.

ابتدا مدل را دریافت کنید:

Shell
1
ollama pull embeddinggemma

سپس می‌توانید API محلی Ollama را صدا بزنید:

Shell
12345
curl http://localhost:11434/api/embed \
  -d '{
    "model": "embeddinggemma",
    "input": "Semantic search is useful for RAG systems."
  }'

خروجی شامل آرایه‌ای از اعداد اعشاری است که همان Embedding متن محسوب می‌شود.

استفاده در Python با Ollama

Python
1234567891011
import ollama

response = ollama.embed(
    model="embeddinggemma",
    input="Embedding models convert text into numerical vectors."
)

vector = response["embeddings"][0]

print(len(vector))
print(vector[:8])

در نسخه فعلی مدل، بردار کامل معمولاً 768 بعد دارد.

برای EmbeddingGemma در Ollama باید از نسخه‌ای استفاده کنید که این مدل را پشتیبانی کند؛ صفحه رسمی Ollama حداقل نسخه 0.11.10 را ذکر می‌کند.


استفاده با Sentence Transformers

اگر کنترل بیشتری روی promptها، taskها و ابعاد بردار می‌خواهید، sentence-transformers انتخاب مناسبی است.

Shell
1
pip install -U sentence-transformers
Python
1234567891011121314151617
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("google/embeddinggemma-300m")

query = model.encode(
    "What is semantic search?",
    prompt_name="Retrieval-query"
)

document = model.encode(
    "Semantic search retrieves information based on meaning.",
    prompt_name="Retrieval-document"
)

score = model.similarity(query, document)

print(score)

در Hugging Face لازم است شرایط استفاده از Gemma را برای دسترسی به فایل‌های مدل بپذیرید.


Promptهای مهم در EmbeddingGemma

یکی از نکات مهم این مدل این است که نوع task را باید جدی بگیرید. Google برای کاربردهای مختلف promptهای متفاوتی تعریف کرده است.

کاربردPrompt پیشنهادی
جست‌وجوی Querytask: search result | query: ...
Documenttitle: none | text: ...
Question Answeringtask: question answering | query: ...
Fact Checkingtask: fact checking | query: ...
Classificationtask: classification | query: ...
Clusteringtask: clustering | query: ...
Sentence Similaritytask: sentence similarity | query: ...
Code Retrievaltask: code retrieval | query: ...

در sentence-transformers بسیاری از این موارد با prompt_name آماده هستند.

Query و Document را یکسان Embed نکنید

برای RAG بهتر است Query و Document با نقش مناسب Embed شوند:

Python
123456789
query_embedding = model.encode(
    "How does RAG work?",
    prompt_name="Retrieval-query"
)

doc_embedding = model.encode(
    "RAG combines retrieval with a generative language model.",
    prompt_name="Retrieval-document"
)

اگر عنوان سند را دارید، می‌توانید آن را هم وارد prompt کنید:

Python
1234
doc_embedding = model.encode(
    "RAG combines retrieval with generation.",
    prompt="title: Introduction to RAG | text: "
)

Google اشاره می‌کند که اضافه‌کردن عنوان مناسب می‌تواند عملکرد Document Embedding را بهتر کند.


Matryoshka Representation Learning یا MRL چیست؟

EmbeddingGemma به‌صورت پیش‌فرض بردار 768 بعدی ایجاد می‌کند، اما با MRL می‌توانید فقط بخش ابتدایی بردار را نگه دارید و از ابعاد کوچک‌تر استفاده کنید:

  • 768: بیشترین اطلاعات و معمولاً بهترین کیفیت
  • 512: تعادل مناسب بین کیفیت و هزینه
  • 256: مناسب سیستم‌هایی با داده زیاد
  • 128: کمترین مصرف حافظه و سریع‌ترین جست‌وجو، با احتمال افت کیفیت بیشتر

مثال ساده:

Python
1234
import numpy as np

small = vector[:256]
small = small / np.linalg.norm(small)

بعد از truncate کردن بردار، دوباره آن را normalize کنید.

MRL در سیستم‌هایی با میلیون‌ها بردار بسیار مفید است؛ چون کاهش ابعاد می‌تواند مصرف Storage و هزینه جست‌وجوی برداری را به‌شدت کم کند.


نکات مهم برای استفاده در پروژه واقعی

Chunking را با Context Window هماهنگ کنید

حداکثر Context مدل حدود 2K توکن است. برای RAG نباید اسناد بسیار بلند را به‌صورت یکجا Embed کنید. معمولاً بهتر است سند را به Chunkهای معنی‌دار تبدیل کنید.

یک نقطه شروع عملی می‌تواند حدود 300 تا 800 توکن برای هر Chunk با کمی overlap باشد، اما عدد مناسب باید با نوع داده و تست Retrieval مشخص شود.

مدل، Dimension و Prompt را وسط کار تغییر ندهید

بردارهایی که با مدل، ابعاد یا prompt متفاوت ساخته شده‌اند نباید بدون برنامه در یک Index واحد مخلوط شوند. اگر استراتژی Embedding را تغییر دادید، معمولاً باید اسناد را Re-index کنید.

از یک Metric ثابت استفاده کنید

برای شباهت متنی، Cosine Similarity انتخاب رایجی است. Vector Database و کد Query باید درباره normalization و metric یک رفتار سازگار داشته باشند.

کیفیت فارسی را روی داده خودتان ارزیابی کنید

مدل روی بیش از 100 زبان آموزش دیده است، اما کیفیت Retrieval می‌تواند با توجه به زبان، دامنه تخصصی و نوع متن متفاوت باشد. برای فارسی، عربی یا داده‌های تخصصی بهتر است یک Evaluation Set واقعی از Query و Documentهای پروژه خود بسازید.

Embedding با Reranker فرق دارد

Embedding مرحله بازیابی سریع Candidateها را انجام می‌دهد. در سیستم‌های حساس به دقت، می‌توان نتایج اولیه را با یک Reranker دوباره مرتب کرد.

داده حساس را محلی نگه دارید

یکی از مزیت‌های مهم EmbeddingGemma اندازه کوچک آن است. می‌توانید Embeddingها را روی سیستم خودتان تولید کنید و مجبور نباشید متن خام را برای یک API خارجی ارسال کنید.


یک معماری پیشنهادی برای RAG محلی

Code
12345678910111213141516171819
Documents
   ↓
Chunking
   ↓
EmbeddingGemma
   ↓
Vector Database
   ↓
User Query
   ↓
EmbeddingGemma
   ↓
Similarity Search
   ↓
Top-K Chunks
   ↓
LLM
   ↓
Final Answer

برای Vector Database می‌توانید بسته به معماری پروژه از گزینه‌هایی مانند PostgreSQL + pgvector، Qdrant، Milvus یا Weaviate استفاده کنید.


EmbeddingGemma چه زمانی انتخاب خوبی است؟

این مدل زمانی گزینه جذابی است که:

  • Embedding محلی و Offline می‌خواهید.
  • روی RAM و منابع سخت‌افزاری محدودیت دارید.
  • پروژه چندزبانه دارید.
  • RAG یا Semantic Search می‌سازید.
  • می‌خواهید بین کیفیت و اندازه بردار با MRL انتخاب داشته باشید.
  • حریم خصوصی داده برایتان مهم است.

اما اگر هدف شما تولید متن، چت، Reasoning یا پاسخ‌گویی مستقیم است، EmbeddingGemma به‌تنهایی مدل مناسبی نیست؛ چون یک Embedding Model است، نه یک Chat LLM.

جمع‌بندی

EmbeddingGemma یک مدل کوچک اما کاربردی برای تبدیل متن به نمایش برداری است. اندازه حدود 308M پارامتر، پشتیبانی از بیش از 100 زبان، Context حدود 2K توکن، Embeddingهای 768 بعدی و قابلیت MRL آن را برای جست‌وجوی معنایی و RAG محلی مناسب می‌کند.

برای شروع سریع، Ollama ساده‌ترین مسیر است. برای کنترل دقیق‌تر روی task promptها و ابعاد، Sentence Transformers انعطاف بیشتری می‌دهد. مهم‌ترین نکته در پروژه واقعی این است که Embedding را فقط یک تابع تبدیل متن به آرایه عددی نبینید؛ انتخاب prompt، Chunking، Dimension، Metric و روش ارزیابی مستقیماً روی کیفیت Retrieval اثر می‌گذارند.

منابع رسمی

  • Google AI for Developers — EmbeddingGemma model overview
  • Google DeepMind / Google Developers Blog — Introducing EmbeddingGemma
  • Hugging Face — google/embeddinggemma-300m
  • Ollama Library — embeddinggemma
در این صفحه
EmbeddingGemma چیست؟مشخصات مهم EmbeddingGemmaEmbedding دقیقاً چه کاری انجام می‌دهد؟مهم‌ترین کاربردهای EmbeddingGemma1. جست‌وجوی معنایی2. ساخت RAG3. تشخیص شباهت و محتوای تکراری4. دسته‌بندی متن5. خوشه‌بندی6. جست‌وجوی کداجرای EmbeddingGemma با Ollamaاستفاده در Python با Ollamaاستفاده با Sentence TransformersPromptهای مهم در EmbeddingGemmaQuery و Document را یکسان Embed نکنیدMatryoshka Representation Learning یا MRL چیست؟نکات مهم برای استفاده در پروژه واقعیChunking را با Context Window هماهنگ کنیدمدل، Dimension و Prompt را وسط کار تغییر ندهیداز یک Metric ثابت استفاده کنیدکیفیت فارسی را روی داده خودتان ارزیابی کنیدEmbedding با Reranker فرق داردداده حساس را محلی نگه داریدیک معماری پیشنهادی برای RAG محلیEmbeddingGemma چه زمانی انتخاب خوبی است؟جمع‌بندیمنابع رسمی

جزئیات مقاله

اطلاعات انتشار، زمان مطالعه و تعداد بازدید این محتوا.

انتشار

۱۱ مهر ۱۴۰۵

آخرین ویرایش

۱۲ آبان ۱۴۰۵

زمان مطالعه

8 دقیقه مطالعه

بازدید

8

نویسنده

Arian Soleimanzadeh

مقاله قبلی

Stable Diffusion 3.5 Medium و Large چیست؟ راهنمای نصب، اجرا و کاربرد

مقاله بعدی

Nimble چیست؟ راهنمای کامل نصب و استفاده با Ollama

آرین سلیمان‌زاده

پورتفولیوی شخصی با تمرکز بر Agentic CRM، سامانه‌های هوشمند کسب‌وکار، مهندسی مدرن وب، طراحی سیستم‌های رابط کاربری و توسعه محصولات نرم‌افزاری کاربردی.

لینک‌های سریع

  • درباره من
  • وبلاگ
  • کتابخانه
  • تماس

ارتباط

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

در دسترس: روزهای کاری

معمولاً پاسخ در ۲۴ ساعت

خبرنامه

به‌روزرسانی‌های مربوط به نوشته‌ها، پروژه‌ها و انتشارهای جدید را دریافت کنید.

© 2026 ariansoleimanzadeh.dev — تمامی حقوق محفوظ است.

لینکدین