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

الفصل 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: البحث الهجين.