Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
评估者RetrievalGroundedness 判断您的应用程序响应是否由所提供的背景信息(无论是来自 RAG 系统,还是通过工具调用生成)提供事实支持,从而协助发现未被该背景信息支持的幻觉或声明。 此内置 LLM 法官旨在评估需要确保响应以检索到的信息为基础的 RAG 应用程序。
有关 API 的详细信息,请参阅 MLflow 文档。
有关详细文档和其他示例,请参阅 MLflow RetrievalGroundedness 文档。
运行示例的先决条件
安装 MLflow 和所需的包。
%pip install --upgrade "mlflow[databricks]>=3.4.0" dbutils.library.restartPython()请按照设置环境快速入门创建 MLflow 试验。
用法示例
可以直接调用RetrievalGroundedness评估组件进行单一跟踪评估,也可以与 MLflow 的评估框架一起使用进行批量评估。
要求:
-
跟踪要求:
- MLflow 跟踪必须至少包含一个将
span_type设置为RETRIEVER的跨度 -
inputs和outputs必须位于跟踪的根跨度上
- MLflow 跟踪必须至少包含一个将
直接调用
from mlflow.genai.scorers import retrieval_groundedness
import mlflow
# Get a trace from a previous run
trace = mlflow.get_trace("<your-trace-id>")
# Assess if the response is grounded in the retrieved context
feedback = retrieval_groundedness(trace=trace)
print(feedback)
使用 evaluate() 进行调用
import mlflow
from mlflow.genai.scorers import RetrievalGroundedness
# Evaluate traces from previous runs
results = mlflow.genai.evaluate(
data=traces, # DataFrame or list containing trace data
scorers=[RetrievalGroundedness()]
)
RAG 示例
下面是一个完整的示例,演示如何创建 RAG 应用程序并评估响应是否以检索到的上下文为基础:
初始化 OpenAI 客户端以连接到 OpenAI 托管的 LLM。
OpenAI 托管的 LLM
使用本地 OpenAI SDK 连接到由 OpenAI 托管的模型。 从 可用的 OpenAI 模型中选择一个模型。
import mlflow import os import openai # Ensure your OPENAI_API_KEY is set in your environment # os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" # Uncomment and set if not globally configured # Enable auto-tracing for OpenAI mlflow.openai.autolog() # Set up MLflow tracking to Databricks mlflow.set_tracking_uri("databricks") mlflow.set_experiment("/Shared/docs-demo") # Create an OpenAI client connected to OpenAI SDKs client = openai.OpenAI() # Select an LLM model_name = "gpt-4o-mini"定义和评估 RAG 应用程序:
from mlflow.genai.scorers import RetrievalGroundedness 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 based on query if "mlflow" in query.lower(): return [ Document( id="doc_1", page_content="MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models.", metadata={"source": "mlflow_docs.txt"} ), Document( id="doc_2", page_content="MLflow provides tools for experiment tracking, model packaging, and deployment.", metadata={"source": "mlflow_features.txt"} ) ] else: return [ Document( id="doc_3", page_content="Machine learning involves training models on data.", metadata={"source": "ml_basics.txt"} ) ] # Define your RAG app @mlflow.trace def rag_app(query: str): # Retrieve relevant documents docs = retrieve_docs(query) context = "\n".join([doc.page_content for doc in docs]) # Generate response using LLM messages = [ {"role": "system", "content": f"Answer based on this context: {context}"}, {"role": "user", "content": query} ] response = client.chat.completions.create( # This example uses Databricks hosted Claude. If you provide your own OpenAI credentials, replace with a valid OpenAI model e.g., gpt-4o, etc. model=model_name, messages=messages ) return {"response": response.choices[0].message.content} # Create evaluation dataset eval_dataset = [ { "inputs": {"query": "What is MLflow used for?"} }, { "inputs": {"query": "What are the main features of MLflow?"} } ] # Run evaluation with RetrievalGroundedness scorer eval_results = mlflow.genai.evaluate( data=eval_dataset, predict_fn=rag_app, scorers=[ RetrievalGroundedness( model="databricks:/databricks-gpt-oss-120b", # Optional. Defaults to custom Databricks model. ) ] )
选择赋予法官权力的 LLM
默认情况下,此法官使用 Databricks 托管的 LLM 来执行 GenAI 质量评估。 可以通过在法官定义中使用model参数来更改评判模型。 必须以格式 <provider>:/<model-name>指定模型,其中 <provider> 与 LiteLLM 兼容的模型提供程序。 如果使用 databricks 模型提供程序,则模型名称与服务终结点名称相同。
可以通过提供不同的评价模型来定制评审:
from mlflow.genai.scorers import RetrievalGroundedness
# Use a different judge model
groundedness_judge = RetrievalGroundedness(
model="databricks:/databricks-gpt-5-mini" # Or any LiteLLM-compatible model
)
# Use in evaluation
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=rag_app,
scorers=[groundedness_judge]
)
解释结果
法官返回一个 Feedback 对象,其中包含:
-
value:如果响应已停止,则为“是”;如果响应包含幻觉,则为“否” -
rationale:详细说明用于标识:- 上下文支持哪些语句
- 哪些陈述缺乏支持(幻觉)
- 支持或矛盾声明的上下文中的特定引文
后续步骤
- 评估上下文是否足够 - 检查检索器是否提供足够的信息
- 评估上下文相关性 - 确保检索的文档与查询相关
- 运行全面的 RAG 评估 - 合并多个评委以完成 RAG 评估