EncouRAGe - Lokale RAG-Evaluierungs-Spickzettel
EncouRAGe ist ein quelloffenes Framework zur Evaluierung von Retrieval-Augmented-Generation (RAG)-Pipelines mit Schwerpunkt auf die Ausführung lokal, schnell und zuverlässig. Während viele RAG-Evaluierer an gehostete Judge-Modelle anrufen, ist EncouRAGe darauf ausgelegt, Abruf- und Generierungsmetriken auf Ihrer eigenen Hardware zu berechnen, Evaluierungsdaten privat zu halten und Ergebnisse reproduzierbar zu machen. Es passt zum 2026-Muster, bei dem RAG-Qualität als messerbare Engineeringeigenschaft behandelt wird, anstatt als Vibe.
Evaluierungs-Frameworks entwickeln sich schnell. Behandeln Sie die folgenden Befehle als die Form des Workflows und bestätigen Sie exakte Flags gegen die aktuellen Dokumentationen.
Installation
| Methode | Befehl |
|---|
| pip | pip install encourage |
| Aus Quelle | Repo git clone, dann pip install -e . |
| Lokale Judge-Modelle | Modelle über Ihre lokale Laufzeit ziehen (z.B. Ollama/vLLM) |
| Verifizieren | python -c "import encourage; print('ok')" |
Warum lokale Evaluierung
| Vorteil | Warum es wichtig ist |
|---|
| Datenschutz | Deine Dokumente/Anfragen verlassen nie deinen Computer |
| Reproduzierbarkeit | Gleiches Modell + Seed → gleiche Scores |
| Kosten | Keine Pro-Eval-API-Abrechnung |
| Geschwindigkeit | Batch lokal ohne Rate-Limits |
Was wird gemessen
Die RAG-Evaluierung spaltet sich in die zwei Hälften der Pipeline.
| Hälfte | Metriken |
|---|
| Abruf | Context-Präzision, Context-Rückruf, Hit-Rate, MRR/NDCG |
| Generierung | Treue (Verankerung), Antwort-Relevanz, Korrektheit |
| End-zu-End | Ob die endgültige Antwort richtig und unterstützt ist |
Kern-Workflow
# Konzeptioneller Fluss: Datensatz zusammenstellen, RAG ausführen, Punktzahl erhalten
import encourage
dataset = encourage.load_dataset("eval_questions.jsonl") # question, ground_truth, contexts
results = encourage.evaluate(
dataset=dataset,
metrics=["faithfulness", "answer_relevance",
"context_precision", "context_recall"],
judge_model="local/llama-3.1-8b-instruct", # runs locally
)
print(results.summary()) # per-metric scores
results.to_json("eval.json")
| Schritt | Zweck |
|---|
| Datensatz | Fragen + (optional) Ground-Truth + abgerufene Kontexte |
| Metriken | Welche Abruf-/Generierungsdimensionen zu bewerten |
| Judge-Modell | Das lokale LLM, das für LLM-as-Judge-Metriken verwendet wird |
| Ergebnisse | Aggregat + Pro-Example-Scores, exportierbar |
Evaluierungs-Datensatz bauen
| Feld | Bedeutung |
|---|
question | Die Benutzerabfrage |
contexts | Chunks, die Ihr Retriever zurückgegeben hat |
answer | Die generierte Antwort Ihrer Pipeline |
ground_truth | Referenz-Antwort (für Korrektheit/Rückruf) |
Ernte echte Fragen aus Produktions-Traces, um die Evaluierung repräsentativ zu machen.
Ergebnisse interpretieren
| Symptom | Wahrscheinliche Ursache |
|---|
| Niedriger Context-Rückruf | Retriever verpasst relevante Chunks (Chunking/Embedding) |
| Niedrige Context-Präzision | Zu viel irrelevanter Context abgerufen (Reranking hinzufügen) |
| Niedrige Treue | Modell halluziniert über den Kontext hinaus |
| Niedrige Antwort-Relevanz | Antwort driftet von der Frage weg (Prompt/Query-Thema) |
Integration in CI
# Gate eine RAG-Änderung auf Evaluierungs-Scores
python run_eval.py --dataset eval.jsonl --min-faithfulness 0.85 \
--min-context-recall 0.8 || exit 1
Führe denselben Evaluierungssatz bei jeder Abruf-/Prompt-/Modelländerung durch, sodass Rückgänge vor dem Versand gefangen werden.
EncouRAGe im Vergleich zu anderen RAG-Evaluierern
| Aspekt | EncouRAGe | RAGAS | TruLens | DeepEval |
|---|
| Betonung | Lokal, schnell, reproduzierbar | Referenzlose RAG-Metriken | Monitoring + OTel-Tracing | Unit-Test-Denkweise, CI |
| Judge | Lokale Modelle | Konfigurierbar | Konfigurierbar | Konfigurierbar |
| Best für | Private, On-Prem-Eval | Schnelle RAG-Bewertung | Production-Monitoring | Pytest-Style-CI-Gates |
Konzeptuell Paarung mit RAGAS, TruLens und DeepEval — wähle basierend auf, ob du lokale Datenschutz, schnelle Metriken, Monitoring oder CI-Gating benötigst.
Ressourcen