إنتقل إلى المحتوى الرئيسي

الفصل 3: اختيار نموذج Embedding المناسب

مقدمة​

يعتمد اختيار نموذج embedding المناسب على متطلباتك المحددة: الجودة، والتكلفة، وزمن الاستجابة، ودعم اللغات، وقيود النشر.

إطار القرار​

معايير MTEB​

Massive Text Embedding Benchmark (MTEB) هو المعيار القياسي لمقارنة نماذج embedding:

لوحة الصدارة (أفضل النماذج)​

الترتيبالنموذجالدرجة المتوسطةالأبعاد
1text-embedding-3-large64.593072
2Cohere embed-v364.471024
3BGE-large-en-v1.564.231024
4E5-large-v262.251024
5text-embedding-3-small62.261536

الأداء حسب المهمة​

النموذجالاسترجاعSTSالتصنيف
text-embedding-3-large59.265.471.2
Cohere embed-v358.964.870.1
BGE-large57.863.969.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 SmallOpenAI Largeاستضافة ذاتية
100K وثيقة1 دولار6.50 دولار~50 دولار/شهر (بنية تحتية)
1M وثيقة10 دولار65 دولار~100 دولار/شهر
10M وثيقة100 دولار650 دولار~200 دولار/شهر

اعتبارات زمن الاستجابة​

زمن استجابة API​

النموذجالمتوسطP99
text-embedding-3-small50ms150ms
text-embedding-3-large80ms200ms
Cohere embed-v360ms180ms
استضافة ذاتية (GPU)10ms30ms

استراتيجية الدفعات​

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-3100+ممتازة
Cohere multilingual100+ممتازة
BGE-m3100+ممتازة
paraphrase-multilingual50+جيدة

نماذج خاصة بلغة​

# 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: الاستضافة الذاتية لازمة
اللغاتمتعدد اللغات؟استخدم نماذج متعددة اللغات
الخصوصيةحساسية البيانات؟استضافة ذاتية إذا كانت حرجة
الجودةهل الدقة حرجة؟ادفع مقابل أفضل نموذج

مصفوفة التوصيات​

حالة الاستخدامالنموذج الموصى به
شركة ناشئة / MVPtext-embedding-3-small
مؤسسة (جودة)text-embedding-3-large
مؤسسة (تكلفة)BGE-large (استضافة ذاتية)
متعدد اللغاتCohere multilingual
طرف / دون اتصالall-MiniLM-L6-v2
أقصى جودةCohere embed-v3

ملخص​

  1. ابدأ بـ API (OpenAI small) للنماذج الأولية
  2. قيّم درجات MTEB لنوع مهمتك
  3. احسب التكاليف عند نطاقك المتوقع
  4. فكّر في الاستضافة الذاتية عند الحجم الكبير
  5. اختبر ببياناتك قبل الالتزام

الخطوات التالية​

اختبر معرفتك عبر اختبار الوحدة 3!