
Ragas sau DeepEval: același scor de 0,8 poate măsura altceva

Ragas și DeepEval pot evalua același sistem RAG, dar un scor de 0,8 și pragul asociat lui nu se transferă automat între biblioteci. O inspecție a codului Ragas 0.4.3 și DeepEval 4.2.6 arată că metricile cu nume asemănătoare pot folosi formule, pași de clasificare și reguli diferite pentru cazurile fără afirmații extrase. Rezultatele provin din analiza funcțiilor de calcul, nu dintr-un test al performanței pe un sistem RAG real.
Pentru diagnosticarea pasajelor recuperate și a răspunsului generat, ambele biblioteci oferă metrici utile. Ragas pune la dispoziție evaluări distincte ale preciziei, acoperirii și relevanței; DeepEval documentează și teste declarate în suita CI, precum și metrici pentru conversații cu mai multe schimburi. Alegerea depinde de componenta pe care vrei să o măsori și de forma testelor pe care le menții.
Același caz RAG, intrări cu nume diferite
Să luăm un exemplu ipotetic. Un utilizator întreabă dacă un produs permite exportul CSV. Sistemul recuperează mai întâi un pasaj care confirmă funcția, apoi un pasaj fără legătură, însă răspunsul generat adaugă și exportul PDF, pe care contextul recuperat nu îl menționează. Răspunsul de referință, dacă există, spune doar că exportul CSV este disponibil.
În Ragas, întrebarea este user_input, răspunsul generat este response, iar lista pasajelor este retrieved_contexts. În DeepEval, câmpurile corespondente sunt input, actual_output și retrieval_context. Pentru variantele de precizie și acoperire a contextului care folosesc un răspuns așteptat, Ragas cere reference, iar DeepEval cere expected_output. Același conținut și aceeași ordine a pasajelor fac comparația inteligibilă, dar nu fac scorurile echivalente.
Exemplul separă două întrebări care par apropiate. Pasajul despre CSV este util și apare devreme, ceea ce privește recuperarea. Afirmația despre PDF privește generarea: răspunsul poate aborda întrebarea utilizatorului și totuși poate adăuga un detaliu nesusținut de pasajele oferite evaluatorului.
Ce măsoară metricile cu nume asemănătoare
Faithfulness privește sprijinul oferit răspunsului de contextul recuperat. Ragas extrage afirmații din răspuns și verifică dacă pot fi deduse din pasaje. În modul bazat pe un model evaluator, FaithfulnessMetric din DeepEval cere input, actual_output și retrieval_context și calculează proporția afirmațiilor acceptate; evaluatorul extrage informații din context înainte de clasificarea afirmațiilor. Opțiunea penalize_ambiguous_claims poate schimba verdictul pentru afirmațiile ambigue. În cazul ipotetic, afirmația despre PDF este cea care pune problema sprijinului în context.
Relevanța răspunsului privește potrivirea dintre întrebare și răspuns, nu sprijinul din pasajele recuperate. Definiția Ragas pentru Answer Relevancy pornește de la întrebări generate din răspuns și face media similitudinilor dintre reprezentările lor vectoriale și întrebarea inițială. În versiunea examinată, DeepEval extrage afirmații din răspuns și calculează proporția celor considerate relevante pentru întrebare. Prin urmare, un răspuns despre export poate fi relevant chiar dacă menționează o funcție pe care pasajele recuperate nu o susțin.
Context precision privește recuperarea și ordinea pasajelor: pasajele utile ar trebui să apară înaintea celor inutile. Variantele bazate pe răspunsul de referință folosesc acest răspuns pentru a judeca relevanța fiecărui pasaj, apoi calculează o precizie ponderată după poziție. Context recall privește acoperirea: cât din informația necesară pentru răspunsul așteptat se regăsește în contextul recuperat. Ambele cer un răspuns de referință în variantele comparate. În exemplul cu exportul, prima metrică ține seama de poziția pasajului despre CSV; a doua întreabă dacă recuperarea conține informația necesară.
Aceste metrici localizează probleme diferite ale aceluiași flux. Precizia și acoperirea contextului descriu recuperarea; faithfulness și relevanța răspunsului descriu ce face generatorul cu întrebarea și pasajele primite. O valoare ridicată într-o categorie nu înlocuiește verificarea celeilalte.
Răspunsul fără afirmații schimbă calculul
În versiunile inspectate, dacă evaluatorul nu extrage nicio afirmație din răspuns, Ragas întoarce NaN pentru faithfulness, iar DeepEval întoarce scorul maxim. Diferența privește rezultatul extragerii, nu orice refuz formulat în limbaj natural: evaluatorul poate identifica totuși o afirmație într-un asemenea refuz. Ea contează mai ales în seturi care includ răspunsuri goale sau evazive.
Consecința asupra unei medii depinde de aplicația care agregă scorurile. O valoare NaN poate fi omisă sau tratată separat, în timp ce un scor maxim poate intra în medie ca rezultat favorabil. Astfel, două serii evaluate pe aceleași răspunsuri pot produce impresii diferite despre calitate chiar înainte ca modelul evaluator să judece afirmațiile ambigue.
Și pentru cazurile obișnuite, numărătorul și numitorul depind de afirmațiile pe care fiecare evaluator le extrage. În plus, modul de evaluare din DeepEval poate modifica mecanismul de clasificare. Aceste diferențe explică de ce egalitatea numerică dintre două rezultate nu înseamnă că bibliotecile au acceptat aceleași părți ale răspunsului.
De ce un prag nu se mută între biblioteci
Excepția limitată găsită în inspecția codului este context precision: formula a dat rezultate identice pentru cele trei liste de relevanță clasificate folosite în acea verificare. Nu a fost un benchmark cu pasaje reale și judecăți făcute de evaluatori. Dacă bibliotecile clasifică diferit relevanța unui pasaj, chiar și aceeași formulă poate primi intrări diferite și poate produce alte scoruri.
Pentru relevanța răspunsului, diferența de calcul este mai directă: media similitudinilor vectoriale din Ragas și proporția afirmațiilor acceptate de DeepEval exprimă două judecăți distincte. Pentru faithfulness, extragerea afirmațiilor, folosirea informațiilor extrase din context și tratamentul ambiguității pot schimba rezultatul. Un prag stabilit într-o bibliotecă descrie configurația acelui test, nu o limită universală de calitate.
La migrarea unei suite de teste, aceleași întrebări, răspunsuri, pasaje și referințe permit o comparație utilă între rezultate. Versiunea bibliotecii, modelul evaluator, modul de evaluare și regulile pentru valorile nedefinite fac parte din acea comparație. Pragul de acceptare trebuie calibrat din nou pe cazurile evaluate în noua configurație.
Alegerea pentru CI și conversații
Ragas se potrivește unui flux în care vrei să analizezi separat recuperarea și generarea pe un set de exemple, apoi să folosești scorurile în teste. Ghidul Ragas pentru pytest arată un apel evaluate() cu in_ci=True și aserțiuni asupra rezultatelor. Așadar, posibilitatea de a rula evaluări în CI nu este exclusivă celeilalte biblioteci.
DeepEval oferă o formă directă pentru teste RAG declarate individual și pentru conversații. Ghidul DeepEval pentru RAG folosește assert_test și comanda deepeval test run; pentru conversații descrie, între altele, TurnFaithfulnessMetric și TurnContextualPrecisionMetric. Fiecare schimb relevant poate avea propriul retrieval_context, astfel încât verificarea ține seama de pasajele disponibile în acel moment al conversației.
Dacă problema principală este ordinea pasajelor sau lipsa unor informații recuperate, precizia și acoperirea contextului oferă un diagnostic mai apropiat de cauză. Dacă problema este un răspuns nesusținut ori unul care ocolește întrebarea, faithfulness și relevanța răspunsului sunt mai potrivite. Biblioteca se alege apoi după forma cazurilor și a integrării dorite, iar pragurile se păstrează legate de metrica și configurația în care au fost stabilite.
Citește și:
Articole similare


Urmele agentului IA pot salva prompturi sensibile: observabilitate fără scurgeri

RAG sau fine-tuning: datele noi și comportamentul cer soluții diferite

Qdrant sau Weaviate: 4,55 ms nu bat automat un recall de 99%

NotebookLM sau ChatGPT Study Mode: sursele și dialogul cer alegeri diferite

Cum verifici sursele unui răspuns IA înainte să-l publici
Abonează-te la newsletter
Primește cele mai noi știri despre Web3, IA și cripto direct în inbox.