Juízes de relevância da resposta e do contexto
MLflow fornece dois juízes LLM integrados para avaliar a relevância em seus aplicativos GenAI. Esses juízes ajudam a diagnosticar problemas de qualidade: se o contexto não for relevante, a geração do passo não poderá produzir uma resposta útil.
RelevanceToQuery: avalia se a resposta do seu aplicativo aborda diretamente a entrada do usuárioRetrievalRelevance: avalia se cada documento retornado pelo (s) recuperador (es) do seu aplicativo é relevante
Pré-requisitos para executar os exemplos
-
Instale o site MLflow e o pacote necessário
Python%pip install --upgrade "mlflow[databricks]>=3.4.0" openai "databricks-connect>=16.1"
dbutils.library.restartPython() -
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
RelevanceToQuery juiz
Esse pontuador avalia se a resposta do seu aplicativo aborda diretamente a entrada do usuário sem se desviar para tópicos não relacionados.
Você pode invocar o avaliador diretamente com uma única entrada para teste ou passá-lo para mlflow.genai.evaluate para executar a avaliação completa em um dataset.
Requisitos:
- Requisitos de rastreamento :
inputseoutputsdevem estar na extensão raiz do 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 juiz
Esse marcador avalia se cada documento retornado pelo (s) recuperador (es) do seu aplicativo é relevante para a solicitação de entrada.
Requisitos:
- Requisitos do rastreamento : O rastreamento do MLflow deve conter pelo menos um intervalo com
span_typedefinido comoRETRIEVER
- 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()]
)
Exemplo RAG
Aqui está um exemplo completo mostrando como criar um aplicativo RAG com um recuperador e avaliá-lo:
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.
)
]
)
Selecione o LLM que capacita o juiz.
Por default, esses juízes usam um LLM hospedado Databricks , projetado para realizar avaliações de qualidade do GenAI. Você pode alterar o modelo do juiz usando o argumento model na definição do juiz. O modelo deve ser especificado no formato <provider>:/<model-name>, onde <provider> é um provedor de modelo compatível com LiteLLM. Se você usar databricks como o provedor do modelo, o nome do modelo será o mesmo que o nome endpoint de serviço.
Você pode personalizar esses juízes fornecendo diferentes modelos de juízes:
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-1"
)
# Use in evaluation
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=rag_app,
scorers=[relevance_judge, retrieval_judge]
)
Para obter uma lista dos modelos suportados, consulte a documentação do MLflow.
Interpretar resultados
O juiz retorna um objeto Feedback com:
value: " sim " se o contexto for relevante, " não " se nãorationale: Explicação de por que o juiz considerou o contexto relevante ou irrelevante
Próximos passos
- Explore outros juízes integrados - Saiba mais sobre juízes de aterramento, segurança e correção
- Crie juízes personalizados - Crie juízes especializados para seu caso de uso
- Avalie as inscrições do RAG - Aplique juízes de relevância em uma avaliação abrangente do RAG