Metrici de Calitate a Regăsirii (Recall@K, MRR & NDCG) în Baze de Date Vectoriale & Căutare Semantică

Benchmark și Calitate RAG Standard IR & RAG Evaluation

Metricile științifice fundamentale pentru evaluarea calității bazei vectoriale și a algoritmilor de căutare semantică.

Sintaxă & interogare
Formule matematice de evaluare a regăsirii informației (IR)

Majoritatea echipelor care construiesc sisteme RAG evaluează căutarea doar prin câteva teste manuale (‘Pare că funcționează bine’). În producție, această abordare empirică duce rapid la degradarea calității pe măsură ce baza crește. Optimizarea unui sistem de regăsire necesită metrici cantitative din Information Retrieval (IR).

Cele trei metrici fundamentale sunt: Recall@K (procentul de documente relevante regăsite în primele K rezultate returnate), MRR (Mean Reciprocal Rank) (măsoară cât de sus în listă apare primul document cu adevărat corect), și NDCG (Normalized Discounted Cumulative Gain) (evaluează dacă documentele foarte relevante sunt plasate deasupra celor parțial relevante, penalizând pozițiile inferioare prin logaritm).

Măsurarea continuă a acestor metrici pe un set de test de 100-500 de întrebări standard permite validarea matematică a oricărei schimbări: alegerea unui model de embedding nou, trecerea la căutare hibridă sau ajustarea dimensiunii fragmentelor (chunk size).

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
Recall@K Raportul: `|Documente relevante găsite în top K| / |Total documente relevante existente|`.
MRR (Mean Reciprocal Rank) Media valorilor `1 / rang`, unde rang este poziția primei potriviri corecte.
NDCG@K Scor între 0 și 1 ce reflectă calitatea ordonării ierarhice a rezultatelor ponderată logaritmic.
Ground Truth Dataset Setul de date etichetat ce asociază fiecare întrebare cu ID-urile fragmentelor corecte.
MTEB Benchmark Standardul global deschis (Massive Text Embedding Benchmark) ce folosește aceste metrici.

Exemple practice și configurații

Exemplul 1: Calculul metricilor MRR și Recall@5 în Python pentru evaluarea căutării

Script simplu ce măsoară eficiența unui motor de căutare vectorială.

def calculeaza_mrr(rezultate_gasite, id_corect):
    for i, doc_id in enumerate(rezultate_gasite, 1):
        if doc_id == id_corect:
            return 1.0 / i
    return 0.0

def calculeaza_recall_la_k(rezultate_gasite, id_corect, k=5):
    return 1.0 if id_corect in rezultate_gasite[:k] else 0.0

# Exemplu: primul document corect (ID 42) a fost găsit pe poziția 2 dintr-un top 5:
top5 = [99, 42, 105, 12, 88]
print("MRR:", calculeaza_mrr(top5, 42))        # Ieșire: 0.5 (1/2)
print("Recall@5:", calculeaza_recall_la_k(top5, 42, 5)) # Ieșire: 1.0

Rezultat & Impact

Metrici clare și comparabile pentru benchmark-ul oricărei configurații RAG.

Greșeli frecvente și bune practici

  • Optimizarea exclusivă pentru Recall@K ignorând MRR, ceea ce poate returna fragmentul critic pe locul 10, forțând LLM-ul să citească mult zgomot.
  • Evaluarea sistemului pe întrebări create sintetic de același model LLM folosit și în producție, generând date de test nerealiste.

Ghiduri și noțiuni înrudite