Ocena RAG (RAGAS, Recall@K)
Mierz wierność, trafność odpowiedzi, precyzję kontekstu i recall@K, aby sprawdzić, czy wprowadzone zmiany pomagają.
Ocena RAG (RAGAS, Recall@K) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Nie można ulepszyć tego, czego nie można zmierzyć
RAG ma wiele parametrów: rozmiar fragmentu, top-K, reranker, prompt, model. Bez metryk każda zmiana jest zgadywaniem.
Kluczowe metryki RAG
- Pobieranie: czy pobraliśmy właściwe fragmenty?
- Wierność: czy odpowiedź pozostaje oparta na fragmentach?
- Trafność odpowiedzi: czy odpowiedź odnosi się do pytania?
- Precyzja/pełność kontekstu: jaki odsetek pobranych fragmentów jest użyteczny
Recall@K
Należy utworzyć referencyjny zbiór par (pytanie, lista identyfikatorów istotnych fragmentów). Następnie zmierzyć, jak często wśród pobranych fragmentów top-K znajduje się co najmniej jeden istotny:
def recall_at_k(eval_set, k=5):
hits = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
if any(c.id in item['relevant_ids'] for c in retrieved):
hits += 1
return hits / len(eval_set)Precision@K
Jaka część pobranych fragmentów jest istotna?
def precision_at_k(eval_set, k=5):
total_relevant = 0
total_retrieved = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
total_relevant += sum(1 for c in retrieved if c.id in item['relevant_ids'])
total_retrieved += k
return total_relevant / total_retrievedMRR (średnia odwrotność rangi)
Jak wysoko w rankingu znajduje się PIERWSZY istotny dokument?
def mrr(eval_set, k=10):
total = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
for rank, c in enumerate(retrieved, start=1):
if c.id in item['relevant_ids']:
total += 1 / rank
break
return total / len(eval_set)Wierność (LLM-as-Judge)
Należy użyć LLM do sprawdzenia, czy każde twierdzenie w odpowiedzi jest poparte przez kontekst:
judge_prompt = '''
Given the context and answer, identify each factual claim in the answer.
For each claim, judge whether the context supports it.
Return {claims: [{claim, supported: true/false}]}.
'''
result = judge_llm.invoke(judge_prompt.format(context=ctx, answer=ans))Trafność odpowiedzi
Ocena odwrotna: należy zapytać LLM „Czy ta odpowiedź mogłaby być odpowiedzią na to pytanie?”. Pozwala wykrywać odpowiedzi nie na temat.
Framework RAGAS
RAGAS automatyzuje powyższe metryki:
# pip install ragas
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
results = evaluate(
dataset, # HF dataset with question, contexts, answer, ground_truth
metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(results)Tworzenie zbioru referencyjnego
20–200 krotek (pytanie, oczekiwana odpowiedź, istotne fragmenty) wyselekcjonowanych przez ludzi. Należy uwzględnić:
- Typowe zapytania
- Przypadki brzegowe
- Dane adversarialne (pytania spoza korpusu)
Syntetyczne zbiory ewaluacyjne
Inicjalizacja: należy poprosić LLM o wygenerowanie par pytań i odpowiedzi na podstawie dokumentów. Jakość będzie niższa, ale proces szybszy:
synth_prompt = 'Read this document and write 3 questions a user might ask, with answers from the doc:\n{doc}'
# Use as a starting point; humans curate later.
print(synth_prompt)
Zbiory danych LangSmith i Langfuse
Oba narzędzia pozwalają przekształcać ślady produkcyjne w zbiory ewaluacyjne. Należy wybrać 50 rzeczywistych pytań, dla których uzyskano słabe wyniki, oznaczyć poprawne odpowiedzi i użyć tego zbioru jako punktu odniesienia.
Nie optymalizować nadmiernie jednej metryki
Maksymalizowanie Recall@K może pogorszyć Precision@K, powodując zbyt wiele wyników fałszywie dodatnich. Należy śledzić wiele metryk oraz metrykę złożoną.
Testy A/B na produkcji
Gdy dostępna jest ewaluacja offline skorelowana z zadowoleniem użytkowników, można testować zmiany A/B na produkcji i porównywać zarówno metryki, jak i odsetek pozytywnych ocen użytkowników.
Definicja Recall@K
Co oznacza Recall@5 = 0.8?
Podsumowanie
Należy utworzyć referencyjny zbiór danych. Mierzyć Recall@K, Precision@K, MRR, wierność i trafność odpowiedzi. Używać RAGAS do automatyzacji. Iteracyjnie ulepszać system na podstawie metryk.
Często zadawane pytania
Czy lekcja „Ocena RAG (RAGAS, Recall@K)” jest bezpłatna?
Tak — pełny tekst „Ocena RAG (RAGAS, Recall@K)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Ocena RAG (RAGAS, Recall@K)”?
Mierz wierność, trafność odpowiedzi, precyzję kontekstu i recall@K, aby sprawdzić, czy wprowadzone zmiany pomagają. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Ocena RAG (RAGAS, Recall@K)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Ponowne szeregowanie za pomocą cross-encoderów
- HyDE: embeddingi hipotetycznych dokumentów
- Wyszukiwanie wielowektorowe (ColBERT)
- Ocena RAG (RAGAS, Recall@K)