الفصل 1: البحث بالتشابه
مقدمة
البحث بالتشابه هو أساس الاسترجاع في أنظمة RAG. يجد الوثائق التي تكون تمثيلاتها المتجهية الأقرب إلى متجه الاستعلام.
مقاييس المسافة
Cosine Similarity
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# Range: -1 to 1 (1 = identical)
المسافة الإقليدية
def euclidean_distance(a, b):
return np.linalg.norm(a - b)
# Range: 0 to infinity (0 = identical)
الجداء الداخلي (Dot Product)
def inner_product(a, b):
return np.dot(a, b)
# For normalized vectors, equivalent to cosine
استرجاع Top-K
from langchain.vectorstores import Chroma
# Create retriever
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 5} # Return top 5 results
)
# Retrieve
docs = retriever.get_relevant_documents("What is RAG?")
عتبات الدرجة
صفِّ حسب حد أدنى للتشابه:
retriever = vectorstore.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={
"score_threshold": 0.7, # Minimum similarity
"k": 10
}
)
Maximum Marginal Relevance (MMR)
وازن بين الصلة والتنوّع:
retriever = vectorstore.as_retriever(
search_type="mmr",
search_kwargs={
"k": 5,
"fetch_k": 20, # Fetch more candidates
"lambda_mult": 0.7 # 1=relevance, 0=diversity
}
)
مقارنة
| الطريقة | الأنسب لـ | المقايضة |
|---|---|---|
| Similarity | استخدام عام | قد تتضمّن نتائج مكرّرة |
| Threshold | تصفية الجودة | قد يعيد نتائج قليلة |
| MMR | نتائج متنوعة | صلة أقل قليلًا |
الخطوات التالية
تابع إلى الفصل 2: البحث الهجين.