الفصل 3: اختيار نموذج Embedding المناسب
مقدمة
يعتمد اختيار نموذج embedding المناسب على متطلباتك المحددة: الجودة، والتكلفة، وزمن الاستجابة، ودعم اللغات، وقيود النشر.
إطار القرار
معايير MTEB
Massive Text Embedding Benchmark (MTEB) هو المعيار القياسي لمقارنة نماذج embedding:
لوحة الصدارة (أفضل النماذج)
| الترتيب | النموذج | الدرجة المتوسطة | الأبعاد |
|---|---|---|---|
| 1 | text-embedding-3-large | 64.59 | 3072 |
| 2 | Cohere embed-v3 | 64.47 | 1024 |
| 3 | BGE-large-en-v1.5 | 64.23 | 1024 |
| 4 | E5-large-v2 | 62.25 | 1024 |
| 5 | text-embedding-3-small | 62.26 | 1536 |
الأداء حسب المهمة
| النموذج | الاسترجاع | STS | التصنيف |
|---|---|---|---|
| text-embedding-3-large | 59.2 | 65.4 | 71.2 |
| Cohere embed-v3 | 58.9 | 64.8 | 70.1 |
| BGE-large | 57.8 | 63.9 | 69.5 |
تحليل التكلفة
لكل مليون token
def calculate_monthly_cost(
docs_per_month: int,
avg_tokens_per_doc: int,
model: str
):
prices = {
"text-embedding-3-small": 0.02,
"text-embedding-3-large": 0.13,
"cohere-embed-v3": 0.10,
"self-hosted": 0.0 # Infrastructure costs separate
}
total_tokens = docs_per_month * avg_tokens_per_doc
millions = total_tokens / 1_000_000
return millions * prices[model]
# Example: 1M documents, 500 tokens each
cost = calculate_monthly_cost(1_000_000, 500, "text-embedding-3-small")
# Result: $10/month for embedding
مقارنة التكلفة الإجمالية
| النطاق | OpenAI Small | OpenAI Large | استضافة ذاتية |
|---|---|---|---|
| 100K وثيقة | 1 دولار | 6.50 دولار | ~50 دولار/شهر (بنية تحتية) |
| 1M وثيقة | 10 دولار | 65 دولار | ~100 دولار/شهر |
| 10M وثيقة | 100 دولار | 650 دولار | ~200 دولار/شهر |
اعتبارات زمن الاستجابة
زمن استجابة API
| النموذج | المتوسط | P99 |
|---|---|---|
| text-embedding-3-small | 50ms | 150ms |
| text-embedding-3-large | 80ms | 200ms |
| Cohere embed-v3 | 60ms | 180ms |
| استضافة ذاتية (GPU) | 10ms | 30ms |
استراتيجية الدفعات
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI()
async def batch_embed(texts, batch_size=100):
"""Efficient batching for large datasets"""
embeddings = []
for i in range(0, len(texts), batch_size):
batch = texts[i:i + batch_size]
response = await client.embeddings.create(
input=batch,
model="text-embedding-3-small"
)
embeddings.extend([e.embedding for e in response.data])
return embeddings
دعم اللغات
نماذج متعددة اللغات
| النموذج | اللغات | الجودة |
|---|---|---|
| text-embedding-3 | 100+ | ممتازة |
| Cohere multilingual | 100+ | ممتازة |
| BGE-m3 | 100+ | ممتازة |
| paraphrase-multilingual | 50+ | جيدة |
نماذج خاصة بلغة
# For specific languages, dedicated models may be better
models_by_language = {
"en": "BAAI/bge-large-en-v1.5",
"zh": "BAAI/bge-large-zh-v1.5",
"multilingual": "BAAI/bge-m3"
}
خيارات النشر
الخيار 1: API (موصى به لمعظم الحالات)
# Pros: No infrastructure, always updated
# Cons: Ongoing cost, latency, data leaves your network
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
الخيار 2: استضافة ذاتية
# Pros: No per-token cost, lower latency, data stays internal
# Cons: Infrastructure cost, maintenance
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('BAAI/bge-large-en-v1.5')
# Load once, use many times
الخيار 3: هجين
# Use self-hosted for high volume, API for edge cases
def get_embeddings(texts, use_api=False):
if use_api or len(texts) < 10:
return api_embeddings.embed_documents(texts)
else:
return local_model.encode(texts)
قائمة اختيار
| العامل | السؤال | التوصية |
|---|---|---|
| الميزانية | الميزانية الشهرية؟ | >100 دولار: API، <100 دولار: استضافة ذاتية |
| الحجم | وثائق/شهر؟ | >10M: فكّر في الاستضافة الذاتية |
| زمن الاستجابة | هل تحتاج وقتًا حقيقيًا؟ | <20ms: الاستضافة الذاتية لازمة |
| اللغات | متعدد اللغات؟ | استخدم نماذج متعددة اللغات |
| الخصوصية | حساسية البيانات؟ | استضافة ذاتية إذا كانت حرجة |
| الجودة | هل الدقة حرجة؟ | ادفع مقابل أفضل نموذج |
مصفوفة التوصيات
| حالة الاستخدام | النموذج الموصى به |
|---|---|
| شركة ناشئة / MVP | text-embedding-3-small |
| مؤسسة (جودة) | text-embedding-3-large |
| مؤسسة (تكلفة) | BGE-large (استضافة ذاتية) |
| متعدد اللغات | Cohere multilingual |
| طرف / دون اتصال | all-MiniLM-L6-v2 |
| أقصى جودة | Cohere embed-v3 |
ملخص
- ابدأ بـ API (OpenAI small) للنماذج الأولية
- قيّم درجات MTEB لنوع مهمتك
- احسب التكاليف عند نطاقك المتوقع
- فكّر في الاستضافة الذاتية عند الحجم الكبير
- اختبر ببياناتك قبل الالتزام
الخطوات التالية
اختبر معرفتك عبر اختبار الوحدة 3!