Creazione end-to-end di un sistema RAG di domande e risposte
Chain RetrievalQA, prompt personalizzati, attribuzione delle fonti, valutazione del RAG con RAGAS
Creazione end-to-end di un sistema RAG di domande e risposte è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è RAG?
Retrieval-Augmented Generation ancora un LLM ai propri dati. Al momento della query, recupera i chunk pertinenti da un vector store e li inserisce nel prompt, così il modello risponde basandosi sui fatti invece di tirare a indovinare.
Il flusso RAG
Ogni query RAG segue quattro passaggi: (1) creare l'embedding della domanda, (2) recuperare chunk simili, (3) inserirli nel prompt come contesto, (4) l'LLM genera una risposta basata su quel contesto.
Trasformare un vector store in un retriever
Converta il vector store in un retriever con as_retriever. Il dict search_kwargs controlla il recupero; l'impostazione più importante è k, il numero di chunk da recuperare per ogni domanda.
retriever = db.as_retriever(
search_kwargs={"k": 4}
)Regolare search_kwargs
search_kwargs può anche impostare una soglia di punteggio o le opzioni MMR. Inizi con k=4; lo aumenti se alle risposte manca contesto, oppure lo riduca per diminuire il costo dei token e il rumore.
retriever = db.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": 6, "score_threshold": 0.5}
)RetrievalQA Chain
La chain RetrievalQA collega recupero e generazione. La costruisca con from_chain_type, passando il suo llm e il suo retriever. Con una sola chiamata può ora rispondere alle domande usando i suoi documenti.
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=retriever
)chain_type: come viene combinato il contesto
chain_type controlla il modo in cui i chunk recuperati entrano nel prompt. "stuff" (impostazione predefinita) inserisce tutti i chunk in un unico prompt: è semplice e ideale quando rientrano nella finestra di contesto. Altri tipi, come "map_reduce", gestiscono molti chunk di grandi dimensioni.
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever
)Porre una domanda
Esegua la chain con invoke, passando la domanda nella chiave query. La chain recupera i contenuti, costruisce il prompt e restituisce la risposta basata sulle fonti.
response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])Restituire i documenti di origine
Imposti return_source_documents=True per ottenere i chunk usati per la risposta. In questo modo può aggiungere citazioni e consentire agli utenti di verificare l'origine di ogni fatto, un aspetto fondamentale per la fiducia.
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
print(d.metadata)Perché valutare RAG?
RAG può fallire in due modi: il recupero restituisce i chunk sbagliati oppure la generazione produce allucinazioni nonostante la qualità dei chunk. Servono metriche per capire quale parte correggere. Valutare le risposte a colpo d'occhio non è scalabile.
Metriche RAGAS
RAGAS è una libreria che valuta la qualità di RAG. Le metriche principali sono: faithfulness (la risposta è supportata dal contesto), answer_relevancy (la risposta affronta la domanda) e context_precision (i chunk recuperati sono pertinenti).
pip install ragas
from ragas.metrics import faithfulness, answer_relevancy, context_precisionEseguire una valutazione
Crei un dataset di domande, risposte generate, contesti recuperati e risposte di riferimento, quindi chiami evaluate. I punteggi indicano se deve migliorare la suddivisione in chunk, il valore k del recupero o il prompt.
from ragas import evaluate
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)Verifica rapida
Verifichi la sua conoscenza di RAG.
Riepilogo: RAG dall'inizio alla fine
Ha creato una pipeline RAG completa: db.as_retriever con search_kwargs, una chain RetrievalQA.from_chain_type basata sul suo llm e sul retriever e return_source_documents=True per le citazioni. Ha inoltre imparato a misurare la qualità con metriche RAGAS come faithfulness e precisione del contesto.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 53
- Lezioni
- 225
Domande Frequenti
La lezione «Creazione end-to-end di un sistema RAG di domande e risposte» è gratuita?
Sì — il testo completo di «Creazione end-to-end di un sistema RAG di domande e risposte» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Creazione end-to-end di un sistema RAG di domande e risposte»?
Chain RetrievalQA, prompt personalizzati, attribuzione delle fonti, valutazione del RAG con RAGAS Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Creazione end-to-end di un sistema RAG di domande e risposte»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Architettura di LangChain e LCEL
- Caricamento, suddivisione ed embedding dei documenti
- Vector store: Chroma e FAISS
- Creazione end-to-end di un sistema RAG di domande e risposte