Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
System generowania rozszerzonego pobierania (RAG) próbuje wygenerować najbardziej odpowiednią odpowiedź spójną z dokumentami uziemienia w odpowiedzi na zapytanie użytkownika. Na wysokim poziomie zapytanie użytkownika wyzwala pobieranie wyszukiwania w korpusie dokumentów uziemienia w celu zapewnienia kontekstu uziemienia modelu sztucznej inteligencji w celu wygenerowania odpowiedzi. Ważne jest, aby ocenić:
- Znaczenie wyników pobierania do zapytania użytkownika: użyj opcji Pobieranie dokumentu , jeśli masz etykiety dla istotności dokumentu specyficznego dla zapytania lub ocenianie istotności zapytania (qrels) w celu uzyskania bardziej dokładnych pomiarów. Użyj opcji Pobieranie , jeśli masz tylko pobrany kontekst, ale nie masz takich etykiet i masz wyższą tolerancję dla mniej szczegółowej miary.
- Spójność wygenerowanej odpowiedzi w odniesieniu do dokumentów uziemienia: użyj groundedness , jeśli chcesz potencjalnie dostosować definicję uziemioności w naszym monicie sędziego LLM typu open source, Groundedness Pro , jeśli potrzebujesz prostej definicji.
- Znaczenie ostatecznej odpowiedzi na zapytanie: Istotność , jeśli nie masz podstawowej prawdy, i Kompletność odpowiedzi , jeśli masz podstawy prawdy i nie chcesz, aby odpowiedź na krytyczne informacje nie została pominięta.
Dobrym sposobem myślenia o uziemieniu i kompletności odpowiedzi jest: uziemienie polega na precyzji aspektu odpowiedzi, który nie powinien zawierać zawartości poza kontekstem uziemienia, podczas gdy kompletność odpowiedzi dotyczy aspektu przypomnienia odpowiedzi, że nie powinna przegapić informacji krytycznych w porównaniu z oczekiwaną odpowiedzią (prawda naziemna).
Konfiguracja modelu dla ewaluatorów wspomaganych przez sztuczną inteligencję
Aby uzyskać informacje w poniższych fragmentach kodu, ewaluatory jakości wspomagane przez sztuczną inteligencję (z wyjątkiem Groundedness Pro) używają konfiguracji modelu dla sędziego LLM:
import os
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from dotenv import load_dotenv
load_dotenv()
model_config = AzureOpenAIModelConfiguration(
azure_endpoint=os.environ["AZURE_ENDPOINT"],
api_key=os.environ.get["AZURE_API_KEY"],
azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
api_version=os.environ.get("AZURE_API_VERSION"),
)
Wskazówka
Zalecamy użycie o3-mini
równowagi możliwości rozumowania i wydajności kosztów.
Odzyskiwanie
Jakość pobierania jest bardzo ważna, biorąc pod uwagę jego rolę nadrzędną w RAG: jeśli jakość pobierania jest niska, a odpowiedź wymaga wiedzy specyficznej dla korpusu, istnieje mniejsze prawdopodobieństwo, że model LLM daje satysfakcjonującą odpowiedź.
RetrievalEvaluator
mierzy tekstową jakość wyników pobierania za pomocą funkcji LLM bez wymagania podstawy prawdy (znanej również jako ocena istotności zapytania), która zapewnia wartość w porównaniu do DocumentRetrievalEvaluator
pomiaru ndcg
, xdcg
, fidelity
, i innych klasycznych metryk pobierania informacji, które wymagają podstawowej prawdy. Ta metryka koncentruje się na tym, jak istotne są fragmenty kontekstu (zakodowane jako ciąg), aby rozwiązać zapytanie i jak najbardziej odpowiednie fragmenty kontekstu są wyświetlane na początku listy.
Przykład pobierania
from azure.ai.evaluation import RetrievalEvaluator
retrieval = RetrievalEvaluator(model_config=model_config, threshold=3)
retrieval(
query="Where was Marie Curie born?",
context="Background: 1. Marie Curie was born in Warsaw. 2. Marie Curie was born on November 7, 1867. 3. Marie Curie is a French scientist. ",
)
Dane wyjściowe pobierania
Wynik liczbowy w skali likert (liczba całkowita od 1 do 5) i wyższy wynik jest lepszy. Biorąc pod uwagę próg liczbowy (ustawiono wartość domyślną), zwracamy również wartość "pass", jeśli wynik >= próg lub "niepowodzenie" w przeciwnym razie. Użycie pola przyczyny może pomóc zrozumieć, dlaczego wynik jest wysoki lub niski.
{
"retrieval": 5.0,
"gpt_retrieval": 5.0,
"retrieval_reason": "The context contains relevant information that directly answers the query about Marie Curie's birthplace, with the most pertinent information placed at the top. Therefore, it fits the criteria for a high relevance score.",
"retrieval_result": "pass",
"retrieval_threshold": 3
}
Pobieranie dokumentu
Jakość pobierania jest bardzo ważna, biorąc pod uwagę jego rolę nadrzędną w RAG: jeśli jakość pobierania jest niska, a odpowiedź wymaga wiedzy specyficznej dla korpusu, istnieje mniejsze prawdopodobieństwo, że model LLM daje satysfakcjonującą odpowiedź. Dlatego ważne jest, aby ocenić DocumentRetrievalEvaluator
jakość pobierania, ale także zoptymalizować parametry wyszukiwania rag.
- Program ewaluator pobierania dokumentów mierzy, jak dobrze rag pobiera odpowiednie dokumenty z magazynu dokumentów. Jako złożony ewaluator przydatny w scenariuszu RAG z prawdą naziemną oblicza listę przydatnych metryk jakości wyszukiwania na potrzeby debugowania potoków RAG:
Wskaźnik | Kategoria | Opis |
---|---|---|
Wierność | Wierność wyszukiwania | Jak dobrze pierwsze n pobranych fragmentów odzwierciedla zawartość dla danego zapytania; liczba dobrych dokumentów zwróconych z całkowitej liczby znanych dobrych dokumentów w zestawie danych |
NDCG | Wyszukaj NDCG | Jak dobre są rankingi do idealnej kolejności, w której wszystkie odpowiednie elementy znajdują się na początku listy. |
XDCG | Wyszukaj XDCG | Jak dobre wyniki znajdują się w dokumentach najwyższego poziomu niezależnie od oceniania innych dokumentów indeksu |
Maksymalna istotność N | Maksymalna istotność wyszukiwania | Maksymalna istotność w fragmentach top-k |
Otwory | Wyszukiwanie etykiet sanity | Liczba dokumentów z brakującymi ocenami istotności zapytania (Prawda podstawy) |
- Aby zoptymalizować rag w scenariuszu o nazwie "zamiatanie parametrów", możesz użyć tych metryk do skalibrowania parametrów wyszukiwania dla optymalnych wyników RAG. Po prostu wygeneruj różne wyniki pobierania dla różnych parametrów wyszukiwania, takich jak algorytmy wyszukiwania (wektor, semantyka), top_k i rozmiary fragmentów, które cię interesują podczas testowania. Następnie użyj polecenia
DocumentRetrievalEvaluator
, aby znaleźć parametry wyszukiwania, które dają najwyższą jakość pobierania.
Przykład pobierania dokumentu
from azure.ai.evaluation import DocumentRetrievalEvaluator
# these query_relevance_label are given by your human- or LLM-judges.
retrieval_ground_truth = [
{
"document_id": "1",
"query_relevance_label": 4
},
{
"document_id": "2",
"query_relevance_label": 2
},
{
"document_id": "3",
"query_relevance_label": 3
},
{
"document_id": "4",
"query_relevance_label": 1
},
{
"document_id": "5",
"query_relevance_label": 0
},
]
# the min and max of the label scores are inputs to document retrieval evaluator
ground_truth_label_min = 0
ground_truth_label_max = 4
# these relevance scores come from your search retrieval system
retrieved_documents = [
{
"document_id": "2",
"relevance_score": 45.1
},
{
"document_id": "6",
"relevance_score": 35.8
},
{
"document_id": "3",
"relevance_score": 29.2
},
{
"document_id": "5",
"relevance_score": 25.4
},
{
"document_id": "7",
"relevance_score": 18.8
},
]
document_retrieval_evaluator = DocumentRetrievalEvaluator(
ground_truth_label_min=ground_truth_label_min,
ground_truth_label_max=ground_truth_label_max,
ndcg_threshold = 0.5,
xdcg_threshold = 50.0,
fidelity_threshold = 0.5,
top1_relevance_threshold = 50.0,
top3_max_relevance_threshold = 50.0,
total_retrieved_documents_threshold = 50,
total_ground_truth_documents_threshold = 50
)
document_retrieval_evaluator(retrieval_ground_truth=retrieval_ground_truth, retrieved_documents=retrieved_documents)
Dane wyjściowe pobierania dokumentu
Wszystkie wyniki liczbowe mają high_is_better=True
z wyjątkiem wartości holes
i holes_ratio
mają high_is_better=False
wartość . Biorąc pod uwagę próg liczbowy (domyślnie 3), zwracamy również wartość "pass", jeśli wynik >= próg lub "niepowodzenie" w przeciwnym razie.
{
"ndcg@3": 0.6461858173,
"xdcg@3": 37.7551020408,
"fidelity": 0.0188438199,
"top1_relevance": 2,
"top3_max_relevance": 2,
"holes": 30,
"holes_ratio": 0.6000000000000001,
"holes_higher_is_better": False,
"holes_ratio_higher_is_better": False,
"total_retrieved_documents": 50,
"total_groundtruth_documents": 1565,
"ndcg@3_result": "pass",
"xdcg@3_result": "pass",
"fidelity_result": "fail",
"top1_relevance_result": "fail",
"top3_max_relevance_result": "fail",
# omitting more fields ...
}
Uziemienie
Ważne jest, aby ocenić, w jaki sposób uziemiona jest odpowiedź w odniesieniu do kontekstu, ponieważ modele sztucznej inteligencji mogą tworzyć szkielet zawartości lub generować nieistotne odpowiedzi.
GroundednessEvaluator
mierzy, jak dobrze wygenerowana odpowiedź jest zgodna z danym kontekstem (źródłem uziemienia) i nie tworzy zawartości poza nią. Ta metryka przechwytuje precyzyjny aspekt odpowiedzi wyrównany do źródła uziemienia. Niższy wynik oznacza, że odpowiedź nie ma znaczenia dla zapytania lub sfabrykowanej niedokładnej zawartości poza kontekstem. Ta metryka stanowi uzupełnienie ResponseCompletenessEvaluator
, które przechwytuje aspekt przypomnienia odpowiedzi wyrównywania z oczekiwaną odpowiedzią.
Przykład podstawy
from azure.ai.evaluation import GroundednessEvaluator
groundedness = GroundednessEvaluator(model_config=model_config, threshold=3)
groundedness(
query="Is Marie Curie is born in Paris?",
context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
response="No, Marie Curie is born in Warsaw."
)
Dane wyjściowe uziemienia
Wynik liczbowy w skali likert (liczba całkowita od 1 do 5) i wyższy wynik jest lepszy. Biorąc pod uwagę próg liczbowy (domyślnie 3), zwracamy również wartość "pass", jeśli wynik >= próg lub "niepowodzenie" w przeciwnym razie. Użycie pola przyczyny może pomóc zrozumieć, dlaczego wynik jest wysoki lub niski.
{
"groundedness": 5.0,
"gpt_groundedness": 5.0,
"groundedness_reason": "The RESPONSE accurately answers the QUERY by confirming that Marie Curie was born in Warsaw, which is supported by the CONTEXT. It does not include any irrelevant or incorrect information, making it a complete and relevant answer. Thus, it deserves a high score for groundedness.",
"groundedness_result": "pass",
"groundedness_threshold": 3
}
Groundedness Pro
Systemy sztucznej inteligencji mogą tworzyć zawartość lub generować nieistotne odpowiedzi poza danym kontekstem. Obsługiwane przez bezpieczeństwo zawartości sztucznej inteligencji platformy Azure wykrywa, GroundednessProEvaluator
czy wygenerowana odpowiedź tekstowa jest spójna, czy dokładna w odniesieniu do danego kontekstu w scenariuszu pobierania rozszerzonego generowania pytań i odpowiedzi. Sprawdza, czy odpowiedź jest ściśle zgodna z kontekstem, aby odpowiedzieć na zapytanie, unikać spekulacji lub tworzenia i zwraca etykietę binarną.
Przykład Groundedness Pro
import os
from azure.ai.evaluation import GroundednessProEvaluator
from dotenv import load_dotenv
load_dotenv()
## Using Azure AI Foundry Hub
azure_ai_project = {
"subscription_id": os.environ.get("AZURE_SUBSCRIPTION_ID"),
"resource_group_name": os.environ.get("AZURE_RESOURCE_GROUP"),
"project_name": os.environ.get("AZURE_PROJECT_NAME"),
}
## Using Azure AI Foundry Development Platform, example: AZURE_AI_PROJECT=https://your-account.services.ai.azure.com/api/projects/your-project
azure_ai_project = os.environ.get("AZURE_AI_PROJECT")
groundedness_pro = GroundednessProEvaluator(azure_ai_project=azure_ai_project),
groundedness_pro(
query="Is Marie Curie is born in Paris?",
context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
response="No, Marie Curie is born in Warsaw."
)
Dane wyjściowe Groundedness Pro
Pole etykiety zwraca wynik True
logiczny, jeśli cała zawartość w odpowiedzi jest całkowicie uziemiona w kontekście i False
w przeciwnym razie. Użyj pola przyczyny, aby dowiedzieć się więcej o wyroku za wynikiem.
{
"groundedness_pro_reason": "All Contents are grounded",
"groundedness_pro_label": True
}
Znaczenie
Ważne jest, aby ocenić ostateczną odpowiedź, ponieważ modele sztucznej inteligencji mogą generować nieistotne odpowiedzi w odniesieniu do zapytania użytkownika. Aby rozwiązać ten problem, możesz użyć RelevanceEvaluator
miar, w jaki sposób skutecznie odpowiedź odpowiada na zapytanie. Ocenia dokładność, kompletność i bezpośrednie znaczenie odpowiedzi na podstawie wyłącznie danego zapytania. Wyższe wyniki oznaczają lepsze znaczenie.
Przykład istotności
from azure.ai.evaluation import RelevanceEvaluator
relevance = RelevanceEvaluator(model_config=model_config, threshold=3)
relevance(
query="Is Marie Curie is born in Paris?",
response="No, Marie Curie is born in Warsaw."
)
Dane wyjściowe istotności
Wynik liczbowy w skali likert (liczba całkowita od 1 do 5) i wyższy wynik jest lepszy. Biorąc pod uwagę próg liczbowy (domyślnie 3), zwracamy również wartość "pass", jeśli wynik >= próg lub "niepowodzenie" w przeciwnym razie. Użycie pola przyczyny może pomóc zrozumieć, dlaczego wynik jest wysoki lub niski.
{
"relevance": 4.0,
"gpt_relevance": 4.0,
"relevance_reason": "The RESPONSE accurately answers the QUERY by stating that Marie Curie was born in Warsaw, which is correct and directly relevant to the question asked.",
"relevance_result": "pass",
"relevance_threshold": 3
}
Kompletność odpowiedzi
Systemy sztucznej inteligencji mogą tworzyć zawartość lub generować nieistotne odpowiedzi poza danym kontekstem. Biorąc pod uwagę odpowiedź na podstawowe informacje, ResponseCompletenessEvaluator
która przechwytuje aspekt przypomnienia odpowiedzi zgodnie z oczekiwaną odpowiedzią. Jest to uzupełnienie GroundednessEvaluator
, które przechwytuje precyzyjny aspekt odpowiedzi wyrównany do źródła uziemienia.
Przykład kompletności odpowiedzi
from azure.ai.evaluation import ResponseCompletenessEvaluator
response_completeness = ResponseCompletenessEvaluator(model_config=model_config, threshold=3)
response_completeness(
response="Based on the retrieved documents, the shareholder meeting discussed the operational efficiency of the company and financing options.",
ground_truth="The shareholder meeting discussed the compensation package of the company CEO."
)
Dane wyjściowe dotyczące kompletności odpowiedzi
Wynik liczbowy w skali likert (liczba całkowita od 1 do 5) i wyższy wynik jest lepszy. Biorąc pod uwagę próg liczbowy (domyślnie 3), zwracamy również wartość "pass", jeśli wynik >= próg lub "niepowodzenie" w przeciwnym razie. Użycie pola przyczyny może pomóc zrozumieć, dlaczego wynik jest wysoki lub niski.
{
"response_completeness": 1,
"response_completeness_result": "fail",
"response_completeness_threshold": 3,
"response_completeness_reason": "The response does not contain any relevant information from the ground truth, which specifically discusses the CEO's compensation package. Therefore, it is considered fully incomplete."
}