Juges de pertinence des réponses et du contexte
MLflow fournit deux juges LLM intégrés pour évaluer la pertinence de vos applications GenAI. Ces juges aident à diagnostiquer les problèmes de qualité - si le contexte n'est pas pertinent, l'étape de génération ne peut pas produire de réponse utile.
RelevanceToQuery: évalue si la réponse de votre application répond directement à la saisie de l’utilisateur.RetrievalRelevance: évalue si chaque document renvoyé par le ou les récupérateurs de votre application est pertinent.
Pour les détails de l’API, consultez la documentation MLflow :
Pour une documentation détaillée et des exemples supplémentaires, consultez la documentation MLflow sur les juges de pertinence.
Prérequis pour l'exécution des exemples
-
Installez MLflow et les packages requis.
Python%pip install --upgrade "mlflow[databricks]>=3.4.0" openai "databricks-connect>=16.1"
dbutils.library.restartPython() -
Créez une expérience MLflow en suivant le guide de démarrage rapide de configuration de votre environnement.
RelevanceToQuery juge
Cet évaluateur vérifie si la réponse de votre application répond directement à l'entrée de l'utilisateur sans s'écarter des sujets non pertinents.
Vous pouvez appeler l’évaluateur directement avec une seule entrée pour les tests, ou le transmettre à mlflow.genai.evaluate pour exécuter une évaluation complète sur un dataset.
Exigences :
- Exigences de trace :
inputsetoutputsdoivent se trouver sur le span racine de la Trace
- Invoke directly
- Invoke with evaluate()
import mlflow
from mlflow.genai.scorers import RelevanceToQuery
assessment = RelevanceToQuery(name="my_relevance_to_query")(
inputs={"question": "What is the capital of France?"},
outputs="The capital of France is Paris.",
)
print(assessment)
import mlflow
from mlflow.genai.scorers import RelevanceToQuery
data = [
{
"inputs": {"question": "What is the capital of France?"},
"outputs": "The capital of France is Paris.",
}
]
result = mlflow.genai.evaluate(data=data, scorers=[RelevanceToQuery()])
RetrievalRelevance juge
Ce scoreur évalue si chaque document renvoyé par le(s) retriever(s) de votre application est pertinent pour la demande d'entrée.
Exigences :
- Exigences de traçage : la trace MLflow doit contenir au moins une étendue avec
span_typedéfini surRETRIEVER
- Invoke directly
- Invoke with evaluate()
from mlflow.genai.scorers import retrieval_relevance
import mlflow
# Get a trace from a previous run
trace = mlflow.get_trace("<your-trace-id>")
# Assess if each retrieved document is relevant
feedbacks = retrieval_relevance(trace=trace)
print(feedbacks)
import mlflow
from mlflow.genai.scorers import RetrievalRelevance
# Evaluate traces from previous runs
results = mlflow.genai.evaluate(
data=traces, # DataFrame or list containing trace data
scorers=[RetrievalRelevance()]
)
Exemple de RAG
Voici un exemple complet montrant comment créer une application RAG avec un retriever et l'évaluer :
import mlflow
from mlflow.genai.scorers import RetrievalRelevance
from mlflow.entities import Document
from typing import List
# Define a retriever function with proper span type
@mlflow.trace(span_type="RETRIEVER")
def retrieve_docs(query: str) -> List[Document]:
# Simulated retrieval - in practice, this would query a vector database
if "capital" in query.lower() and "france" in query.lower():
return [
Document(
id="doc_1",
page_content="Paris is the capital of France.",
metadata={"source": "geography.txt"}
),
Document(
id="doc_2",
page_content="The Eiffel Tower is located in Paris.",
metadata={"source": "landmarks.txt"}
)
]
else:
return [
Document(
id="doc_3",
page_content="Python is a programming language.",
metadata={"source": "tech.txt"}
)
]
# Define your app that uses the retriever
@mlflow.trace
def rag_app(query: str):
docs = retrieve_docs(query)
# In practice, you would pass these docs to an LLM
return {"response": f"Found {len(docs)} relevant documents."}
# Create evaluation dataset
eval_dataset = [
{
"inputs": {"query": "What is the capital of France?"}
},
{
"inputs": {"query": "How do I use Python?"}
}
]
# Run evaluation with RetrievalRelevance scorer
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=rag_app,
scorers=[
RetrievalRelevance(
model="databricks:/databricks-gpt-oss-120b", # Optional. Defaults to custom Databricks model.
)
]
)
Sélectionnez le LLM qui alimente le juge
Par défaut, les juges intégrés utilisent un LLM hébergé par Databricks, conçu pour effectuer des évaluations de la qualité de l'IA. Vous pouvez changer le modèle de juge en utilisant l'argument model lorsque vous créez le juge. Le modèle doit être spécifié au format <provider>:/<model-name>, où <provider> est un fournisseur de modèles compatible LiteLLM. Si vous utilisez databricks comme fournisseur de modèles, le nom du modèle est le même que le nom de l'Endpoint de diffusion.
Vous pouvez personnaliser ces juges en fournissant différents modèles de juges :
from mlflow.genai.scorers import RelevanceToQuery, RetrievalRelevance
# Use different judge models
relevance_judge = RelevanceToQuery(
model="databricks:/databricks-gpt-5-mini" # Or any LiteLLM-compatible model
)
retrieval_judge = RetrievalRelevance(
model="databricks:/databricks-claude-opus-4-5"
)
# Use in evaluation
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=rag_app,
scorers=[relevance_judge, retrieval_judge]
)
Interpréter les résultats
Le juge renvoie un objet Feedback avec :
value: « yes » si le contexte est pertinent, « no » sinonrationale: Explication des raisons pour lesquelles le juge a estimé le contexte pertinent ou non pertinent.
Ressources supplémentaires
- Explorez d'autres juges intégrés - Découvrez les juges de fondement, de sécurité et de précision
- Créer des juges personnalisés - Créez des juges spécialisés pour votre cas d'utilisation
- Évaluer les applications RAG – Appliquer des juges de pertinence dans l’évaluation RAG complète