ما هو EmbeddingGemma؟
EmbeddingGemma هو نموذج مفتوح وخفيف من Google DeepMind لإنشاء تمثيلات المتجهات النصية (Text Embeddings). يعتمد على بنية Gemma 3 ويحتوي على نحو 308 ملايين معلمة، لذلك يظهر أيضاً باسم EmbeddingGemma 300M.
على خلاف نماذج المحادثة التي تولّد النص، يحوّل EmbeddingGemma النص إلى متجه رقمي يعبّر عن المعنى والعلاقات الدلالية. كلما كان نصان أقرب في المعنى، كان من المتوقع أن تكون متجهاتهما أقرب أيضاً.
ولهذا يناسب البحث الدلالي، RAG، التصنيف، التجميع، اكتشاف المحتوى المتشابه واسترجاع الشيفرة.
أهم المواصفات
| الخاصية | القيمة |
|---|---|
| المطور | Google DeepMind |
| البنية | Gemma 3 |
| الحجم | نحو 308M معلمة |
| الإدخال | نص |
| نافذة السياق | حتى 2K token |
| البعد الكامل | 768 |
| أبعاد MRL | 512 و256 و128 |
| اللغات | أكثر من 100 لغة |
| التشغيل المحلي | نعم |
كيف تعمل Embeddings؟
إذا كانت لدينا جملتان تتحدثان عن تحسين تجربة العميل في CRM وجملة ثالثة عن الطقس، فسيحوّل النموذج كل جملة إلى متجه. من المفترض أن تكون متجهات الجملتين الأوليين أقرب من متجه جملة الطقس. ويمكن قياس ذلك باستخدام Cosine Similarity.
الاستخدامات الرئيسية
البحث الدلالي
يمكن للنظام العثور على مستند ذي معنى قريب حتى عندما لا تتطابق الكلمات حرفياً مع سؤال المستخدم.
RAG
المسار المعتاد هو:
- تقسيم المستندات إلى Chunks.
- إنشاء Embedding لكل Chunk.
- تخزين المتجهات في Vector Database.
- إنشاء Embedding لسؤال المستخدم.
- استرجاع أقرب المقاطع.
- إرسال السياق المسترجع إلى LLM لتوليد الإجابة.
EmbeddingGemma لا يولّد الإجابة النهائية؛ وظيفته الأساسية هي استرجاع السياق المناسب.
التصنيف والتجميع
يمكن استخدامه لتصنيف رسائل الدعم إلى فئات مثل المبيعات والدعم والفوترة، أو لتجميع آلاف المستندات بحسب التشابه.
اكتشاف التكرار
مفيد لاكتشاف الأسئلة أو المقالات أو Tickets المتشابهة.
استرجاع الشيفرة
يوفر النموذج prompt مخصصاً لـ Code Retrieval لاسترجاع كتل الشيفرة باستخدام سؤال بلغة طبيعية.
التشغيل باستخدام Ollama
ollama pull embeddinggemmaثم:
curl http://localhost:11434/api/embed \
-d '{
"model": "embeddinggemma",
"input": "Semantic search is useful for RAG systems."
}'Python
import ollama
response = ollama.embed(
model="embeddinggemma",
input="Embedding models convert text into numerical vectors."
)
vector = response["embeddings"][0]
print(len(vector))التمثيل الكامل للنموذج يتكون من 768 بعداً.
تشير صفحة Ollama الرسمية إلى الحاجة إلى الإصدار 0.11.10 أو أحدث.
الاستخدام مع Sentence Transformers
pip install -U sentence-transformersfrom 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"
)
print(model.similarity(query, document))يتطلب تنزيل ملفات النموذج من Hugging Face قبول شروط استخدام Gemma.
أهمية Task Prompts
يوفر EmbeddingGemma prompts مختلفة بحسب المهمة:
| المهمة | Prompt |
|---|---|
| Retrieval Query | task: search result | query: ... |
| Retrieval Document | title: none | text: ... |
| Question Answering | task: question answering | query: ... |
| Fact Checking | task: fact checking | query: ... |
| Classification | task: classification | query: ... |
| Clustering | task: clustering | query: ... |
| Similarity | task: sentence similarity | query: ... |
| Code Retrieval | task: code retrieval | query: ... |
في أنظمة RAG من الأفضل استخدام Retrieval-query للأسئلة وRetrieval-document للمستندات. وإذا كان للمستند عنوان مفيد، يمكن إدخاله في prompt؛ وتذكر وثائق Google أن ذلك قد يحسن جودة تمثيل المستند.
MRL وتقليل أبعاد المتجه
يستخدم EmbeddingGemma أسلوب Matryoshka Representation Learning. لذلك يمكن استخدام المتجه الكامل 768 أو الاحتفاظ بأول 512 أو 256 أو 128 بعداً.
- 768: أعلى قدر من المعلومات
- 512: توازن جيد
- 256: مناسب للفهرس الكبير
- 128: أقل تخزيناً وأسرع، مع احتمال خسارة أكبر في الجودة
import numpy as np
small = vector[:256]
small = small / np.linalg.norm(small)بعد تقليص الأبعاد يجب إعادة تطبيع المتجه.
نصائح للإنتاج
راعِ نافذة 2K token
قسّم المستندات الطويلة إلى Chunks ذات معنى. نقطة بداية عملية قد تكون 300–800 token مع overlap بسيط، لكن يجب ضبط ذلك بالاختبار.
لا تخلط استراتيجيات مختلفة في الفهرس نفسه
إذا غيّرت النموذج أو الأبعاد أو الـ prompt، فمن الأفضل عادة إعادة إنشاء Embeddings وإجراء Re-index.
ثبّت Metric
Cosine Similarity خيار شائع. تأكد من أن التطبيق وVector Database يستخدمان إعدادات متوافقة.
اختبر لغتك ومجالك
رغم التدريب على أكثر من 100 لغة، قد تختلف الجودة بحسب اللغة والمجال. أنشئ Evaluation Set من أسئلة ومستندات حقيقية.
Embedding ليس Reranker
الـ Embedding ممتاز للاسترجاع السريع، بينما يمكن استخدام Reranker لاحقاً لتحسين ترتيب أفضل النتائج.
التشغيل المحلي يعزز الخصوصية
يمكنك إبقاء المستندات الخام داخل بنيتك التحتية وعدم إرسالها إلى API خارجي.
بنية RAG بسيطة
Documents → Chunking → EmbeddingGemma → Vector DB
User Query → EmbeddingGemma → Similarity Search
Top-K Chunks → LLM → Final Answerيمكن استخدام PostgreSQL + pgvector أو Qdrant أو Milvus أو Weaviate كطبقة تخزين متجهي.
متى يكون EmbeddingGemma مناسباً؟
يكون خياراً جيداً عند الحاجة إلى Embeddings محلية، بحث دلالي متعدد اللغات، RAG، استهلاك موارد منخفض أو تحكم أكبر في الخصوصية.
أما إذا كان المطلوب إنشاء النص أو المحادثة أو الاستدلال المباشر، فهو ليس بديلاً عن Chat LLM.
الخلاصة
EmbeddingGemma نموذج صغير نسبياً لكنه عملي جداً لبناء البحث الدلالي وRAG. أهم عناصر الجودة في التطبيق الحقيقي ليست النموذج فقط، بل أيضاً اختيار الـ prompt، طريقة Chunking، أبعاد المتجه، Metric وطريقة تقييم Retrieval.
المراجع الرسمية
- Google AI for Developers — EmbeddingGemma model overview
- Google Developers Blog — Introducing EmbeddingGemma
- Hugging Face —
google/embeddinggemma-300m - Ollama Library —
embeddinggemma