Strumenti di valutazione RAG: come valutare le applicazioni di generazione aumentata dal recupero
RAG)), o Retrieval Augmented Generation, è un importante framework di IA nell'era dei large language models (LLM))) come ChatGPT. Potenzia le capacità di questi modelli integrando conoscenze esterne, garantendo risposte più accurate e aggiornate. Un sistema RAG standard include un LLM, un database vettoriale come Milvus e alcuni prompt come codice, tutti elementi che possono essere valutati utilizzando un framework completo di valutazione rag.
Man mano che sempre più sviluppatori e aziende adottano RAG per creare applicazioni GenAI, valutarne l'efficacia diventa sempre più importante. In un post precedente, abbiamo valutato le prestazioni di due diversi sistemi RAG costruiti con OpenAI Assistants e il database vettoriale Milvus, facendo luce sulla valutazione dei sistemi RAG. Questo post approfondirà l'argomento e discuterà le metodologie utilizzate per valutare le applicazioni RAG. Introdurremo anche alcuni potenti strumenti di valutazione e metteremo in evidenza metriche standard.
Valutare le applicazioni RAG significa più che confrontare semplicemente alcuni esempi. La chiave sta nell'utilizzare metriche convincenti, quantitative e riproducibili per valutare queste applicazioni. In questo percorso, introdurremo tre categorie di metriche:
Metriche basate sulla verità di riferimento
Metriche senza la verità di riferimento
Metriche basate sulle risposte degli LLM
La verità di riferimento si riferisce a risposte ben consolidate o a porzioni di documenti di conoscenza in un dataset corrispondenti alle query degli utenti. Quando la verità di riferimento è costituita dalle risposte, possiamo confrontare direttamente la verità di riferimento con le risposte RAG, facilitando una misurazione end-to-end utilizzando metriche come la somiglianza semantica della risposta e la correttezza della risposta.
Di seguito è riportato un esempio di valutazione delle risposte in base alla loro correttezza.
Verità di riferimento: Einstein nacque nel 1879 in Germania.
Alta correttezza della risposta: Nel 1879, in Germania, nacque Einstein.
Bassa correttezza della risposta: In Spagna, Einstein nacque nel 1879.
Quando la verità di riferimento è costituita da porzioni del documento di conoscenza, possiamo valutare la correlazione tra le porzioni del documento e i contesti recuperati utilizzando metriche tradizionali come Exact Match (EM), Rouge-L e F1. In sostanza, stiamo valutando l'efficacia del recupero delle applicazioni RAG.
Abbiamo ora stabilito l'importanza di utilizzare dataset con la verità di riferimento per valutare le applicazioni RAG. Tuttavia, cosa succede se vuoi valutare un'applicazione RAG utilizzando i tuoi dataset privati senza una verità di riferimento annotata? Come generi la verità di riferimento necessaria per i tuoi dataset?
Il metodo più semplice è chiedere a un LLM come ChatGPT di generare domande e risposte di esempio basate sul tuo dataset proprietario. Strumenti come Ragas e LlamaIndex forniscono anche metodi per generare dati di test adattati ai tuoi documenti di conoscenza.
_Le domande e risposte di esempio generate dallo strumento di valutazione Ragas (fonte: https://docs.ragas.io/en/latest/concepts/testset_generation.html)
Questi dataset di test generati, composti da domande, contesto e risposte corrispondenti, facilitano una valutazione quantitativa senza dipendere da dataset di riferimento esterni non correlati. Questo approccio consente agli utenti di valutare i sistemi RAG utilizzando i propri dati unici, garantendo un processo di valutazione più personalizzato e significativo.
Metriche senza la verità di riferimento
Possiamo comunque valutare le applicazioni RAG senza una verità di riferimento per ogni query. TruLens-Eval, uno strumento di valutazione open-source, introduce il concetto innovativo di RAG Triad, che si concentra sulla valutazione della rilevanza degli elementi nelle triplette query, contesto e risposta. Le tre metriche corrispondenti sono:
Rilevanza del contesto: Misura quanto bene il contesto recuperato supporta la query.
Fondatezza: Valuta in che misura la risposta dell'LLM è allineata con il contesto recuperato.
Rilevanza della risposta: Misura la rilevanza della risposta finale rispetto alla query.
Di seguito è riportato un esempio di valutazione delle risposte in base alla loro rilevanza rispetto alla domanda.
Domanda: Dove si trova la Francia e qual è la sua capitale?
Risposta a bassa rilevanza: La Francia si trova nell'Europa occidentale.
Risposta ad alta rilevanza: La Francia si trova nell'Europa occidentale e Parigi è la sua capitale.
Triade RAG, fonte: https://www.trulens.org/getting_started/core_concepts/rag_triad/
Inoltre, queste metriche della triade possono essere ulteriormente suddivise, migliorando la granularità della valutazione. Ad esempio, Ragas (un framework open-source dedicato alla valutazione delle prestazioni dei sistemi RAG) ha suddiviso la rilevanza del contesto in tre metriche ulteriormente dettagliate: precisione del contesto, rilevanza del contesto e richiamo del contesto.
Questa categoria di metriche valuta le risposte degli LLM, considerando fattori come cordialità, dannosità e concisione. Ad esempio, propone metriche come concisione, rilevanza, correttezza, coerenza, dannosità, malevolenza, utilità, controversia, misoginia, criminalità e insensibilità.
Di seguito è riportato un esempio di valutazione delle risposte in base alla loro concisione.
Domanda: Quanto fa 2+2?
Risposta a bassa concisione: Quanto fa 2+2? È una domanda elementare. La risposta che cerchi è che due più due fa quattro.
Risposta ad alta concisione: 4
Utilizzo degli LLM per assegnare punteggi alle metriche
La maggior parte delle metriche menzionate in precedenza richiede l'inserimento di testo per ottenere un punteggio, il che richiede lavoro. La buona notizia è che questo processo diventa più gestibile con l'avvento di LLM come GPT-4, dove tutto ciò che devi fare è progettare un prompt adatto.
Il paper "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" propone un design del prompt per GPT-4 per giudicare la qualità della risposta di un assistente AI a una domanda dell'utente. Di seguito è riportato un rapido esempio:
[System]
Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. After providing your explanation, please rate the response on a scale of 1 to 10 by strictly following this format: "[[rating]]", for example: "Rating: [[5]]".
[Question]
{question}
[The Start of Assistant's Answer]
{answer}
[The End of Assistant's Answer]
Questo prompt chiede a GPT-4 di valutare la qualità della risposta e di assegnarle un punteggio su una scala da 1 a 10.
È importante notare che GPT-4, come qualsiasi giudice, non è infallibile e potrebbe avere bias e potenziali errori. Quindi, il design del prompt è cruciale. Potrebbero essere necessarie tecniche avanzate di prompt engineering come multi-shot o Chain-of-Thought (CoT). Fortunatamente, non dobbiamo preoccuparci di questo problema perché molti strumenti di valutazione per applicazioni RAG hanno già integrato prompt ben progettati.
Ora che abbiamo trattato la valutazione di un'applicazione RAG, esploriamo alcuni strumenti per valutare le applicazioni RAG, offrendo approfondimenti su come funzionano e su quale caso d'uso si adatta meglio a questi strumenti.
Ragas: valutazione RAG semplificata
Ragas è uno strumento di valutazione open-source per valutare le applicazioni RAG. Con un'interfaccia semplice, Ragas semplifica il processo di valutazione. Creando un'istanza di dataset nel formato richiesto, gli utenti possono avviare rapidamente le valutazioni e ottenere metriche come 'ragas_score,' 'context_precision,' 'faithfulness,' e 'answer_relevancy.'
from ragas import evaluate
from datasets import Dataset
# prepara il tuo dataset huggingface nel formato
# Dataset({
# features: ['question', 'contexts', 'answer', 'ground_truths'],
# num_rows: 25
# })
dataset: Dataset
results = evaluate(dataset)
# {'ragas_score': 0.860, 'context_precision': 0.817,
# 'faithfulness': 0.892, 'answer_relevancy': 0.874}
Ragas supporta una varietà di metriche e non impone requisiti specifici di framework, offrendo flessibilità nella valutazione di diverse applicazioni RAG. Ragas consente il monitoraggio in tempo reale delle valutazioni tramite LangSmith, offrendo approfondimenti sulle ragioni di ciascuna valutazione e sul consumo della chiave API.
Comprendere i sistemi RAG
I sistemi Retrieval Augmented Generation (RAG) sono un tipo di tecnologia di intelligenza artificiale (AI) che combina i punti di forza dei large language models (LLM) con il recupero di conoscenza esterna. I sistemi RAG sono costituiti da tre componenti principali: Index, Retrieve e Generate. Il componente Index crea un database di conoscenze che può essere cercato e recuperato. Il componente Retrieve recupera informazioni pertinenti dal database indicizzato. Il componente Generate crea nuovo testo in base alle informazioni recuperate.
I sistemi RAG sono comunemente utilizzati per chatbot e sistemi di domanda-risposta. Forniscono un approccio robusto e dinamico alle conversazioni AI e all’elaborazione delle informazioni. Sfruttando la conoscenza esterna, i sistemi RAG consentono risposte più accurate, contestuali, pertinenti e aggiornate. Questo li rende preziosi in vari ambiti, inclusi il servizio clienti e i chatbot di conoscenza interna, dove informazioni precise e tempestive sono fondamentali.
Metriche di valutazione per RAG
Valutare le prestazioni dei sistemi RAG è fondamentale per la loro affidabilità e performance. Esistono diverse metriche di valutazione per i sistemi RAG, tra cui:
Pertinenza del contesto: Misura la pertinenza del contesto recuperato rispetto alla query dell’utente.
Richiamo del contesto: Misura la proporzione di contesto pertinente recuperata dal sistema.
Fedeltà: Misura l’accuratezza del testo generato in base al contesto recuperato.
Pertinenza della risposta: Valuta la pertinenza del testo generato rispetto alla query dell’utente.
Correttezza della risposta: Valuta l’accuratezza del testo generato.
Queste metriche forniscono un framework completo per valutare le prestazioni dei sistemi RAG. Analizzando questi aspetti, gli sviluppatori possono identificare aree di miglioramento e garantire che il sistema fornisca risposte di alta qualità, pertinenti e accurate.
LlamaIndex: costruire e valutare con facilità
LlamaIndex è un solido framework AI per creare applicazioni RAG, incluso uno strumento di valutazione RAG. È pratico per valutare applicazioni costruite all’interno del suo framework.
from llama_index.evaluation import BatchEvalRunner
from llama_index.evaluation import (
FaithfulnessEvaluator,
RelevancyEvaluator,
)
service_context_gpt4 = ...
vector_index = ...
question_list = ...
faithfulness_gpt4 = FaithfulnessEvaluator(service_context=service_context_gpt4)
relevancy_gpt4 = RelevancyEvaluator(service_context=service_context_gpt4)
runner = BatchEvalRunner(
{"faithfulness": faithfulness_gpt4, "relevancy": relevancy_gpt4},
workers=8,
)
eval_results = runner.evaluate_queries(
vector_index.as_query_engine(), queries=question_list
)
TruLens-Eval: valutazione integrata per framework diversi
TruLens Eval fornisce un modo semplice per valutare applicazioni RAG costruite con LangChain e LlamaIndex. Il seguente frammento di codice mostra come impostare la valutazione per un’applicazione RAG basata su LangChain.
from trulens_eval import TruChain, Feedback, Tru,Select
from trulens_eval.feedback import Groundedness
from trulens_eval.feedback.provider import OpenAI
import numpy as np
tru = Tru()
rag_chain = ...
# Inizializza la classe provider
openai = OpenAI()
grounded = Groundedness(groundedness_provider=OpenAI())
# Define a groundedness feedback function
f_groundedness = (
Feedback(grounded.groundedness_measure_with_cot_reasons)
.on(Select.RecordCalls.first.invoke.rets.context)
.on_output()
.aggregate(grounded.grounded_statements_aggregator)
)
# Question/answer relevance between overall question and answer.
f_qa_relevance = Feedback(openai.relevance).on_input_output()
tru_recorder = TruChain(rag_chain,
app_id='Chain1_ChatApplication',
feedbacks=[f_qa_relevance, f_groundedness])
tru.run_dashboard()
Trulens-Eval può valutare app RAG costruite con altri framework, ma implementarlo nel codice può essere complesso. Consulta la documentazione ufficiale per maggiori dettagli.
Inoltre, Trulens-Eval offre anche un monitoraggio visivo nel browser per analizzare le ragioni della valutazione e osservare l’utilizzo delle chiavi API.
Phoenix: valutare gli LLM con flessibilità
Phoenix fornisce un set completo di metriche per valutare gli LLM, inclusa la qualità degli embedding generati e delle risposte dell’LLM. Può anche valutare applicazioni RAG, ma include meno metriche rispetto agli altri strumenti di valutazione menzionati. Il seguente frammento di codice mostra come usare Phoenix per valutare un’applicazione RAG costruita con LlamaIndex.
import phoenix as px
from llama_index import set_global_handler
from phoenix.experimental.evals import llm_classify, OpenAIModel, RAG_RELEVANCY_PROMPT_TEMPLATE, \
RAG_RELEVANCY_PROMPT_RAILS_MAP
from phoenix.session.evaluation import get_retrieved_documents
px.launch_app()
set_global_handler("arize_phoenix")
print("phoenix URL", px.active_session().url)
query_engine = ...
question_list = ...
for question in question_list:
response_vector = query_engine.query(question)
retrieved_documents = get_retrieved_documents(px.active_session())
retrieved_documents_relevance = llm_classify(
dataframe=retrieved_documents,
model=OpenAIModel(model_name="gpt-4-1106-preview"),
template=RAG_RELEVANCY_PROMPT_TEMPLATE,
rails=list(RAG_RELEVANCY_PROMPT_RAILS_MAP.values()),
provide_explanation=True,
)
Oltre agli strumenti sopra menzionati, anche altre piattaforme come DeepEval, LangSmith e OpenAI Evals offrono funzionalità per valutare applicazioni RAG. Le loro metodologie sono simili, ma la progettazione dei prompt e le specifiche di implementazione variano, quindi assicurati di scegliere lo strumento più adatto a te.
In conclusione, abbiamo esaminato alcune metodologie, metriche e strumenti di valutazione delle applicazioni RAG. In particolare, abbiamo esplorato tre categorie di metriche:
quelle basate su un ground truth,
quelle senza un ground truth,
e quelle basate sulle risposte dei large language model (LLM).
Le metriche con ground truth implicano il confronto delle risposte RAG con risposte consolidate. Al contrario, le metriche senza ground truth, come la RAG Triad, si concentrano sulla valutazione della rilevanza tra query, contesto e risposte. Le metriche basate sulle risposte degli LLM considerano cordialità, nocività e concisione.
Abbiamo anche esplorato l’uso degli LLM per assegnare punteggi alle metriche tramite prompt ben progettati e introdotto un insieme di strumenti di valutazione RAG, tra cui Ragas, LlamaIndex, TruLens-Eval e Phoenix, per aiutare in questo compito.
Nel mondo dell’AI in rapida evoluzione, valutare e migliorare regolarmente le applicazioni RAG è fondamentale per la loro affidabilità. Utilizzando le metodologie, le metriche e gli strumenti discussi qui, sviluppatori e aziende possono prendere decisioni informate sulle prestazioni e sulle capacità dei loro sistemi RAG, favorendo il progresso delle applicazioni AI.
Creazione di un dataset Gold Standard
Creare un dataset gold standard è un passaggio fondamentale nella valutazione dei sistemi RAG. Un dataset gold standard è un insieme di esempi utilizzati come riferimento per valutare le prestazioni del sistema. Il dataset dovrebbe includere un insieme di domande, risposte e contesti pertinenti al dominio del sistema RAG.
Per creare un dataset gold standard, puoi seguire questi passaggi:
Identificare un insieme di domande e risposte pertinenti per il dominio del sistema RAG.
Creare un insieme di contesti pertinenti alle domande e alle risposte.
Far annotare i contesti e le risposte da valutatori umani per creare un dataset di verità di riferimento.
Usare il dataset di verità di riferimento per valutare le prestazioni del sistema RAG.
Questo processo garantisce che la valutazione si basi su dati accurati e pertinenti, fornendo un benchmark affidabile per valutare le prestazioni del sistema.
Migliori pratiche per la valutazione RAG
Valutare i sistemi RAG richiede un’attenta considerazione di diversi fattori. Ecco alcune migliori pratiche per la valutazione RAG:
Usare un dataset gold standard per valutare le prestazioni del sistema RAG.
Usare una combinazione di metriche di valutazione per ottenere una comprensione completa delle prestazioni del sistema.
Considerare i compromessi tra diverse metriche di valutazione e scegliere quelle più adatte al tuo caso d’uso.
Rivedere e perfezionare regolarmente le metriche di valutazione per garantire che rimangano pertinenti ed efficaci.
Usare strumenti di valutazione automatizzati per semplificare il processo di valutazione e ridurre il carico sui valutatori umani.
Seguendo queste migliori pratiche, puoi garantire una valutazione approfondita ed efficace del tuo sistema RAG, portando a un miglioramento continuo e a prestazioni ottimali.
Conclusione
I sistemi RAG sono una tecnologia potente per creare chatbot e sistemi di risposta alle domande. Valutare le prestazioni dei sistemi RAG è fondamentale per la loro affidabilità e le loro prestazioni. Comprendendo i sistemi RAG, utilizzando metriche di valutazione, creando un dataset gold standard e seguendo le migliori pratiche per la valutazione RAG, puoi garantire che il tuo sistema RAG funzioni in modo ottimale e fornisca risposte accurate e pertinenti agli utenti.
Nel mondo dell’IA in rapida evoluzione, valutare e migliorare regolarmente le applicazioni RAG è fondamentale per la loro affidabilità. Utilizzando le metodologie, le metriche e gli strumenti discussi qui, sviluppatori e aziende possono prendere decisioni informate sulle prestazioni e sulle capacità dei loro sistemi RAG, favorendo il progresso delle applicazioni di IA.
Continua a leggere

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.

VidTok: Rethinking Video Processing with Compact Tokenization
VidTok tokenizes videos to reduce redundancy while preserving spatial and temporal details for efficient processing.



