Alphalens / eval.py
ashish1265659565's picture
Init HF
c650d43
Raw
History Blame Contribute Delete
2.11 kB
import asyncio
import json
from typing import Dict, Any
from src.utils.config import Config
from src.utils.rag_service import run_rag_query
from src.utils.grader import grade_documents, grade_hallucination, grade_answer_relevance
def evaluate_system():
queries = Config.EVALUATE_DEFAULT_QUERIES
results = []
total_queries = len(queries)
context_relevance_pass = 0
hallucination_pass = 0
answer_relevance_pass = 0
for query in queries:
print(f"Evaluating: {query}")
try:
# 1. Run RAG Query
response = run_rag_query(query)
docs = response.get("results", [])
answer = response.get("answer", "")
# 2. Grade
is_relevant_context = grade_documents(query, docs)
is_grounded = grade_hallucination(answer, docs)
is_relevant_answer = grade_answer_relevance(query, answer)
if is_relevant_context:
context_relevance_pass += 1
if is_grounded:
hallucination_pass += 1
if is_relevant_answer:
answer_relevance_pass += 1
results.append({
"query": query,
"context_relevance": is_relevant_context,
"groundedness": is_grounded,
"answer_relevance": is_relevant_answer
})
except Exception as e:
print(f"Error evaluating '{query}': {e}")
summary = {
"total": total_queries,
"context_relevance_score": context_relevance_pass / total_queries if total_queries > 0 else 0,
"groundedness_score": hallucination_pass / total_queries if total_queries > 0 else 0,
"answer_relevance_score": answer_relevance_pass / total_queries if total_queries > 0 else 0,
"details": results
}
with open("eval_results.json", "w") as f:
json.dump(summary, f, indent=2)
print("Evaluation complete. Results saved to eval_results.json")
if __name__ == "__main__":
evaluate_system()