الفصل 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 |
| أقصى tokens | 8191 |
| السعر | 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 (قابلة للضبط) |
| أقصى tokens | 8191 |
| السعر | 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 |
| أقصى tokens | 512 |
| السعر | 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-v2 | 384 | جيدة | سريعة |
| all-mpnet-base-v2 | 768 | أفضل | متوسطة |
| multi-qa-mpnet-base | 768 | الأفضل للأسئلة والأجوبة | متوسطة |
نماذج 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.5 | 384 | 62.17 |
| bge-base-en-v1.5 | 768 | 63.55 |
| bge-large-en-v1.5 | 1024 | 64.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-small | OpenAI | 1536 | 0.02 دولار | جيدة | سريعة |
| text-embedding-3-large | OpenAI | 3072 | 0.13 دولار | ممتازة | متوسطة |
| embed-v3 | Cohere | 1024 | 0.10 دولار | ممتازة | سريعة |
| bge-large-en-v1.5 | BAAI | 1024 | مجاني | ممتازة | استضافة ذاتية |
| all-MiniLM-L6-v2 | SBERT | 384 | مجاني | جيدة | سريعة جدًا |
ملخص
- OpenAI - الأفضل لمعظم الحالات، واجهة API سهلة
- Cohere - جودة ممتازة وتحسين للبحث
- BGE/E5 - أفضل مصدر مفتوح، استضافة ذاتية
- MiniLM - سريع وخفيف، كافٍ في كثير من الحالات
الخطوات التالية
تابع إلى الفصل 3: اختيار النماذج لإرشادات القرار.