Multimodel_Rag / scripts /check_ragas_direct_score.py
Dhrumil Parikh
deploy GeminiRAG
cdc55f4
Raw
History Blame Contribute Delete
3.08 kB
"""
Test two approaches:
A) Old ragas.metrics + LangchainLLMWrapper + evaluate()
B) Collections metrics + ascore() called directly per metric
"""
import warnings; warnings.filterwarnings("ignore")
import sys; sys.path.insert(0, r'C:\Users\Dhrumil.parikh\OneDrive - Taazaa Tech Pvt Ltd\Desktop\playbook_final\geminirag')
from dotenv import load_dotenv; load_dotenv()
from app.config import settings
# === Approach A: old ragas.metrics with LangchainLLMWrapper ===
print("=== Approach A: old ragas.metrics + LangchainLLMWrapper ===")
try:
from ragas import EvaluationDataset, SingleTurnSample, evaluate
from ragas.metrics import Faithfulness, AnswerRelevancy, ContextPrecision, ContextRecall
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
from langchain_groq import ChatGroq
from langchain_community.embeddings import FastEmbedEmbeddings
llm = LangchainLLMWrapper(ChatGroq(model=settings.GROQ_MODEL, api_key=settings.GROQ_API_KEY))
emb = LangchainEmbeddingsWrapper(FastEmbedEmbeddings(model_name=settings.EMBEDDING_MODEL))
sample = SingleTurnSample(
user_input="What is the capital of France?",
response="The capital of France is Paris.",
retrieved_contexts=["Paris is the capital and most populous city of France."],
reference="Paris is the capital of France.",
)
dataset = EvaluationDataset(samples=[sample])
result = evaluate(
dataset=dataset,
metrics=[Faithfulness(), AnswerRelevancy(), ContextPrecision(), ContextRecall()],
llm=llm,
embeddings=emb,
)
print("Approach A result:")
print(result.to_pandas()[["faithfulness","answer_relevancy","context_precision","context_recall"]].to_string())
except Exception as e:
print(f"Approach A FAILED: {e}")
# === Approach B: collections metrics ascore() directly ===
print("\n=== Approach B: collections metrics + ascore() ===")
try:
import asyncio
from openai import OpenAI
from ragas.llms import llm_factory
from ragas.embeddings import HuggingFaceEmbeddings
from ragas.metrics.collections import Faithfulness as CF, AnswerRelevancy as CAR, ContextPrecision as CCP, ContextRecall as CCR
oai_client = OpenAI(api_key=settings.GROQ_API_KEY, base_url="https://api.groq.com/openai/v1")
llm = llm_factory(model=settings.GROQ_MODEL, provider="openai", client=oai_client)
emb = HuggingFaceEmbeddings(model=settings.EMBEDDING_MODEL)
async def run_scores():
response = "The capital of France is Paris."
contexts = ["Paris is the capital and most populous city of France."]
reference = "Paris is the capital of France."
f = await CF(llm=llm).ascore(response=response, retrieved_contexts=contexts)
ar = await CAR(llm=llm, embeddings=emb).ascore(response=response, retrieved_contexts=contexts)
print(f"Faithfulness: {f}, AnswerRelevancy: {ar}")
asyncio.run(run_scores())
except Exception as e:
print(f"Approach B FAILED: {e}")
import traceback; traceback.print_exc()