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

الفصل 2: نماذج Embedding

مقدمة​

اختيار نموذج embedding المناسب حاسم لأداء RAG. يغطّي هذا الفصل أبرز مزوّدي embeddings ونماذجهم.

Embeddings من OpenAI​

text-embedding-3-small​

from openai import OpenAI

client = OpenAI()

response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-small"
)

embedding = response.data[0].embedding # 1536 dimensions
المواصفةالقيمة
الأبعاد1536
أقصى tokens8191
السعر0.02 دولار / مليون token
الجودةجيدة

text-embedding-3-large​

response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-large",
dimensions=3072 # Can reduce: 256, 1024, etc.
)
المواصفةالقيمة
الأبعاد3072 (قابلة للضبط)
أقصى tokens8191
السعر0.13 دولار / مليون token
الجودةممتازة

تقليل الأبعاد​

# Reduce dimensions for efficiency
response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-large",
dimensions=1024 # Reduced from 3072
)
# Still maintains good quality!

Embeddings من Cohere​

embed-v3​

import cohere

co = cohere.Client("your-api-key")

response = co.embed(
texts=["What is RAG?"],
model="embed-english-v3.0",
input_type="search_document" # or "search_query"
)

embeddings = response.embeddings

ميزات أساسية:

  • أوضاع مختلفة للوثائق مقابل الاستعلامات
  • خيارات ضغط
  • دعم متعدد اللغات
المواصفةالقيمة
الأبعاد1024
أقصى tokens512
السعر0.10 دولار / مليون token
الجودةممتازة

أنواع الإدخال​

# For indexing documents
doc_embeddings = co.embed(
texts=documents,
model="embed-english-v3.0",
input_type="search_document"
)

# For search queries
query_embedding = co.embed(
texts=[query],
model="embed-english-v3.0",
input_type="search_query"
)

نماذج المصدر المفتوح​

Sentence Transformers​

from sentence_transformers import SentenceTransformer

# Load model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Generate embeddings
embeddings = model.encode([
"What is RAG?",
"Retrieval Augmented Generation explained"
])

نماذج شائعة:

النموذجالأبعادالجودةالسرعة
all-MiniLM-L6-v2384جيدةسريعة
all-mpnet-base-v2768أفضلمتوسطة
multi-qa-mpnet-base768الأفضل للأسئلة والأجوبةمتوسطة

نماذج BGE (BAAI)​

from sentence_transformers import SentenceTransformer

# BGE models
model = SentenceTransformer('BAAI/bge-large-en-v1.5')

# With instruction prefix (recommended)
queries = ["Represent this sentence for searching: What is RAG?"]
docs = ["Represent this document for retrieval: RAG combines..."]

query_emb = model.encode(queries)
doc_emb = model.encode(docs)
النموذجالأبعاددرجة MTEB
bge-small-en-v1.538462.17
bge-base-en-v1.576863.55
bge-large-en-v1.5102464.23

نماذج E5 (Microsoft)​

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('intfloat/e5-large-v2')

# Requires prefixes
queries = ["query: What is RAG?"]
passages = ["passage: RAG is a technique..."]

الاستخدام مع LangChain​

# OpenAI
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

# Cohere
from langchain.embeddings import CohereEmbeddings
embeddings = CohereEmbeddings(model="embed-english-v3.0")

# HuggingFace
from langchain.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-large-en-v1.5"
)

# Use with vector store
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings
)

جدول المقارنة​

النموذجالمزوّدالأبعادالسعر/مليونالجودةالسرعة
text-embedding-3-smallOpenAI15360.02 دولارجيدةسريعة
text-embedding-3-largeOpenAI30720.13 دولارممتازةمتوسطة
embed-v3Cohere10240.10 دولارممتازةسريعة
bge-large-en-v1.5BAAI1024مجانيممتازةاستضافة ذاتية
all-MiniLM-L6-v2SBERT384مجانيجيدةسريعة جدًا

ملخص​

  • OpenAI - الأفضل لمعظم الحالات، واجهة API سهلة
  • Cohere - جودة ممتازة وتحسين للبحث
  • BGE/E5 - أفضل مصدر مفتوح، استضافة ذاتية
  • MiniLM - سريع وخفيف، كافٍ في كثير من الحالات

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

تابع إلى الفصل 3: اختيار النماذج لإرشادات القرار.