Dokumentacja sędziów oceny agenta mozaiki AI LLM
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
W tym artykule opisano szczegóły poszczególnych sędziów LLM wbudowanych w ocenę agenta mozaiki sztucznej inteligencji, w tym wymagane dane wejściowe i metryki danych wyjściowych. Obejmuje również dane wyjściowe generowane przez sędziów niestandardowych.
Aby zapoznać się z wprowadzeniem do sędziów LLM, zobacz Jak jakość, koszt i opóźnienie są oceniane przez ocenę agenta.
Notatka
W przypadku rozmów wieloturnowych sędziowie LLM oceniają tylko ostatni wpis w rozmowie.
Na poniższej table wymieniono wbudowanych sędziów:
Nazwisko sędziego | Krok | Aspekt jakości oceniany przez sędziego |
---|---|---|
relevance_to_query |
Odpowiedź | Czy odpowiedź odpowiada (czy jest istotna dla) żądania użytkownika? |
groundedness |
Odpowiedź | Czy wygenerowana odpowiedź jest uziemiona w pobranym kontekście (nie halucynacja)? |
safety |
Odpowiedź | Czy w odpowiedzi występuje szkodliwa lub toksyczna treść? |
correctness |
Odpowiedź | Czy wygenerowana odpowiedź jest dokładna (w porównaniu z rzeczywistym stanem)? |
guideline_adherence |
Odpowiedź | Czy wygenerowana odpowiedź jest zgodna z podanymi wytycznymi? |
chunk_relevance |
Pobieranie | Czy retriever znalazł fragmenty, które są przydatne (istotne) w odpowiedzi na żądanie użytkownika? |
document_recall |
Pobieranie | Ile znanych istotnych dokumentów znalazło program retriever? |
context_sufficiency |
Pobieranie | Czy program retriever znalazł dokumenty z wystarczającą ilością informacji, aby wygenerować oczekiwaną odpowiedź? |
Sędziowie odpowiedzi
Metryki jakości odpowiedzi oceniają, jak dobrze aplikacja odpowiada na żądanie użytkownika. Te metryki oceniają czynniki, takie jak dokładność odpowiedzi w porównaniu z prawdą naziemną, czy odpowiedź jest dobrze uziemiona, biorąc pod uwagę pobrany kontekst (lub jeśli LLM jest halucynacja) i czy odpowiedź jest bezpieczna i wolna od toksycznego języka.
Ogólnie rzecz biorąc, czy LLM dał dokładną odpowiedź?
Sędzia correctness
LLM daje binarną ocenę i pisemne uzasadnienie, czy wygenerowana odpowiedź agenta jest rzeczywiście dokładna i semantycznie podobna do dostarczonej odpowiedzi w prawdzie.
Dane wejściowe wymagane dla correctness
Wymagana jest podstawa prawdy expected_response
.
Ocena wejściowa set musi mieć następujące columns:
request
expected_response
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać response
wartość lub trace
.
Ważne
Podstawa prawdy expected_response
powinna zawierać tylko minimalną liczbę set faktów wymaganych do poprawnej odpowiedzi. Jeśli skopiujesz odpowiedź z innego źródła, zmodyfikuj odpowiedź, aby remove dowolny tekst, który nie jest wymagany, aby odpowiedź była uważana za poprawną.
Uwzględnienie tylko wymaganych informacji i pozostawienie informacji, które nie są ściśle wymagane w odpowiedzi, umożliwia ocenę agenta w celu zapewnienia bardziej niezawodnego sygnału jakości danych wyjściowych.
Dane wyjściowe dla correctness
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/correctness/rating |
string |
Usługa yes lub no .
yes wskazuje, że wygenerowana odpowiedź jest bardzo dokładna i semantycznie podobna do podstawowej prawdy. Drobne pominięcia lub niedokładności, które nadal uchwycą intencję podstawowej prawdy, są dopuszczalne.
no wskazuje, że odpowiedź nie spełnia kryteriów. |
response/llm_judged/correctness/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/correctness/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej oceny set:
Nazwa metryki | Type | Opis |
---|---|---|
response/llm_judged/correctness/rating/percentage |
float, [0, 1] |
We wszystkich pytaniach wartość procentowa where poprawności jest oceniana jako yes . |
Czy odpowiedź dotyczy żądania?
Sędzia relevance_to_query
LLM określa, czy odpowiedź jest odpowiednia dla żądania wejściowego.
Dane wejściowe wymagane dla relevance_to_query
Prawda naziemna nie jest wymagana.
Ocena wejściowa set musi mieć następujące column:
request
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać response
wartość lub trace
.
Dane wyjściowe dla relevance_to_query
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/relevance_to_query/rating |
string |
yes jeśli odpowiedź jest oceniana jako odpowiednia dla żądania, no w przeciwnym razie. |
response/llm_judged/relevance_to_query/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/relevance_to_query/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej oceny set.
Nazwa metryki | Type | Opis |
---|---|---|
response/llm_judged/relevance_to_query/rating/percentage |
float, [0, 1] |
We wszystkich pytaniach procent whererelevance_to_query/rating jest oceniany jako yes . |
Czy odpowiedź jest halucynacją, czy jest uziemiona w pobranym kontekście?
Sędzia groundedness
LLM zwraca ocenę binarną i pisemne uzasadnienie, czy wygenerowana odpowiedź jest faktycznie zgodna z pobranym kontekstem.
Dane wejściowe wymagane dla groundedness
Prawda naziemna nie jest wymagana.
Ocena danych wejściowych set musi mieć następujące column:
request
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać trace
wartość lub obie wartości response
i retrieved_context[].content
.
Dane wyjściowe dla groundedness
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/groundedness/rating |
string |
yes jeśli pobrany kontekst obsługuje wszystkie lub prawie wszystkie wygenerowane odpowiedzi, no w przeciwnym razie. |
response/llm_judged/groundedness/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/groundedness/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej oceny set:
Nazwa metryki | Type | Opis |
---|---|---|
response/llm_judged/groundedness/rating/percentage |
float, [0, 1] |
W odniesieniu do wszystkich pytań, jaki procent wheregroundedness/rating oceniany jest jako yes ? |
Czy wygenerowana odpowiedź jest zgodna z podanymi wytycznymi?
Sędzia guideline_adherence
LLM zwraca ocenę binarną i pisemne uzasadnienie, czy wygenerowana odpowiedź jest zgodna z guidelines
.
Dane wejściowe wymagane dla guideline_adherence
Prawda naziemna nie jest wymagana.
Ocena danych wejściowych set musi mieć następujące columns:
request
guidelines
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać trace
wartość lub response
. Niektóre wytyczne mogą być stosowane globalnie do całej oceny set. Zamiast kopiować te wytyczne dla każdej oceny, można określić global_guidelines
w konfiguracji ewaluatora w następujący sposób:
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",
],
}
}
)
Dane wyjściowe dla guideline_adherence
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/guideline_adherence/rating |
string |
yes , jeśli odpowiedź jest zgodna ze wszystkimi wytycznymi, no inaczej. |
response/llm_judged/guideline_adherence/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/guideline_adherence/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
response/llm_judged/global_guideline_adherence/rating |
string |
yes , jeśli odpowiedź jest zgodna ze wszystkimi globalnymi wytycznymi, no w przeciwnym razie. |
response/llm_judged/global_guideline_adherence/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/global_guideline_adherence/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej oceny set:
| Nazwa metryki | Typ | Opis | |——|——|——| | response/llm_judged/guideline_adherence/rating/percentage
| float, [0, 1]
| We wszystkich pytaniach, jaki procent whereguideline_adherence/rating
jest oceniany jako yes
?
|
response/llm_judged/global_guideline_adherence/rating/percentage
|
float, [0, 1]
| We wszystkich pytaniach, jaki procent whereglobal_guideline_adherence/rating
oceniany jest jako yes
.
Czy w odpowiedzi agenta istnieje szkodliwa zawartość?
Sędzia safety
LLM zwraca ocenę binarną i pisemne uzasadnienie, czy wygenerowana odpowiedź ma szkodliwą lub toksyczną zawartość.
Dane wejściowe wymagane dla safety
Prawda naziemna nie jest wymagana.
Ocena danych wejściowych set powinna mieć następujące column:
request
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać response
wartość lub trace
.
Dane wyjściowe dla safety
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/safety/rating |
string |
yes jeśli odpowiedź nie ma szkodliwej lub toksycznej zawartości, no w przeciwnym razie. |
response/llm_judged/safety/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/safety/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej oceny set:
Nazwa metryki | Type | Opis |
---|---|---|
response/llm_judged/safety/rating/average |
float, [0, 1] |
Procent wszystkich pytań, które zostały ocenione jako yes . |
Sędziowie pobierania
Pobieranie metryk jakości ocenia wydajność elementu retriever w znajdowaniu dokumentów, które są istotne dla żądania wejściowego. Te metryki oceniają czynniki, takie jak: Czy retriever znalazł odpowiednie fragmenty? Ile znanych istotnych dokumentów znalazło? Czy dokumenty okazały się wystarczające, aby wygenerować oczekiwaną odpowiedź?
Czy program retriever znalazł odpowiednie fragmenty?
Sędzia chunk-relevance-precision
LLM określa, czy fragmenty zwracane przez moduł pobierania są istotne dla żądania wejściowego. Precyzja jest obliczana jako liczba istotnych fragmentów zwracanych przez łączną liczbę zwracanych fragmentów. Jeśli na przykład moduł pobierania zwraca cztery fragmenty, a sędzia LLM ustali, że trzy z czterech zwróconych dokumentów są istotne dla żądania, llm_judged/chunk_relevance/precision
wartość wynosi 0,75.
Dane wejściowe wymagane dla llm_judged/chunk_relevance
Prawda naziemna nie jest wymagana.
Ocena danych wejściowych set musi mieć następujące column:
request
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać retrieved_context[].content
wartość lub trace
.
Dane wyjściowe dla llm_judged/chunk_relevance
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
retrieval/llm_judged/chunk_relevance/ratings |
array[string] |
Dla każdego fragmentu lub yes , wskazując, no czy pobrany fragment jest odpowiedni dla żądania wejściowego. |
retrieval/llm_judged/chunk_relevance/rationales |
array[string] |
Dla każdego fragmentu rozumowanie LLM dla odpowiedniej oceny. |
retrieval/llm_judged/chunk_relevance/error_messages |
array[string] |
W przypadku każdego fragmentu, jeśli wystąpił błąd podczas obliczania oceny, szczegółowe informacje o błędzie znajdują się tutaj, a inne dane wyjściowe values będą mieć wartość NULL. Jeśli nie wystąpi błąd, jest to wartość NULL. |
retrieval/llm_judged/chunk_relevance/precision |
float, [0, 1] |
Oblicza procent odpowiednich fragmentów we wszystkich pobranych fragmentach. |
Następująca metryka jest zgłaszana dla całej oceny set:
Nazwa metryki | Type | Opis |
---|---|---|
retrieval/llm_judged/chunk_relevance/precision/average |
float, [0, 1] |
Średnia wartość chunk_relevance/precision wszystkich pytań. |
Ile znanych istotnych dokumentów znalazło program retriever?
document_recall
jest obliczana jako liczba istotnych dokumentów zwracanych przez łączną liczbę odpowiednich dokumentów na podstawie podstaw prawdy. Załóżmy na przykład, że dwa dokumenty są istotne na podstawie podstaw prawdy. Jeśli element retriever zwraca jeden z tych dokumentów, document_recall
wynosi 0,5. Ta metryka nie ma wpływu na łączną liczbę zwracanych dokumentów.
Ta metryka jest deterministyczna i nie używa sędziego LLM.
Dane wejściowe wymagane dla document_recall
Wymagana jest prawda naziemna.
Ocena danych wejściowych set musi spełniać następujące column:
expected_retrieved_context[].doc_uri
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać retrieved_context[].doc_uri
wartość lub trace
.
Dane wyjściowe dla document_recall
Dla każdego pytania obliczana jest następująca metryka:
Pole danych | Type | Opis |
---|---|---|
retrieval/ground_truth/document_recall |
float, [0, 1] |
Procent prawdy doc_uris naziemnej obecnej we pobranych fragmentach. |
Następująca metryka jest obliczana dla całego procesu oceny set:
Nazwa metryki | Type | Opis |
---|---|---|
retrieval/ground_truth/document_recall/average |
float, [0, 1] |
Średnia wartość document_recall wszystkich pytań. |
Czy program pobierania znalazł dokumenty wystarczające do utworzenia oczekiwanej odpowiedzi?
Sędzia context_sufficiency
LLM określa, czy moduł pobierania pobrał dokumenty, które są wystarczające do wygenerowania oczekiwanej odpowiedzi.
Dane wejściowe wymagane dla context_sufficiency
Wymagana jest prawda naziemna expected_response
.
Ocena danych wejściowych set musi mieć następujące columns:
request
expected_response
Ponadto, jeśli nie używasz argumentu model
w wywołaniu metody mlflow.evaluate()
, musisz również podać retrieved_context[].content
wartość lub trace
.
Dane wyjściowe dla context_sufficiency
Dla każdego pytania są obliczane następujące metryki:
Pole danych | Type | Opis |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating |
string |
Usługa yes lub no .
yes wskazuje, że pobrany kontekst jest wystarczający do wygenerowania oczekiwanej odpowiedzi.
no wskazuje, że pobieranie musi zostać dostosowane do tego pytania, aby przywrócić brakujące informacje. Uzasadnienie danych wyjściowych powinno zawierać informacje, których brakuje. |
retrieval/llm_judged/context_sufficiency/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
retrieval/llm_judged/context_sufficiency/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej ewaluacji set.
Nazwa metryki | Type | Opis |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating/percentage |
float, [0, 1] |
Wartość procentowa where wystarczalność kontekstu jest oceniana jako yes . |
Niestandardowe metryki sędziego
Możesz utworzyć niestandardowy sędzia do przeprowadzania ocen specyficznych dla twojego przypadku użycia. Aby uzyskać szczegółowe informacje, zobacz Tworzenie niestandardowych sędziów LLM.
Dane wyjściowe generowane przez sędziego niestandardowego zależą od jego assessment_type
, ANSWER
lub RETRIEVAL
.
Niestandardowy sędzia LLM na potrzeby oceny ODPOWIEDZI
Niestandardowy sędzia LLM na potrzeby oceny ANSWER ocenia odpowiedź na każde pytanie.
Dane wyjściowe podane dla każdej oceny:
Pole danych | Type | Opis |
---|---|---|
response/llm_judged/{assessment_name}/rating |
string |
Usługa yes lub no . |
response/llm_judged/{assessment_name}/rationale |
string |
Pisemne rozumowanie LLM dla yes lub no . |
response/llm_judged/{assessment_name}/error_message |
string |
Jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj. Jeśli nie wystąpi błąd, jest to wartość NULL. |
Następująca metryka jest obliczana dla całej ewaluacji set:
Nazwa metryki | Type | Opis |
---|---|---|
response/llm_judged/{assessment_name}/rating/percentage |
float, [0, 1] |
We wszystkich pytaniach wartość procentowa where {assessment_name} jest oceniana jako yes . |
Niestandardowy sędzia LLM do oceny RETRIEVAL
Niestandardowy sędzia LLM dla oceny RETRIEVAL ocenia każdy pobrany fragment we wszystkich pytaniach.
Dane wyjściowe podane dla każdej oceny:
Pole danych | Type | Opis |
---|---|---|
retrieval/llm_judged/{assessment_name}/ratings |
array[string] |
Ocena niestandardowego sędziego dla każdego fragmentuyes lub no . |
retrieval/llm_judged/{assessment_name}/rationales |
array[string] |
Dla każdego fragmentu pisanie rozumowania llM dla yes lub no . |
retrieval/llm_judged/{assessment_name}/error_messages |
array[string] |
W przypadku każdego fragmentu, jeśli wystąpił błąd podczas przetwarzania tej metryki, szczegółowe informacje o błędzie znajdują się tutaj, a inne values mają wartość NULL. Jeśli nie wystąpi błąd, jest to wartość NULL. |
retrieval/llm_judged/{assessment_name}/precision |
float, [0, 1] |
Procent wszystkich pobranych fragmentów, które ocenia sędzia niestandardowy jako yes . |
Metryki zgłoszone dla całej ewaluacji set:
Nazwa metryki | Type | Opis |
---|---|---|
retrieval/llm_judged/{assessment_name}/precision/average |
float, [0, 1] |
Średnia wartość {assessment_name}_precision wszystkich pytań. |