Ragas (Retrieval Augmented Generation Assessment) este o bibliotecă open-source pentru evaluarea pipeline-urilor RAG. Pornește de la lucrarea Es et al., 2023, care propune metrici fără adnotări umane de referință; o parte din metricile actuale cer totuși un răspuns de referință (reference).
Metricile principale: Faithfulness (proporția afirmațiilor din răspuns susținute de contextul regăsit), Answer Relevancy (media similarității cosinus dintre întrebare și întrebările generate din răspuns, implicit 3), Context Precision (media precision@k pe fragmentele regăsite, adică dacă fragmentele relevante sunt sus în listă) și Context Recall (proporția afirmațiilor din răspunsul de referință care se regăsesc în context). Scorurile sunt între 0 și 1; la Answer Relevancy documentația notează că intervalul nu e garantat, din cauza cosinusului.
În Ragas 0.4 metricile recomandate se importă din ragas.metrics.collections și se apelează direct cu score() sau ascore(). Câmpurile se numesc user_input, response, retrieved_contexts și reference. API-ul de metrici vechi (from ragas.metrics import ... cu SingleTurnSample) este marcat legacy și va fi eliminat în versiunea 1.0.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
Faithfulness |
Afirmații din response susținute de retrieved_contexts / total afirmații din răspuns. |
AnswerRelevancy |
Cere un LLM și un model de embeddings; numărul de întrebări generate se setează cu strictness (implicit 3). |
ContextPrecision |
Compară fiecare fragment regăsit cu reference. Fără referință există ContextUtilization, care compară fragmentele cu răspunsul generat. |
ContextRecall |
Afirmații din reference atribuibile contextului regăsit / total afirmații din referință. Cere întotdeauna o referință. |
llm_factory(model, client=...) |
Creează LLM-ul judecător folosit de metrici. |
result.value |
Scorul întors de score() sau ascore(). |
Exemple practice și scenarii reale
Exemplul 1: Answer Relevancy
from openai import AsyncOpenAI
from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory
from ragas.metrics.collections import AnswerRelevancy
client = AsyncOpenAI()
llm = llm_factory("gpt-6-luna", client=client)
embeddings = embedding_factory("openai", model="text-embedding-3-small", client=client)
scorer = AnswerRelevancy(llm=llm, embeddings=embeddings)
result = scorer.score(user_input="Cum anulez comanda?", response="Din Contul meu.")
print(result.value)
Exemplul 2: Context Recall față de un răspuns de referință
from ragas.metrics.collections import ContextRecall
result = ContextRecall(llm=llm).score(
user_input="Unde se află Turnul Eiffel?",
retrieved_contexts=["Turnul Eiffel este situat în Paris."],
reference="Turnul Eiffel se află în Paris.",
)
Exemplul 3: Compararea a două dimensiuni de fragment
cauta() este funcția ta de regăsire. Folosește același judecător și același set de întrebări pentru ambele variante.
for chunk_size in (500, 1200):
contexte = cauta(intrebare, chunk_size=chunk_size)
r = ContextRecall(llm=llm).score(
user_input=intrebare, retrieved_contexts=contexte, reference=referinta)
print(chunk_size, r.value)
Greșeli frecvente și capcane
- Copiezi exemple vechi cu
from ragas.metrics import faithfulnessșiDataset.from_dict({"question": ..., "answer": ..., "contexts": ...}). În 0.4 foloseșteragas.metrics.collectionsși câmpurileuser_input,response,retrieved_contexts. - Tratezi un scor ca adevăr absolut. Metricile depind de LLM-ul judecător; compară variante pe același set de date și cu același judecător.
- Evaluezi un sistem în română fără să verifici judecătorul. Citește manual un eșantion de scoruri înainte să te bazezi pe ele.
Întrebări & Exemple practice:
Ragas: evaluarea automată a sistemelor RAGAi o întrebare despre Ragas: evaluarea automată a sistemelor RAG sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.