Mozaïek AI Agent Evaluation LLM beoordeelt verwijzing
Belangrijk
Deze functie is beschikbaar als openbare preview.
In dit artikel worden de details besproken van elk van de LLM-rechters die zijn ingebouwd in De evaluatie van de Mozaïek AI-agent, inclusief vereiste invoer- en uitvoergegevens. Ook wordt de uitvoer behandeld die door aangepaste rechters wordt geproduceerd.
Zie Hoe kwaliteit, kosten en latentie worden beoordeeld door agentevaluatie voor een inleiding tot LLM-rechters.
Notitie
Voor gesprekken met meerdere beurten evalueren LLM-beoordelaars alleen de laatste bijdrage in het gesprek.
In de volgende table worden de ingebouwde rechters vermeld:
Naam van de rechter | Stap | Kwaliteitsaspect dat de rechter beoordeelt |
---|---|---|
relevance_to_query |
Antwoord | Is het antwoord relevant voor de aanvraag van de gebruiker? |
groundedness |
Antwoord | Is het gegenereerde antwoord gebaseerd op de opgehaalde context (zonder hallucinaties)? |
safety |
Antwoord | Is er schadelijke of giftige inhoud in het antwoord? |
correctness |
Antwoord | Is het gegenereerde antwoord nauwkeurig (vergeleken met de grondwaar)? |
guideline_adherence |
Antwoord | Voldoet het gegenereerde antwoord aan de opgegeven richtlijnen? |
chunk_relevance |
Ophalen | heeft de retriever segmenten gevonden die nuttig (relevant) zijn bij het beantwoorden van de aanvraag van de gebruiker? |
document_recall |
Ophalen | Hoeveel van de bekende relevante documenten heeft de retriever gevonden? |
context_sufficiency |
Ophalen | heeft de retriever documenten met voldoende informatie gevonden om het verwachte antwoord te produceren? |
Antwoordrechters
Metrische gegevens over de responskwaliteit beoordelen hoe goed de toepassing reageert op de aanvraag van een gebruiker. Deze metrische gegevens evalueren factoren zoals de nauwkeurigheid van het antwoord in vergelijking met de grondwaar, of het antwoord goed is geaard op basis van de opgehaalde context (of als de LLM hallucineert), en of het antwoord veilig en vrij van giftige taal is.
Heeft de LLM over het algemeen een nauwkeurig antwoord verstrekt?
De correctness
LLM-rechter geeft een binaire evaluatie en schriftelijke logica over of het gegenereerde antwoord van de agent feitelijk nauwkeurig en semantisch vergelijkbaar is met het gegeven antwoord op grondwaar.
Invoer vereist voor correctness
De grond waarheid expected_response
is vereist.
De invoerevaluatie set moet aan de volgende columnsvoldoen:
request
expected_response
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven response
of trace
.
Belangrijk
De grondwaar expected_response
moet alleen de minimale set feiten bevatten die nodig zijn voor een juiste reactie. Als u een antwoord van een andere bron kopieert, bewerkt u het antwoord op remove tekst die niet is vereist om een antwoord als correct te laten worden beschouwd.
Door alleen de vereiste informatie op te geven en informatie weg te laten die niet strikt vereist is in het antwoord, kan agentevaluatie een robuuster signaal over de uitvoerkwaliteit bieden.
Uitvoer voor correctness
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/correctness/rating |
string |
yes of no .
yes geeft aan dat het gegenereerde antwoord zeer nauwkeurig en semantisch vergelijkbaar is met de grondwaar. Kleine weglatingen of onnauwkeurigheden die nog steeds de bedoeling van de grondwaar vastleggen, zijn aanvaardbaar.
no geeft aan dat het antwoord niet voldoet aan de criteria. |
response/llm_judged/correctness/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/correctness/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
response/llm_judged/correctness/rating/percentage |
float, [0, 1] |
Voor alle vragen wordt percentage where juistheid beoordeeld als yes . |
Is het antwoord relevant voor de aanvraag?
De relevance_to_query
LLM-rechter bepaalt of het antwoord relevant is voor de invoeraanvraag.
Invoer vereist voor relevance_to_query
Grondwaar is niet vereist.
De invoerevaluatie set moet de volgende columnhebben:
request
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven response
of trace
.
Uitvoer voor relevance_to_query
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/relevance_to_query/rating |
string |
yes als het antwoord relevant is voor het verzoek, no anders. |
response/llm_judged/relevance_to_query/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/relevance_to_query/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
response/llm_judged/relevance_to_query/rating/percentage |
float, [0, 1] |
Voor alle vragen wordt het percentage whererelevance_to_query/rating beoordeeld als yes . |
Is het antwoord een hallucinatie of is het geaard in de opgehaalde context?
De groundedness
LLM-rechter retourneert een binaire evaluatie en schriftelijke logica over of het gegenereerde antwoord feitelijk consistent is met de opgehaalde context.
Invoer vereist voor groundedness
Grondwaar is niet vereist.
De invoerevaluatie set moet de volgende columnbevatten:
request
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een trace
of beide response
en retrieved_context[].content
.
Uitvoer voor groundedness
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/groundedness/rating |
string |
yes als de opgehaalde context alle of bijna alle gegenereerde antwoorden ondersteunt, no anders. |
response/llm_judged/groundedness/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/groundedness/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
response/llm_judged/groundedness/rating/percentage |
float, [0, 1] |
Wat is het percentage dat wheregroundedness/rating als yes wordt beoordeeld voor alle vragen? |
Voldoet het gegenereerde antwoord aan de opgegeven richtlijnen?
De guideline_adherence
LLM-rechter retourneert een binaire evaluatie en schriftelijke onderbouwing over de vraag of het gegenereerde antwoord voldoet aan de guidelines
.
Invoer vereist voor guideline_adherence
Grondwaar is niet vereist.
De invoerevaluatie set moet aan de volgende columnsvoldoen:
request
guidelines
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven trace
of response
. Sommige richtlijnen kunnen wereldwijd van toepassing zijn op uw volledige evaluatie set. In plaats van deze richtlijnen voor elke evaluatie te kopiëren, kunt u als volgt global_guidelines
opgeven in de evaluatorconfiguratie:
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
]
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
],
}
}
)
Uitvoer voor guideline_adherence
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/guideline_adherence/rating |
string |
yes als het antwoord voldoet aan alle richtlijnen, no anders. |
response/llm_judged/guideline_adherence/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/guideline_adherence/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
response/llm_judged/global_guideline_adherence/rating |
string |
yes als het antwoord voldoet aan alle algemene richtlijnen, no anders. |
response/llm_judged/global_guideline_adherence/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/global_guideline_adherence/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
| Metrieknaam | Type | Beschrijving | |—–|—|—| | response/llm_judged/guideline_adherence/rating/percentage
| float, [0, 1]
| Wat is het percentage dat whereguideline_adherence/rating
wordt beoordeeld als yes
voor alle vragen.
|
response/llm_judged/global_guideline_adherence/rating/percentage
|
float, [0, 1]
| Wat is het percentage waarbij whereglobal_guideline_adherence/rating
wordt beoordeeld als yes
voor alle vragen.
Is er schadelijke inhoud in het antwoord van de agent?
De safety
LLM-rechter retourneert een binaire classificatie en een schriftelijke logica over of het gegenereerde antwoord schadelijke of giftige inhoud heeft.
Invoer vereist voor safety
Grondwaar is niet vereist.
De invoerevaluatie set moet aan de volgende columnvoldoen.
request
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven response
of trace
.
Uitvoer voor safety
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/safety/rating |
string |
yes als het antwoord geen schadelijke of giftige inhoud heeft, no anders. |
response/llm_judged/safety/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/safety/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
response/llm_judged/safety/rating/average |
float, [0, 1] |
Percentage van alle vragen die werden beoordeeld.yes |
Rechters ophalen
Metrische gegevens over kwaliteit ophalen beoordelen de prestaties van de retriever bij het vinden van de documenten die relevant zijn voor de invoeraanvraag. Deze metrische gegevens evalueren factoren zoals: Heeft de retriever de relevante segmenten gevonden? Hoeveel van de bekende relevante documenten zijn er gevonden? Waren de documenten voldoende om het verwachte antwoord te produceren?
Heeft de retriever relevante segmenten gevonden?
De chunk-relevance-precision
LLM-rechter bepaalt of de segmenten die door de retriever worden geretourneerd relevant zijn voor de invoeraanvraag. Precisie wordt berekend als het aantal relevante segmenten dat wordt geretourneerd gedeeld door het totale aantal geretourneerde segmenten. Als de retriever bijvoorbeeld vier segmenten retourneert en de LLM-rechter bepaalt dat drie van de vier geretourneerde documenten relevant zijn voor de aanvraag, is dat llm_judged/chunk_relevance/precision
0,75.
Invoer vereist voor llm_judged/chunk_relevance
Grondwaar is niet vereist.
De invoerevaluatie set moet het volgende columnbevatten:
request
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven retrieved_context[].content
of trace
.
Uitvoer voor llm_judged/chunk_relevance
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
retrieval/llm_judged/chunk_relevance/ratings |
array[string] |
Voor elk segment of yes no , waarmee wordt aangegeven of het opgehaalde segment relevant is voor de invoeraanvraag. |
retrieval/llm_judged/chunk_relevance/rationales |
array[string] |
Voor elk segment beredeert LLM de redenering voor de bijbehorende classificatie. |
retrieval/llm_judged/chunk_relevance/error_messages |
array[string] |
Als er voor elk segment een fout is opgetreden bij het berekenen van de classificatie, zijn de details van de fout hier en zijn andere uitvoer values NULL. Als er geen fout optreedt, is dit NULL. |
retrieval/llm_judged/chunk_relevance/precision |
float, [0, 1] |
Berekent het percentage relevante segmenten tussen alle opgehaalde segmenten. |
De volgende metrische gegevens worden gerapporteerd voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
retrieval/llm_judged/chunk_relevance/precision/average |
float, [0, 1] |
De gemiddelde waarde van chunk_relevance/precision alle vragen. |
Hoeveel van de bekende relevante documenten heeft de retriever gevonden?
document_recall
wordt berekend als het aantal relevante documenten dat wordt geretourneerd, gedeeld door het totale aantal relevante documenten op basis van grondwaar. Stel dat twee documenten relevant zijn op basis van grondwaar. Als de retriever een van deze documenten retourneert, document_recall
is dit 0,5. Deze metrische waarde wordt niet beïnvloed door het totale aantal geretourneerde documenten.
Deze metrische waarde is deterministisch en gebruikt geen LLM-rechter.
Invoer vereist voor document_recall
Grond waarheid is vereist.
De invoerevaluatie set moet de volgende columnhebben:
expected_retrieved_context[].doc_uri
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven retrieved_context[].doc_uri
of trace
.
Uitvoer voor document_recall
De volgende metrische waarde wordt berekend voor elke vraag:
Gegevensveld | Type | Description |
---|---|---|
retrieval/ground_truth/document_recall |
float, [0, 1] |
Het percentage grondwaar doc_uris dat aanwezig is in de opgehaalde segmenten. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
retrieval/ground_truth/document_recall/average |
float, [0, 1] |
De gemiddelde waarde van document_recall alle vragen. |
Heeft de retriever documenten gevonden die voldoende zijn om het verwachte antwoord te produceren?
De context_sufficiency
LLM-rechter bepaalt of de retriever documenten heeft opgehaald die voldoende zijn om het verwachte antwoord te produceren.
Invoer vereist voor context_sufficiency
Grond waarheid expected_response
is vereist.
De invoerevaluatie set moet de volgende columnsbevatten:
request
expected_response
Als u het argument in de aanroep model
niet gebruiktmlflow.evaluate()
, moet u ook een van beide opgeven retrieved_context[].content
of trace
.
Uitvoer voor context_sufficiency
De volgende metrische gegevens worden voor elke vraag berekend:
Gegevensveld | Type | Description |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating |
string |
yes of no .
yes geeft aan dat de opgehaalde context voldoende is om het verwachte antwoord te produceren.
no geeft aan dat het ophalen moet worden afgestemd op deze vraag, zodat deze de ontbrekende informatie terugbrengt. In de uitvoerreden moet worden vermeld welke informatie ontbreekt. |
retrieval/llm_judged/context_sufficiency/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
retrieval/llm_judged/context_sufficiency/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating/percentage |
float, [0, 1] |
Percentage where contextsufficiëntie wordt beoordeeld als yes . |
Metrische gegevens voor aangepaste rechters
U kunt een aangepaste rechter maken om evaluaties uit te voeren die specifiek zijn voor uw use-case. Zie Aangepaste LLM-rechters maken voor meer informatie.
De uitvoer die door een aangepaste rechter wordt geproduceerd, is afhankelijk van de assessment_type
of ANSWER
RETRIEVAL
.
Aangepaste LLM-rechter voor ANSWER-evaluatie
Een aangepaste LLM-rechter voor ANSWER-evaluatie evalueert het antwoord voor elke vraag.
Uitvoer voor elke evaluatie:
Gegevensveld | Type | Description |
---|---|---|
response/llm_judged/{assessment_name}/rating |
string |
yes of no . |
response/llm_judged/{assessment_name}/rationale |
string |
De schriftelijke redenering van LLM voor yes of no . |
response/llm_judged/{assessment_name}/error_message |
string |
Als er een fout is opgetreden bij het berekenen van deze metrische gegevens, vindt u hier details van de fout. Als er geen fout optreedt, is dit NULL. |
De volgende metrische waarde wordt berekend voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
response/llm_judged/{assessment_name}/rating/percentage |
float, [0, 1] |
Voor alle vragen wordt het percentage where {assessment_name} beoordeeld als yes . |
Aangepaste LLM-rechter voor EVALUATIE VAN OPHALEN
Een aangepaste LLM-rechter voor de evaluatie van HET OPHALEN VAN GEGEVENS evalueert elke opgehaalde chunk voor alle vragen.
Uitvoer voor elke evaluatie:
Gegevensveld | Type | Description |
---|---|---|
retrieval/llm_judged/{assessment_name}/ratings |
array[string] |
Evaluatie van de aangepaste rechter voor elk segment,yes of no . |
retrieval/llm_judged/{assessment_name}/rationales |
array[string] |
Voor elk segment heeft LLM geschreven redenering voor yes of no . |
retrieval/llm_judged/{assessment_name}/error_messages |
array[string] |
Voor elk segment, als er een fout is opgetreden bij het berekenen van deze metriek, zijn de details van de fout hier beschikbaar en zijn andere values NULL. Als er geen fout optreedt, is dit NULL. |
retrieval/llm_judged/{assessment_name}/precision |
float, [0, 1] |
Percentage van alle opgehaalde segmenten die de aangepaste rechter heeft geëvalueerd als yes . |
Gerapporteerde metrische gegevens voor de volledige evaluatie-set:
Naam van meetwaarde | Type | Description |
---|---|---|
retrieval/llm_judged/{assessment_name}/precision/average |
float, [0, 1] |
De gemiddelde waarde van {assessment_name}_precision alle vragen. |